我有一个自动启动和关闭Azure中的虚拟机的Powershell工作流runbook,我更新了自动化帐户中的模块(以便我可以将其用于其他事情),它已经停止了脚本的工作。我已经修复了大部分损坏的东西,但现在不工作的位正在获得电源状态,例如: PowerState/deallocated,这样它就可以关闭/启动。下面是我的代码:
$vmFullStatus = Get-AzureRmVM -ResourceGroupName test1 -Name test1 -Status
$vmStatusJson = $vmFullStatus | ConvertTo-Json -depth 100
$vmStatus = $vmStatusJson | ConvertFrom-Json
$vmStatusCode = $vmStatus.Statuses[1].code
Write-Output " VM Status Code: $vmStatusCode"写入输出VM状态代码现在在runbook的输出中为空,但它在标准shell中输出正常。我在工作流runbooks方面的经验有限,但我认为需要将其转换为Json,以便工作流可以使用它。
我认为问题可能出在状态上,因为当它转换为Json时,它会显示:
"Statuses": [
"Microsoft.Azure.Management.Compute.Models.InstanceViewStatus",
"Microsoft.Azure.Management.Compute.Models.InstanceViewStatus"
],它现在不会显示PowerState。如何从powershell workflow runbook中获取vm的电源状态,以便使用?谢谢
发布于 2020-06-06 00:13:31
我尝试过一个内联脚本,如果您指定了一个vm名称,它就会起作用:
$vmStatusCode = InlineScript {
$vmFullStatus = Get-AzureRmVM -ResourceGroupName test1 -Name test1 -Status
$vmStatusJson = $vmFullStatus | ConvertTo-Json -depth 100
$vmStatus = $vmStatusJson | ConvertFrom-Json
$vmStatus.Statuses[1].code
}但是当你传递变量时它就不起作用了:
$vmFullStatus = Get-AzureRmVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Status
Get-AzureRmVM : Cannot validate argument on parameter 'ResourceGroupName'. The argument is null or empty. Provide an
argument that is not null or empty, and then try the command again.它需要在没有内联脚本的情况下运行--有什么想法吗?
发布于 2020-06-08 16:06:49
忘记添加$using:
$vmStatusCode = InlineScript {
$vmFullStatus = Get-AzureRmVM -ResourceGroupName $using:vm.ResourceGroupName -Name $using:vm.Name -Status
$vmStatusJson = $vmFullStatus | ConvertTo-Json -depth 100
$vmStatus = $vmStatusJson | ConvertFrom-Json
$vmStatus.Statuses[1].code
}这现在可以用了!
https://stackoverflow.com/questions/62218572
复制相似问题