作为作业调用AzVMRunCommand

时间:2019-09-13 05:09:21

标签: azure-powershell

我正在尝试将Invoke-AzVMRunCommand用作作业。当我在下面的脚本中执行该作业时,就可以成功创建并执行该作业,但是我无法编写输出,例如哪个作业结果属于哪个虚拟机。

2 个答案:

答案 0 :(得分:0)

Invoke-AzVMRunCommand用于在特定VM上调用命令。您应该事先拥有此信息。

以下是有关-AsJob参数的一些信息

https://docs.microsoft.com/en-us/powershell/module/az.compute/invoke-azvmruncommand?view=azps-2.6.0#parameters

答案 1 :(得分:0)

如AmanGarg-MSFT所建议,您应该事先掌握该信息。您可以使用哈希表$ Jobs存储服务器名称和Invoke-AzVMRunCommand输出,然后使用$ Jobs.GetEnumerator()进行迭代。

$Jobs = @{}
$Servers = "Server01","Server02"
[System.String]$ScriptBlock = {Get-Process}
$FileName = "RunScript.ps1"
Out-File -FilePath $FileName -InputObject $ScriptBlock -NoNewline
$Servers | ForEach-Object {
    $vm = Get-AzVM -Name $_
    $Jobs.Add($_,(Invoke-AzVMRunCommand -ResourceGroupName $vm.ResourceGroupName -Name $_ -CommandId 'RunPowerShellScript' -ScriptPath $FileName -AsJob))
}