2017-05-04 43 views
1

我正在使用power shell調用CIM方法。方法的參數是這樣的將XML文件傳遞爲輸入使用powershell的Invoke-CimMethod中的參數

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

您不能直接通過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> 
+0

感謝您輸入!.root元素'root'和子元素(field1,field2)可能因不同的xml文件而改變。我想要有分析xml文件並創建poweshell對象的泛型代碼。 XML結構保持不變(單層),但子元素將是field1,field2,field3等 –

相關問題