使用 powershell 在 Invoke-CimMethod 中将 XML 文件作为输入参数传递

Pass XML file as input Arguments in Invoke-CimMethod using powershell

我正在使用电源 shell 调用 CIM 方法。方法参数在 XML 文件中,如下所示

XML 输入文件:-

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

电源shell 命令:-

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' 一样吗?

您不能将 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>