我正在尝试在PowerShell中执行Invoke-AzVMRunCommand,并将参数传递给需要执行的脚本。
在运行Runbook之前,我可以定义参数名称:Define Parameter
Runbook中的代码:
param(
[Parameter(Mandatory=$true)]
[string]$name
)
Write-Output "Connecting to azure via Connect-AzAccount -Identity"
Connect-AzAccount -Identity
Write-Output "Successfully connected with Automation account's Managed Identity"
Write-Output "Run Script Against Machines"
$ScriptToRun = "C:\testps.ps1"
Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1
Invoke-AzVMRunCommand -ResourceGroupName "RG" `
-VMName "VM" `
-CommandId 'RunPowerShellScript' `
-ScriptPath ScriptToRun.ps1 `
-Parameter @{"name" = $name}
Remove-Item -Path ScriptToRun.ps1
要使用以下参数执行的服务器上的脚本:
param(
[string]$name
)
MKdir -Path "C:\Users" -Name $name
脚本未生成预期的输出:正在使用C:\Users下的参数创建名为的文件夹。未创建任何文件夹。
如果我在同一个脚本上执行Invoke-AzVMRunCommand,并使用如下硬编码参数:
MKdir -路径“C:\Users”-名称“TEST”,它确实工作,并创建文件夹。
1条答案
按热度按时间nhhxz33t1#
首先,我在虚拟机上有脚本,并遵循Microsoft-Document:
然后,我在脚本中使用az invoke命令代替
Invoke-AzVMRunCommand
,并使用以下命令:这里的$name是您发送到runbook的参数。
通过这种方式,您可以创建具有所需名称的文件夹。
参考文献摘自: