使用powershell将XML文件作为输入传递给Invoke-CimMethod

时间:2017-05-04 08:38:47

标签: xml powershell winrm wsman

我正在使用power shell调用CIM方法。方法参数在这样的XML文件中

XML输入文件: -

<root>
<field1>value1</<field1>
<field2>value2</<field2>
</root>

Powershell命令: -

Invoke-CimMethod -InputObject $inst -CimSession $session -MethodName method_name -Arguments @{field1='value1';field2='value2'}

当我作为命令行参数传递时,如@ {field1 ='value1'; field2 ='value2'},它可以正常工作。

有没有办法直接将它作为xml输入文件传递给power shell,就像我们在winrm中有'-file:input.xml'一样。

1 个答案:

答案 0 :(得分:1)

您无法将XML文件直接传递给命令,但您可以先打开XML文档并将其转换为PowerShell对象:

[xml]$XML = Get-Content -Path YourFile.xml

我认为您可以通过以下方式将Root扩展到自己的对象:

$Root = $XML | Select -ExpandProperty Root | Select Field1,Field2

我认为你可以通过以下方式将其转换为哈希表:

$RootHT = @{}
$Root.psobject.properties | Foreach { $RootHT[$_.Name] = $_.Value }

然后将哈希表传递给您的命令:

Invoke-CimMethod -InputObject $inst -CimSession $session -MethodName method_name -Arguments $RootHT

如果您愿意,可以将上述一些步骤结合起来,使其缩短。

另外,仅供参考,您的XML示例无效(field1和2的结束元素在错​​误的地方有一个</,我认为这只是一个错字)。它必须是:

<root>
<field1>value1</field1>
<field2>value2</field2>
</root>