首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Invoke-AzureRmVMRunCommand在从Runbook执行时不返回"Output“字段中的任何内容

Invoke-AzureRmVMRunCommand在从Runbook执行时不返回"Output“字段中的任何内容
EN

Stack Overflow用户
提问于 2018-04-12 10:03:50
回答 3查看 2.5K关注 0票数 2

我试图在虚拟机上调用一个powershell脚本,并检索脚本的输出。我使用Invoke-AzureRmVMRunCommand cmdlet来调用VM上的脚本,如下所示。

代码语言:javascript
运行
复制
$ValidationResult = Invoke-AzureRmVMRunCommand -ResourceGroupName $VM.ResourceGroupName -VMName $VM.Name -CommandId "RunPowerShellScript" -ScriptPath $ValidationScript

当我从普通的powershell终端执行上面的cmdlet时,我得到了预期的输出。但是,每当我将此语句放入自动化运行簿中时,几乎所有字段都为空,如下所示

文档中,我也没有看到任何与此相关的特定内容。我在这里做错什么了吗?

任何帮助都将不胜感激!谢谢。

更新:在脚本中,我使用写输出cmdlet记录输出。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-26 18:40:04

我对延迟回复表示歉意。我在Powershell Workflow类型的运行簿中使用了这个工具。在工作流中执行时,许多PowerShell cmdlet的行为有所不同。

在这种情况下,所发生的是Invoke-AzureRmVMRunCommand正确执行,但是响应只是响应的类型,而不是实际的响应对象。因此,我无法在响应的属性中看到任何值。

为了实现这个功能,我必须将cmdlet调用包装在一个InlineScript {}块中。

代码语言:javascript
运行
复制
$ValidationResult = InlineScript {
    $result = Invoke-AzureRmVMRunCommand -ResourceGroupName $USING:VM.ResourceGroupName -VMName $USING:VM.Name -CommandId "RunPowerShellScript" -ScriptPath $USING:ValidationScript

    $result.SubStatuses[0].Message
}

结果返回给$ValidationResult变量。

更详细的文章在这里给出:https://amoghnatu.net/2018/04/15/get-output-of-script-executed-as-part-of-set-azurermvmcustomscriptexecution-cmdlet/

谢谢。

票数 0
EN

Stack Overflow用户

发布于 2018-04-12 10:18:48

您需要在脚本的最后一行中添加对象名,或者使用写输出命令。否则,它将不会输出任何内容。

下面的行都将一个对象写入输出流。

  • 写输出-InputObject $ValidationResult
  • $ValidationResult

https://learn.microsoft.com/en-us/azure/automation/automation-runbook-output-and-messages

希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 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

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

https://stackoverflow.com/questions/49793703

复制
相关文章

相似问题

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