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