2013-05-07 3 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 

Один из вариантов будет проходить вокруг полномочий а не файл или securestring, используя тип [System.Management.Automation.PSCredential], который возвращается из вашего вызова в Get-Credentials и сохраняется в переменной $tmpCred.

Вы можете также временно добавить вызов метода GetNetworkCredentials(), чтобы убедиться, что ваш пароль был правильно расшифрованы, следующий будет показывать имя пользователя и пароль (в незашифрованном виде):

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

Надежда, что помогает ...

Смежные вопросы