我有一个项目来创建一个脚本来处理我们的Lync配置 - 尝试尽可能保持模块化。我认为这最好的方法是将每个脚本文件保存在自己的目录中,并使用自己的'scopedConfig'和amp;带有全局有用标签的'centralXML'。
我遇到的问题是尝试使用Get-content连续导入2个XML文件。
我拥有的代码是:
# Import CentralConfig
[xml]$centralXML = Get-content ".\centralConfig.xml"
# Import ScopedConfig
[xml]$scopedXML = Get-content ".\ExecutionResources\ScopedConfigfiles\HostConsole\config.xml"
我测试成功导入以下内容:
"------------------"
"------------------"
$centralXML
"------------------"
$scopedXML
"------------------"
"------------------"
结果,问题在于输出:
------------------
------------------
Global_ConfigRoot
-----------------
Global_ConfigRoot
------------------
------------------
------------------
我期望两个XML的根节点都作为输出,而我只获得第一个的根节点。如果我交换它以便$ scopedXML是第一个 - 我只获得$ scopedXML根节点而没有来自$ centralXML。
有一点需要注意的是,如果我将第二个XML传递给Get-member - 你通常希望看到所有与XML相关的东西及其属性,那么我会得到一大堆空白:
------------------
------------------
Global_ConfigRoot
-----------------
Global_ConfigRoot
------------------
------------------
------------------
我之前从未遇到过这个问题,有没有人有任何建议?
(PS尽我所能遵守发布规则,如果出现任何问题,请告诉我这是我第一次在这里发帖)
答案 0 :(得分:0)
函数,cmdlet或脚本只能返回AN对象。你通过调用两个变量就像你一样返回多个变量,它实际上返回一个包含两个项目的object[]
数组(+你打印的行)。对象不受影响,只是添加到此集合中。
现在,当您的脚本输出(显示)返回的对象时,它会将其格式化为表格,因为里面有多个对象。一个表只能包含1个头(列名),当显示数组时,它会从第一个项中获取列(属性),在本例中为$centralxml
。这就是为什么你得到2列:xml和服务器。
如果你想分开它们,你必须告诉脚本在单独的表格中格式化它们。例如:
# Import CentralConfig
[xml]$centralXML = Get-content ".\test.xml"
# Import ScopedConfig
[xml]$scopedXML = Get-content ".\test2.xml"
$centralXML | Format-Table
$scopedXML | Format-Table