2014-02-13 18 views
0

我試圖發出在C#PowerShell命令改變在Microsoft Exchange保留策略,如:如何指定空值Powershell的-AddParameter

Powershell ps = Powershell.Create(); 
ps.AddCommand("Set-Mailbox); 
ps.AddParameter("-Identity", Identity); 
ps.AddParameter("-RetentionPolicy", PolicyName); 
...etc... 

這個偉大的工程,如果我有一個像PolicyName「公司默認政策「。一切都按預期工作。

但是,要刪除策略,命令行PowerShell命令看起來像:

PS> Set-Mailbox -Identity TypicalUser -RetentionPolicy $null 

如果我試圖通過 「$空」,並做到這一點:

ps.AddParameter("-RetentionPolicy", "$null"); 

...然後Powershell給我一個錯誤,「$ null不是保留策略的有效名稱」。

我也試過:

ps.AddParameter("-RetentionPolicy", null); 

...這混淆PowerShell的,因爲不是一個值。

我是否錯過了如何與Powershell交談的明顯問題?

+0

如果你不加參數都不要使用-? –

+0

哪個版本的Powershell? –

+0

Powershell的版本是2.0 – missioncritical

回答

0

的名義在C#例如: -

ps.AddParameter("RetentionPolicy", null); 
+0

現在這是奇怪的。我可以使用-RetentionPolicy和一個非空策略來設置一個策略,但是如果我想傳遞一個null,則必須將該參數放在不帶短劃線的位置,然後傳遞一個null。謝謝。 爲了記錄,這(Powershell)是一種真正的片狀語言... – missioncritical

+0

@missioncritical請記住,在C#中,您正在處理PowerShell引擎API。使用API​​,不需要使用'-'來描述參數名稱和值。 –

+0

再次感謝,我從來沒有想過這一點,因爲我們所有的其他例程都有-parametername,value,但是我們總是有一個文本值或true/false,但是直到現在,從不需要null。 – missioncritical

相關問題