You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell 5工作流中foreach -parallel结合Invoke-AzVMRunCommand如何提取结果?

提取Azure RunCommand执行脚本的实际输出结果

核心方法

Microsoft.Azure.Commands.Compute.Automation.Models.PSRunCommandResult的实际脚本输出嵌套在对象的层级属性中,只需针对性提取即可。

具体操作步骤

  1. 先确认结果结构
    执行以下命令查看返回对象的详细属性,明确输出所在字段:

    $out | Select-Object -ExpandProperty Value | Format-List *
    

    通常会返回包含Target(VM名称)、Output(脚本标准输出)、Message(可能包含错误或额外输出)、ExitCode(执行状态码)的对象集合。

  2. 提取脚本输出
    根据结构提取目标内容,示例如下:

    # 提取每个VM的脚本输出并整理为易读格式
    $scriptResults = $out | Select-Object -ExpandProperty Value | ForEach-Object {
        [PSCustomObject]@{
            VM名称 = $_.Target
            脚本输出 = $_.Output -join "`n"  # 合并多行输出为单字符串
            执行状态码 = $_.ExitCode
        }
    }
    
    # 查看最终提取结果
    $scriptResults
    

    如果Output字段为空,替换为Message字段尝试:

    $scriptResults = $out | Select-Object -ExpandProperty Value | ForEach-Object {
        [PSCustomObject]@{
            VM名称 = $_.Target
            脚本输出 = $_.Message -join "`n"
            执行状态码 = $_.ExitCode
        }
    }
    
  3. 工作流中直接集成提取逻辑
    在你的并行工作流里,执行Invoke-AzVMRunCommand后直接处理结果,示例片段:

    workflow 批量执行VM脚本 {
        param(
            [string[]]$VM列表,
            [string]$资源组名称,
            [string]$脚本路径
        )
    
        $脚本内容 = Get-Content -Path $脚本路径 -Raw
    
        foreach -parallel ($vm in $VM列表) {
            $执行结果 = Invoke-AzVMRunCommand -ResourceGroupName $资源组名称 -Name $vm -CommandId 'RunPowerShellScript' -ScriptString $脚本内容
            # 提取输出并返回
            $执行结果 | Select-Object -ExpandProperty Value | ForEach-Object {
                [PSCustomObject]@{
                    VM名称 = $_.Target
                    脚本输出 = $_.Output -join "`n"
                    执行状态码 = $_.ExitCode
                }
            }
        }
    }
    
    # 调用工作流并获取结果
    $最终结果 = 批量执行VM脚本 -VM列表 $你的VM列表 -资源组名称 $rg名称 -脚本路径 '.\测试脚本.ps1'
    $最终结果
    

额外提示

  • 如果脚本输出是JSON格式,可对脚本输出字段执行ConvertFrom-Json进一步解析。
  • 非0的执行状态码通常表示脚本执行出错,错误信息可从Message或Error属性中提取。

内容的提问来源于stack exchange,提问作者mbourgon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:15:49