Обработка 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
Надеюсь, это будет работать в вашей ситуации