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

Я могу использовать модуль Runbook для автоматизации Azure (powershell) для запуска Powershell, находящегося на виртуальной машине. Он работает хорошо, пока нет параметров, требуемых VM Powershell. Если мы отправляем параметры из runbook в VM 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-script

[CmdletBinding()]
param (
    [Parameter(Position=0)]
    [string]$name
)
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
611
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

Это не отличается от первоначально опубликованного кода, поэтому я думаю, что должна быть какая-то другая проблема.

Nick.McDermaid 11.12.2020 09:48

На самом деле это так. Сценарий (функция) является частью сценария автоматизации. В то время как ОП поместил это в виртуальную машину в виде файла powershell. Передача параметров тому, что вызвало проблему. Это не решает эту проблему, но это лучшее решение для ОП.

Blue Clouds 14.12.2020 06:40

Другие вопросы по теме