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

如何在PowerShell中从指定XML提取HostName与WorkstationID并合并为一行输出?

问题解决:提取XML中的HostName和WorkstationID并同行输出

你已经拿到了XML对象并定位到了Device节点,其实不需要太复杂的操作,两种方法都能实现你要的同行输出效果:

方法一:基于现有代码的对象操作(无需XPath)

直接利用PowerShell的字符串插值,把两个值拼接在同一行:

[xml]$Config = $wc.DownloadString("http://xmlsource/xmlfile.xml")
$device = $Config.Devices.Device
# 拼接HostName和WorkstationID的值,用空格分隔
"$($device.HostName) $($device.Parameter | Where-Object Name -eq 'WorkstationID' | Select-Object -ExpandProperty Value)"

这里$()用来在字符串中执行表达式,Select-Object -ExpandProperty Value是直接取出参数的Value值,避免输出对象格式。

方法二:用XPath精确提取(更简洁)

如果想让代码更紧凑,XPath确实是个好选择,它可以直接定位到你需要的属性值:

[xml]$Config = $wc.DownloadString("http://xmlsource/xmlfile.xml")
# 用XPath直接获取HostName属性值
$hostName = $Config.SelectSingleNode("/Devices/Device/@HostName").Value
# 用XPath定位到Name为WorkstationID的Parameter节点,取出它的Value属性
$workstationId = $Config.SelectSingleNode("/Devices/Device/Parameter[@Name='WorkstationID']/@Value").Value
# 输出同行结果
"$hostName $workstationId"

这种方法在XML结构复杂、节点层级多的时候优势更明显,能减少对象遍历的代码量。

两种方法最终都会输出你期望的结果:12345-Desktop T100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:44:34