如何将Powershell输入的有序键值对转换为Power BI REST API所需的请求体数组?
实现方案
直接通过PowerShell内置的字符串拆分、对象构造和JSON序列化能力实现,比手动拼接JSON字符串更稳定,能自动处理特殊字符转义问题。
完整实现步骤
- 第一步:接收用户输入的简化格式参数字符串
# 输入格式示例:ServerName:192.168.1.100;DBName:SalesDB;UserName:admin $inputStr = Read-Host "请输入要更新的参数,格式为 参数名1:新值1;参数名2:新值2"
- 第二步:解析输入字符串为参数数组
$updateDetails = @() # 按分号拆分出每一组参数键值对,同时过滤空项 $paramPairs = $inputStr -split ';' | Where-Object { $_ -match '\S' } foreach ($pair in $paramPairs) { # 按冒号最多拆2段,避免参数值本身包含冒号时拆分出错 $name,$value = $pair -split ':',2 | ForEach-Object { $_.Trim() } $updateDetails += [PSCustomObject]@{ name = $name newValue = $value } }
- 第三步:自动生成符合要求的请求体
# 构造完整请求体对象后序列化为JSON,Depth参数避免层级太深被截断 $bodyObj = [PSCustomObject]@{ updateDetails = $updateDetails } $body = $bodyObj | ConvertTo-Json -Depth 3
- 第四步:调用Power BI REST接口
Invoke-PowerBIRestMethod -Url $url -Method Post -Body $body
注意事项
- 如果参数值本身包含分号,可以自行调整分隔符(比如把参数对分隔符换成
|,对应修改-split ';'为-split '\|'即可) - 不需要手动处理JSON特殊字符转义,
ConvertTo-Json会自动处理值里的引号、换行等特殊内容 - 输入的参数名需要和Power BI报表里的参数名完全一致,包括大小写匹配
内容的提问来源于stack exchange,提问作者Rich Uchytil
相关产品推荐
相关产品推荐

