在 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]