xml - 哈希表包含$ null值

标签 xml powershell hashtable

我不明白。我有一个哈希表,其中包含外部实用程序的位置

$ExtUtilities = @{}

然后,稍后我将它们从XML文档添加到哈希表中

$ExtUtilities.essclient = $XmlDoc.config.local.setup.external.utility.essclient
$ExtUtilities.lcm       = $XmlDoc.config.local.setup.external.utility.lcm
$ExtUtilities.sqlclient = $XmlDoc.config.local.setup.external.utility.sqlclient
$ExtUtilities.oraexport = $XmlDoc.config.local.setup.external.utility.oraexport

一切都很好,但我注意到表中的每个条目都有$ null,并且不确定它们来自何处

名称值
---- -----
sqlclient {$ null,$ null,C:\ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ sqlcmd.exe,$ null}
oraexport {$ null,$ null,$ null,C:\ app \ client \ epmadmin \ product \ 12.1.0 \ client_1 \ BIN \ exp.exe}
essclient {$ null,C:\ Oracle \ Middleware \ EPMSystem11R1 \ products \ Essbase \ EssbaseClient \ bin \ startMaxl.cmd,$ null,$ null}
lcm {C:\ Oracle \ Middleware \ user_projects \ Foundation1 \ bin \ Utility.bat,$ null,$ null,$ null}
$null令我无法运行这些命令,因为CMD中断程序不喜欢带有领先的$null的命令。

任何人都可以解释为什么那里有$null吗?

最佳答案

好吧,如果不查看原始XML很难说,但是可能是因为有多个匹配元素。 $XmlDoc.config.local.等的结果可能返回一个数组,其中一些值为$null

在执行任务时,您应该能够将它们过滤掉,如下所示:

$ExtUtilities.essclient = $XmlDoc.config.local.setup.external.utility.essclient | 
    Where-Object -FilterScript { $_ }

那只会分配解析为$true的对象。

如果您确实不想要数组,那么也只获取第一个数组:
$ExtUtilities.essclient = $XmlDoc.config.local.setup.external.utility.essclient | 
    Where-Object -FilterScript { $_ } |
    Select-Object -First 1

关于xml - 哈希表包含$ null值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41553357/

相关文章:

parsing - 如何在Powershell中处理参数的多个选项?

powershell - 如何从.ps1文件运行powershell脚本?

powershell - 使用 PowerShell 复制多个文件

c - 我有一个节点哈希表。如何打印哈希表中每个节点的每个单独值?

algorithm - 哈希表实现

java - 如何从 xls 文件生成 xml 或 json 映射,然后从该映射生成 html 表(结构)?

c# - 从 xml 文件中获取 XML 值

java - 如何从 java http 请求读取 XML?

c# - 提高 LINQ 查询的性能

c++ - 数组元素从未成功添加? (C++)