首页 > 解决方案 > Powershell无法读取xml文件?

问题描述

我有一个用于读取 xml 文件的 powershell 脚本。这是代码

$configPath = Join-Path $PSScriptRoot 'config.xml'
Write-Host $configPath
[xml]$XmlDocument = [xml](get-content $configPath)
Write-Host $XmlDocument
foreach($line in Get-Content $configPath) {
    Write-Host $line
}

当我打印$XmlDocument它时出现空字符串,但是该文件是有效的,因为当我执行 for 循环以一次读取一行时,它可以工作并打印

<employees>
    <employee id="101">
        <name>Frankie Johnny</name>
        <age>36</age>
    </employee>
    <employee id="102">
        <name>Elvis Presley</name>
        <age>79</age>
    </employee>
    <employee id="301">
        <name>Ella Fitzgerald</name>
        <age>102</age>
    </employee>
</employees>

有谁知道是什么问题?

谢谢

标签: xmlfilepowershell

解决方案


使用Write-Output,不使用Write-Host。我使用自己的 XML 文档进行了测试,[xml]$XmlDocument包含数据,但没有输出任何Write-Host. 我不完全确定为什么Write-Host不打印 $XmlDocument 的内容,但我确信它与周围的管道异常Write-Host有关(这会中断管道)。

您几乎应该始终避免Write-Host使用Write-Output. 另请参阅Write-WarningWrite-VerboseWrite-Error和cmdlet 以将信息直接输出到控制台主机Write-Debug以外的其他流。STDOUT请参阅这篇文章,了解有关为什么应尽可能避免Write-Host以及如何将其视为有害的更多信息。


推荐阅读