我不明白。我有一个哈希表,其中包含外部实用程序的位置
$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/