我需要在powershell中存储凭证以便多次使用。在StackOverflow上有很多例子,所以我选了一个
$tmpCred = Get-Credential
$tmpCred.Password | ConvertFrom-SecureString | Set-Content "pwd.dat"
$password = Get-Content "pwd.dat" | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential "myDomain\myUser", $password
Get-ADUser -Credential $credential
不幸的是我收到了这个错误而我找不到解决方案
Get-ADUser : The server has rejected the client credentials.
At line:5 char:11
+ Get-ADUser <<<< "xxx" -Credential $credential
+ CategoryInfo : NotSpecified: (xxx:ADUser) [Get-ADUser], AuthenticationException
+ FullyQualifiedErrorId : The server has rejected the client credentials.,Microsoft.ActiveDirectory.Management.Commands.GetADUser
答案 0 :(得分:4)
我看不出你的代码有什么明显的错误,我猜这只是你如何使用它的一个例子,因为你提到你需要在几个地方使用它。只是为了检查确实存储安全字符串是否失败,您可以使用以下内容进行检查,这可以证明凭据在保存到磁盘之前有效:
Get-ADUser -Credential $tmpCred
一种选择是使用从您对Get-Credentials的调用返回并存储在变量[System.Management.Automation.PSCredential]
中的类型$tmpCred
传递凭证而不是文件或securestring。
您还可以临时添加对方法GetNetworkCredentials()
的调用以确保您的密码已正确解密,以下内容将显示用户名和密码(未加密):
$tmpCred.GetNetworkCredential().Username
$tmpCred.GetNetworkCredential().Password
希望有帮助...