使用 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>
我正在使用电源 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>