PowerShell初学者求助:如何从XML文件中获取属性值?
PowerShell读取XML属性值的解决方法
你的XML包含默认命名空间,且访问语法有误,导致无法正确获取目标值。以下是修复步骤:
1. 修正文件路径
你原代码中的路径C:SmbShares.xml缺少反斜杠,正确路径应为C:\SmbShares.xml。
2. 处理XML命名空间
XML中的xmlns="http://schemas.microsoft.com/powershell/2004/04"是默认命名空间,必须先注册才能正确查询节点:
$xml = [xml](Get-Content "C:\SmbShares.xml") # 注册命名空间 $nsManager = New-Object System.Xml.XmlNamespaceManager($xml.NameTable) $nsManager.AddNamespace("ps", "http://schemas.microsoft.com/powershell/2004/04")
3. 获取目标值
使用XPath筛选N属性为Name的S节点,然后提取其文本内容:
# 获取Name对应的节点文本 $xml.SelectSingleNode("//ps:S[@N='Name']", $nsManager).InnerText
执行后会输出:
Shares
替代方法(无需XPath)
如果偏好点符号访问,可以先筛选节点再提取文本:
$xml.Objs.Obj[0].Props.S | Where-Object { $_.N -eq 'Name' } | Select-Object -ExpandProperty '#text'
内容的提问来源于stack exchange,提问作者chou
相关产品推荐
相关产品推荐

