我是一个初学者的powershell,如何使用PowerShell从XML文件中获取属性值。我的XML文件看起来像这样:
<?xml version="1.0"?>
-<Objs xmlns="http://schemas.microsoft.com/powershell/2004/04" Version="1.1.0.1">
-<Obj RefId="0">
-<Props>
<S N="Name">Shares</S>
<S N="Path">D:\Shares</S>
</Props>
字符串
这就是我所尝试的:
$xml = [xml](Get-Content "C:SmbShares.xml")
$xml.Objs.Obj[0].Props.S.N.Name
型
这是预期的结果:
Shares
型
任何帮助都非常感谢!
2条答案
按热度按时间kx1ctssn1#
我喜欢使用XmlLinq库。你有一个默认的命名空间,必须使用。
字符串
fsi0uk1n2#
PowerShell对XML DOM的方便适应,即使用 * 点表示法 * 钻取XML文档的能力(有关背景信息,请参阅this answer),扩展到元素和属性 * 名称 *,但不是 * 值 *。
因此,必须在
<S>
目标元素上使用 filter 来查找N
属性 value 为"Name"
的元素:字符串
.Where()
方法进行过滤。<S>
元素具有 attributes,因此PowerShell不仅返回其内部文本;它还将其报告为System.Xml.XmlElement
示例。因此,必须访问.InnerText
属性。