Передача безопасной строки в Invoke-AzVMRunCommand - PullRequest
0 голосов
/ 04 февраля 2019

Мне нужно передать защищенную строку в качестве параметра Invoke-AzVMRunCommand.Мой код

$pass=Read-Host "Enter Password for sysadmin" -AsSecureString
$stdstring  = ConvertFrom-SecureString $pass 

 $runcmdparameters=@{
      "sysadmincredential"=$stdstring           
                       }
        Invoke-AzVMRunCommand -ResourceGroupName $ServerResourceGroupName -VMName $VMVame -ScriptPath $TemplateFile  -CommandId 'RunPowerShellScript' -Parameter $runcmdparameters -Verbose

Сценарий Invoke-AzVMRunCommand

Param(
[parameter(Mandatory=$true)][string]$sysadmincredential
)

$cr=ConvertTo-SecureString $sysadmincredential

Out-File "C:\Temp\log.txt" -InputObject $cr -Append

Однако сценарий завершается ошибкой с

ConvertTo-SecureString: системе не удается найти путьуказано.В C: \ Packages \ Plugins \ Microsoft.CPlat.Core.RunCommandWindows \ 1.1.0 \ Downloads \ s cript11.ps1: 4 char: 5 + $ cr = ConvertTo-SecureString $ sysadmincredential + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument: (:) [ConvertTo-SecureString], C ryptographicException +FullyQualifiedErrorId: ImportSecureString_InvalidArgument_Cryptographic
Ошибка, Microsoft.PowerShell.Commands.ConvertToSecureStringCommand

Спасибо

1 Ответ

0 голосов
/ 05 февраля 2019

Я могу воспроизвести вашу проблему на моей стороне, вам нужно передать -AsPlainText -Force, команда должна быть $cr = ConvertTo-SecureString $sysadmincredential -AsPlainText -Force, тогда она будет работать нормально.

enter image description here

...