我已按照以下指南创建SecureString密码。 现在,我需要使用dsquery选项-s(服务器)-u(用户)和-p(密码)登录到外部域控制器。
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对象,我无法进行身份验证。 我尝试了一些选项,但无法让它运行。
你有想法吗?
答案 0 :(得分:1)
唯一的方法是解密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
个对象提供的保护。
如果您坚持使用SecureString
命令,这是唯一的选项,因为它需要在其命令行上使用纯文本密码。这本质上是不安全的。
相反,我建议使用可以直接使用.append
的Active Directory cmdlet,而无需转换为纯文本。