首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在dsquery命令认证中使用SecureString密码对象

在dsquery命令认证中使用SecureString密码对象
EN

Stack Overflow用户
提问于 2018-04-03 17:05:18
回答 1查看 399关注 0票数 0

我按照下面的指南创建了一个SecureString密码。现在,我需要使用dsquery选项-s (服务器)、-u (用户)和-p (密码)登录到外部域控制器。

代码语言:javascript
复制
dsquery group -name $group -s $rmSrv -u $user -p $pass  | dsget group -members -expand -c -s $rmSrv -u $user -p $pass  | dsget user -samid -c -s $rmSrv -u $user -p $pass > $filename

当我以明文输入密码时,我会得到身份验证。一旦使用了SecureString对象,我就无法进行身份验证。我试过几种选择,但没能让它运转起来。

你有主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 19:59:26

这样做的唯一方法是解密SecureString对象并将其作为字符串获取。

下面是一个示例函数:

代码语言:javascript
复制
function ConvertTo-String {
  param(
    [Security.SecureString] $secureString
  )
  try {
    $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)
    [Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)
  }
  finally {
    if ( $bstr -ne [IntPtr]::Zero ) {
      [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
    }
  }
}

警告:解密SecureString对象的绕过SecureString对象提供的保护。

如果坚持使用dsquery命令,这是唯一的选项,因为它在命令行上需要一个纯文本密码。这在本质上是不安全的。

相反,我建议使用Active Directory,它可以直接使用SecureString,而无需转换为纯文本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49635574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档