Это сбивало меня с толку последние пару дней. Невозможно передать параметр в ConvertTo-SecureString
, только переменная, определенная скриптом.
Когда я запускаю скрипт, я передаю несколько параметров. Одна из задач, которые ему необходимо выполнить, - это подключиться к удаленному компьютеру через PSSession, т.е.
./myscript.ps1 -VMPass "12345@!" -VMuser abc
В моем скрипте есть следующее, которое будет передано New-PSSession
:
[CmdletBinding()]
Param(
$VMuser,
$VMPass
)
$PWord = ConvertTo-SecureString -AsPlainText -String "$VMPass" -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $VMuser, $PWord
$NewVMSession = (New-PSSession -ComputerName $NewVMAddress -Credential $cred -ErrorAction Stop)
Когда я запускаю это, я получаю следующую ошибку:
New-PSSession : [WIN-V2BK0KCPC7H] Connecting to remote server WIN-V2BK0KCPC7H failed with the following error message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic. At C:\Users\ChildsC\Documents\Git\BAIC\Controller.ps1:85 char:26 + ... MSession = (New-PSSession -ComputerName $NewVMAddress -Credential $vm ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException + FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed
Однако, если бы я явно определил $VMPass = "12345@!"
в сценарии ИЛИ, если бы я вызвал Get-Credential
, он работал нормально.
Итак, есть небольшая проблема в том, как передается параметр.
PSCredential
. - person Bill_Stewart   schedule 25.05.2018