Автоматизация Azure не может передавать параметры в сценарий PowerShell внутри виртуальной машины.

Я могу использовать модуль запуска автоматизации Azure (PowerShell) для запуска Powershell, находящегося на виртуальной машине. Он работает хорошо, если для VM Powershell не требуются параметры. Если мы отправим параметры из модуля Runbook в PowerShell виртуальной машины, он не работает. VM PowerShell получает параметры как нулевые. В остальном у Runbook нет проблем. Так передается параметр.

$runcmdparameters=
@{"name" = "EXE"}

Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1

Invoke-AzVMRunCommand -AsJob -ResourceGroupName $RG-Name -Name $myName-CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1 -Parameter $runcmdparameters -Verbose

Вот так параметр получен в скрипте VM-powershell

[CmdletBinding()]
param (
    [Parameter(Position=0)]
    [string]$name
)

person Blue Clouds    schedule 10.12.2020    source источник


Ответы (1)


После моей проверки вам просто нужно передать переменную Hashtable в параметры команды запуска -Parameter, обратитесь к здесь.

Вот рабочий образец для справки:

function Install-Postgres {

[CmdletBinding()]
param (
    [Parameter(Position=0)]
    [string]$name
)
     
Write-Host "This is a sample script with parameters $name"

}

$ScriptToRun = Get-Content Function:\Install-Postgres

Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1

$params = @{"name"="EXE" }

$ss=Invoke-AzVMRunCommand -ResourceGroupName $rgName -VMName $VMVame -ScriptPath "ScriptToRun.ps1" -CommandId 'RunPowerShellScript' -Parameter $params
Write-output $ss.Value[0].Message

введите описание изображения здесь

person Nancy Xiong    schedule 11.12.2020
comment
Это не отличается от первоначально опубликованного кода, поэтому я предполагаю, что должна быть какая-то другая проблема. - person Nick.McDermaid; 11.12.2020
comment
На самом деле это так. Скрипт (функция) является частью скрипта автоматизации. Хотя OP поместил это в виртуальную машину как файл PowerShell. Передача параметров вызвавшей проблему. Это не решает эту проблему, но это лучшее решение для OP. - person Blue Clouds; 14.12.2020