首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Azure中简单地从powershell工作流自动化runbook中获取powerstate?

如何在Azure中简单地从powershell工作流自动化runbook中获取powerstate?
EN

Stack Overflow用户
提问于 2020-06-05 23:09:59
回答 2查看 234关注 0票数 0

我有一个自动启动和关闭Azure中的虚拟机的Powershell工作流runbook,我更新了自动化帐户中的模块(以便我可以将其用于其他事情),它已经停止了脚本的工作。我已经修复了大部分损坏的东西,但现在不工作的位正在获得电源状态,例如: PowerState/deallocated,这样它就可以关闭/启动。下面是我的代码:

代码语言:javascript
复制
$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时,它会显示:

代码语言:javascript
复制
"Statuses":  [
                 "Microsoft.Azure.Management.Compute.Models.InstanceViewStatus",
                 "Microsoft.Azure.Management.Compute.Models.InstanceViewStatus"
             ],

它现在不会显示PowerState。如何从powershell workflow runbook中获取vm的电源状态,以便使用?谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-06-06 00:13:31

我尝试过一个内联脚本,如果您指定了一个vm名称,它就会起作用:

代码语言:javascript
复制
$vmStatusCode = InlineScript {
$vmFullStatus = Get-AzureRmVM -ResourceGroupName test1 -Name test1 -Status
$vmStatusJson = $vmFullStatus | ConvertTo-Json -depth 100
$vmStatus = $vmStatusJson | ConvertFrom-Json
$vmStatus.Statuses[1].code
}

但是当你传递变量时它就不起作用了:

代码语言:javascript
复制
$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.

它需要在没有内联脚本的情况下运行--有什么想法吗?

票数 0
EN

Stack Overflow用户

发布于 2020-06-08 16:06:49

忘记添加$using:

代码语言:javascript
复制
$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
                    }

这现在可以用了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62218572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档