在 Powershell 2.0 中读取 XML
Read XML in Powershell 2.0
注意:使用Get-Host
时在powershell中获取版本:2.0。
在 Windows 2008 服务器中,执行以下代码以在 System32 文件夹中创建 domainlist.xml 文件。
Start-Process -FilePath "C:\Windows\System32\rendom.exe" -ArgumentList "/list"
使用下面的查询来读取 xml 但它出错了。
$path = "C:\Users4129\Desktop\Domainlist.xml"
$xml = [xml](Get-Content -Path $path)
$xml.Forest.Domain.NetBiosName[2]
错误信息:Cannot index into a null array
即使“$xml.Forest”命令也没有返回任何值。
请帮助读取并替换 domainlist.xml 文件中的节点值。
如果我需要任何其他详细信息,请告诉我。
如果我正确理解了您的情况,您将无法从 Domainlist.xml 获取 NetBiosName 节点。实际上,有一种情况是所有 NetBiosName 节点都是空的,这就是为什么您应该首先检查它们(这种行为的原因不同)。
$xml = 'C:\Users4129\Desktop\Domainlist.xml'
if (($col = Select-Xml -Path $xml -XPath //NetBiosName) -is [Array]) {
$col[2].Node
# or if you need find all non-empty nodes
# $col | Where-Object {$_.Node.'#text' -ne $null}
}
这是旧 powershell 版本的已知问题。
如果我没记错的话,如果你手动加载 xml 它应该可以工作:
$path = "C:\Users4129\Desktop\Domainlist.xml"
$xml = New-Object -TypeName "System.Xml.XmlDocument"
$xml.Load($path)
$xml.Forest.Domain.NetBiosName[2]
注意:使用Get-Host
时在powershell中获取版本:2.0。
在 Windows 2008 服务器中,执行以下代码以在 System32 文件夹中创建 domainlist.xml 文件。
Start-Process -FilePath "C:\Windows\System32\rendom.exe" -ArgumentList "/list"
使用下面的查询来读取 xml 但它出错了。
$path = "C:\Users4129\Desktop\Domainlist.xml"
$xml = [xml](Get-Content -Path $path)
$xml.Forest.Domain.NetBiosName[2]
错误信息:Cannot index into a null array
即使“$xml.Forest”命令也没有返回任何值。
请帮助读取并替换 domainlist.xml 文件中的节点值。
如果我需要任何其他详细信息,请告诉我。
如果我正确理解了您的情况,您将无法从 Domainlist.xml 获取 NetBiosName 节点。实际上,有一种情况是所有 NetBiosName 节点都是空的,这就是为什么您应该首先检查它们(这种行为的原因不同)。
$xml = 'C:\Users4129\Desktop\Domainlist.xml'
if (($col = Select-Xml -Path $xml -XPath //NetBiosName) -is [Array]) {
$col[2].Node
# or if you need find all non-empty nodes
# $col | Where-Object {$_.Node.'#text' -ne $null}
}
这是旧 powershell 版本的已知问题。 如果我没记错的话,如果你手动加载 xml 它应该可以工作:
$path = "C:\Users4129\Desktop\Domainlist.xml"
$xml = New-Object -TypeName "System.Xml.XmlDocument"
$xml.Load($path)
$xml.Forest.Domain.NetBiosName[2]