Обработка PowerShell SecureString в качестве параметра или записи консоли

У меня много трудностей со скриптом PowerShell, из которого я пытаюсь вызвать запрос DirectoryServices. В настоящее время, если я сделаю

$password = read-host "Password" -asSecureString

и впоследствии

$credential = New-Object System.Management.Automation.PSCredential $username,$password

все отлично работает Однако, если я пытаюсь передать строковый параметр с параметром ($password), а затем преобразовать его в безопасную строку с этим кодом:

$password = ConvertTo-SecureString -AsPlainText -Force $password

После обширной отладки я вижу, что это работает нормально с точки зрения преобразования строки в защищенную строку, но я получаю неверный пользователь / пароль от DirectoryServices при использовании параметра. Все отлично работает при чтении с консоли. Любые идеи о том, что я могу сделать, чтобы принять параметр ИЛИ принять консольный ввод в отсутствие параметра?

Я надеялся, что это сработает, но это не так:

if($password -eq $null) {
    $password = read-host "Password" -asSecureString
} else {
    $password = ConvertTo-SecureString -AsPlainText -Force $password
}
$credential = New-Object System.Management.Automation.PSCredential $username,$password

1 ответ

Я недавно создал скрипт и столкнулся с той же проблемой. Работа вокруг, которую я нашел в моем случае, была следующей:

#Prompts for the username/password, enter the username in the form of DomainName\UserName
$Credential = get-credential

#Converts the password to clear text to pass it through correctly as passing through a secure string does not work.
$Password = $credential.GetNetworkCredential().password

#Converts the $Credential to just the DomainName/UsernName.
$Account = $credential.UserName

Надеюсь, это будет работать в вашей ситуации

Другие вопросы по тегам