我试图在虚拟机上调用一个powershell脚本,并检索脚本的输出。我使用Invoke-AzureRmVMRunCommand cmdlet来调用VM上的脚本,如下所示。
$ValidationResult = Invoke-AzureRmVMRunCommand -ResourceGroupName $VM.ResourceGroupName -VMName $VM.Name -CommandId "RunPowerShellScript" -ScriptPath $ValidationScript当我从普通的powershell终端执行上面的cmdlet时,我得到了预期的输出。但是,每当我将此语句放入自动化运行簿中时,几乎所有字段都为空,如下所示

在文档中,我也没有看到任何与此相关的特定内容。我在这里做错什么了吗?
任何帮助都将不胜感激!谢谢。
更新:在脚本中,我使用写输出cmdlet记录输出。
发布于 2018-04-26 18:40:04
我对延迟回复表示歉意。我在Powershell Workflow类型的运行簿中使用了这个工具。在工作流中执行时,许多PowerShell cmdlet的行为有所不同。
在这种情况下,所发生的是Invoke-AzureRmVMRunCommand正确执行,但是响应只是响应的类型,而不是实际的响应对象。因此,我无法在响应的属性中看到任何值。
为了实现这个功能,我必须将cmdlet调用包装在一个InlineScript {}块中。
$ValidationResult = InlineScript {
    $result = Invoke-AzureRmVMRunCommand -ResourceGroupName $USING:VM.ResourceGroupName -VMName $USING:VM.Name -CommandId "RunPowerShellScript" -ScriptPath $USING:ValidationScript
    $result.SubStatuses[0].Message
}结果返回给$ValidationResult变量。
谢谢。
发布于 2018-04-12 10:18:48
您需要在脚本的最后一行中添加对象名,或者使用写输出命令。否则,它将不会输出任何内容。
下面的行都将一个对象写入输出流。
https://learn.microsoft.com/en-us/azure/automation/automation-runbook-output-and-messages
希望这能有所帮助
发布于 2018-04-24 20:19:39
这一问题很可能是由于报告的AzureRM模块中的缺陷,从5.7.0 /2018年4月版本开始。据报道,回到5.6.0 /2018年3月版本可以修复它。发行日志:https://github.com/Azure/azure-powershell/issues/5982
https://stackoverflow.com/questions/49793703
复制相似问题