2011-11-24 27 views
3

有沒有辦法做到這一點PowerShell的聲明在C#PowerShell的聲明在C#

$myvariable = New-PSSessionOption -SomeParameter -AnotherParameter -YetAnotherParameter 

我知道如何運行命令和添加參數(PowerShell.AddCommand等),但我想的東西,讓我做一個完整的陳述。

文檔確實顯示PowerShell類中存在'AddStatement'方法,但實際上並不存在。

還是我最好把它全部放在腳本中,而只是從我的C#中調用它呢?

感謝

+0

我認爲它是被纏繞的。基本上把它分解成一些個人電話。 Invoke方法返回一個PSObject的集合,這將是命令的結果,然後你可以將它們作爲參數/參數提供給下一個命令。 – Richard

+0

AddStatement在PowerShell v3中(仍在CTP中) – x0n

回答

2

的AddStatement僅在PowerShell中v3的CTP(這是不是生產準備好)

它比你想象的更簡單的實際。該行應被視爲腳本。腳本不一定意味着物理ps1文件。使用AddScript方法:

var ps = PowerShell.Create(); 
ps.Commands.AddScript("$myvariable = New-PSSessionOption ..."); 
ps.Invoke(); 
+0

謝謝,我沒有沒想到,只是使用它,運行良好。 – Richard

+0

只是爲了增加一點,我也在努力創建一個創建PSCredential對象的powershell腳本(通過C#)。這需要一個用戶名和密碼作爲構造函數參數,至少我不認爲你可以使用AddScript方法。你可以建立一個字符串,但密碼是一個SecureString對象,你不能建立成一個字符串 - 需要作爲對象本身來傳遞。但是,剛剛意識到API有一個名爲PSCredential的對象。您可以在C#中使用API​​(新PSCredential(「用戶名」,密碼)(密碼是之前PS調用的結果))構造。 – Richard