首页 > 解决方案 > 将安全字符串传递给 Invoke-AzVMRunCommand

问题描述

我需要将安全字符串作为参数传递给 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

调用-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

谢谢

标签: azureazure-resource-manager

解决方案


我可以在我这边重现你的问题,你需要通过-AsPlainText -Force,命令应该是$cr = ConvertTo-SecureString $sysadmincredential -AsPlainText -Force,然后它会正常工作。

在此处输入图像描述


推荐阅读