2013-05-07 117 views
2

我需要将凭证存储在PowerShell中才能使用多次。这里StackOverflow上也有很多例子,所以我花了一从服务器拒绝的powershell凭证

$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 

回答

4

我看不出什么明显的毛病你的代码,我猜这只是你如何使用它的一个例子,因为你提到你需要在几个地方使用它。只是为了检查,这确实是安全字符串的失败,你可以请用以下的,应证明该证书被保存到磁盘之前工作过的存储:

Get-ADUser -Credential $tmpCred 

一个选择是绕过凭据而不是一个文件或安全字符串,使用[System.Management.Automation.PSCredential]这个类型,它是从您的调用返回到Get-Credentials并存储在变量$tmpCred中。

您也暂时将呼叫添加到方法GetNetworkCredentials(),以确保您的密码已被正确解密,以下将显示用户名和密码(未加密):

$tmpCred.GetNetworkCredential().Username 
$tmpCred.GetNetworkCredential().Password 

希望帮助...