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

如何使用PowerShell读取XML中单条记录ID生成合法请求URL

PowerShell 逐行获取XML节点ID生成请求URL的解决方案

你直接调用节点集合的.Id属性时,PowerShell会默认返回所有子节点的Id属性组成的数组,因此需要先获取所有记录节点的集合,再循环遍历每个节点单独提取ID即可。

完整修改后代码

$base64AuthInfo = "###"
$Header = @{
Authorization = "Basic $base64AuthInfo"
}
# 原双引号内的$format会被解析为PowerShell变量,改用单引号避免解析错误
$url = 'http://###/?$format=xml'
$data = Invoke-WebRequest -Uri $url -Headers $Header -Method Get -ContentType "application/xml"
$xml = [xml]$data.Content

# 强转为数组,避免仅返回单条记录时无法正常遍历
$recordNodes = @($xml.ChildNodes.Body.ChildNodes.Body)

# 遍历每一条记录节点
foreach ($node in $recordNodes) {
    $id = $node.Id
    # 按照要求的格式拼接URL,$符号加反引号转义避免被解析
    $customValuesURL = "http://example.com/1/2/3/$id/?`$format=xml"
    $values = Invoke-WebRequest -Uri $customValuesURL -Headers $Header -Method Get -ContentType "application/xml"
    $customValues = [xml]$values.Content
    $fieldNode = $customValues.FirstChild.Body.CustomValues.CustomFieldValue
    
    $resultObject = New-Object PSObject -Property @{
        RecordId = $id
        Name = $fieldNode.Name
        DataType = $fieldNode.DataType
        Value = $fieldNode.Value
    }
    Write-Output $resultObject
}

关键调整说明

  • 使用@()语法将获取到的节点集合强转为数组,解决单条记录时返回对象不是集合、无法遍历的问题
  • 新增foreach循环遍历每个记录节点,每次循环仅提取当前节点的ID生成请求URL,保证每次请求的URL合法
  • 修正了URL拼接时$format参数被PowerShell误解析为变量的问题,可通过反引号转义或者单引号包裹固定参数部分解决
  • 按照你给出的目标URL格式补全了路径中的/1/2/3/部分,实际使用时如果路径有差异可以自行调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:36:07