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

Azure自动化Runbook中PowerShell解析JSON参数报错:InputObject为空

问题分析与解决方案

错误原因:Runbook中定义的$json参数未接收到任何值,导致ConvertFrom-Json的输入对象为null,触发报错无法将参数绑定到参数‘inputobject’,因为它为null。核心问题是API请求的参数传递方式与Runbook的参数定义不匹配。


方案一:直接传递单个参数(推荐,符合Azure自动化规范)

Azure自动化Jobs API会自动将请求体parameters中的键值对映射为Runbook的对应参数,无需手动解析JSON。

1. 修改Runbook代码

直接声明所需的参数,去掉JSON解析步骤:

# Runbook Powershell
Param(
    [parameter(Mandatory=$true)]
    [string]$VmName,
    [parameter(Mandatory=$true)]
    [string]$ResourceGroup
)

# 禁用上下文自动保存
Disable-AzContextAutosave -Scope Process

# 通过托管身份连接Azure
$AzureContext = (Connect-AzAccount -Identity).context

# 设置并保存上下文
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext

# 直接使用参数启动VM
Start-AzVM -Name $VmName -ResourceGroupName $ResourceGroup -DefaultProfile $AzureContext

2. 保持API调用代码不变

你原有的请求体parameters字段已经包含VmName和ResourceGroup,与修改后的Runbook参数完全匹配,无需调整。


方案二:传递完整JSON字符串(适用于必须用单个参数的场景)

如果需要将所有参数打包成一个JSON对象传递,需将JSON转为字符串格式传入,并修改Runbook参数类型。

1. 修改API请求体

将parameters中的json参数值设置为转义后的JSON字符串:

$json = @"
{
    "properties":{
        "runbook":{
            "name":"$runbook"
        }
    },
    "parameters":{
        "json" : "{\"VmName\":\"TestVM\",\"ResourceGroup\":\"$rg\"}"
    }
}
"@

注意:内部双引号需用反斜杠\转义,确保传递的是字符串类型的参数值。

2. 修改Runbook代码

将$json参数类型改为[string],再解析为JSON对象:

# Runbook Powershell
Param(
    [parameter(Mandatory=$true)]
    [string]$json
)

# 禁用上下文自动保存
Disable-AzContextAutosave -Scope Process

# 通过托管身份连接Azure
$AzureContext = (Connect-AzAccount -Identity).context

# 设置并保存上下文
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext

# 将JSON字符串转为对象
$jsonObj = $json | ConvertFrom-Json

# 使用解析后的参数启动VM
Start-AzVM -Name $jsonObj.VmName -ResourceGroupName $jsonObj.ResourceGroup -DefaultProfile $AzureContext

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 03:45:52