求助:PowerShell调用Emsisoft API创建工作区时遇解析错误
解决Emsisoft API创建工作区的PowerShell脚本解析错误问题
错误原因
你碰到的ValidationFailed错误,核心问题是PowerShell不会自动把哈希表序列化为JSON。即使你在请求里指定了Content-Type: application/json,直接把哈希表传给Invoke-RestMethod的-Body参数时,它会把哈希表编码成表单数据(比如name=xxx&securityManagementLevel=xxx),而不是API需要的JSON格式,导致解析失败。
修复后的脚本
把哈希表通过ConvertTo-Json转换成JSON字符串后再传给-Body,同时避免重复设置Content-Type:
# Define your API endpoint URL $apiUrl = "https://api.emsisoft.com/v1/workspaces" # Set your API key $apiKey = "XXXXXXXXXXXXXXXXXXXXXXX" # Create headers with API-KEY and ACCEPT $headers = @{ "API-KEY" = $apiKey "ACCEPT" = "application/json" } $body = @{ "name"="XXXXXXXXXXXXXXXXXXXXXXX" "securityManagementLevel"="LocalAndRemote" "licenseKey"="ABC-XXX-XXX-123" } | ConvertTo-Json # 将哈希表转为JSON格式 # Make the API request try { $response = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Post -Body $body -ContentType 'application/json' Write-Host "API request successful!" } catch { Write-Host "Error: $_" }
关键说明
ConvertTo-Json是核心:它会把PowerShell的哈希表结构转换成符合标准的JSON字符串,确保API能正确解析请求体。- 移除了Headers中的
Content-Type:因为Invoke-RestMethod的-ContentType参数已经指定,重复设置没必要,也可能引发潜在的配置冲突。
内容的提问来源于stack exchange,提问作者user23704376
相关产品推荐
相关产品推荐

