1

我正在使用 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' 一样?

4

1 回答 1

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>
于 2017-05-04T08:51:40.790 回答