2017-01-04 88 views
1

我對PowerShell的3個命令:清除PowerShell的流在C#

  shell.AddScript("Exit-PSSession"); 
      shell.AddScript("Invoke-Command -ComputerName something -ScriptBlock {some command}"); 
      shell.AddScript("Invoke-Command -ComputerName something -ScriptBlock {another command}"); 

現在我不需要從頭兩任何迴應,但我需要從第三個錯誤日誌。由於我無法預見可能發生多少錯誤,因此我希望至少清除所有錯誤消息中的shell,最好是完全空的shell

我的解決辦法是這樣的:

  shell.AddScript("Exit-PSSession"); 
      shell.AddScript("Invoke-Command -ComputerName something -ScriptBlock {some command}"); 
      shell.Invoke(); 
      shell.Streams.ClearStreams(); 
      shell.AddScript("Invoke-Command -ComputerName something -ScriptBlock {another command}"); 

但不知何故ClearStreams做什麼都沒有,shell仍然知道所有舊的錯誤和兩個以前的命令。

微軟方面沒有提供更多的信息,比這種方法存在,應該清除shell。 (Microsoft Help for ClearStreams)或Microsoft Help for streams in general

我錯過了什麼,還是我誤解他們

(PowerShell是5.0版)什麼和C#4.6中運行.NET框架

感謝提前的幫助。

+1

'ClearStreams'只爲給定的'PowerShell'實例清澈的溪流。它對連接的PowerShell「Runspace」('shell.Runspace')沒有任何作用。特別是,它對'Runspace'中的'$ Error'變量或歷史記錄沒有任何作用。 – PetSerAl

回答

2

您可以使用此:

powershell.Streams.Error();

樣品:

PowerShell powershell = PowerShell.Create(); 
powershell.Runspace = CreateRunSpace.runspace; 
var exec = "Set-Mailbox -Identity John -DeliverToMailboxAndForward $true -ForwardingSMTPAddress '[email protected]'"; 
powershell.AddScript(exec); 
powershell.Streams.Error.Clear(); 
powershell.Streams.Warning.Clear(); 
var result = powershell.Invoke(); 
MessageBox.Show(powershell.Streams.Error.Count().ToString()+" error counts"); 

foreach (var errorRecord in powershell.Streams.Error) 
{ 
MessageBox.Show(errorRecord.ToString()+"first - error"); 
} 

要求您發佈完整的腳本。什麼樣的對象外殼是。我認爲這將有一個方法.Clear()

注:我得到這個:

sh.Commands.AddScript( 「附加PSSnapin Microsoft.SystemCenter.VirtualMachineManager」); sh.Invoke(); sh.Commands.Clear();

能否請您檢查

+0

如果你正在使用'Type:System.Management.Automation.PowerShell',那麼你可以清除它 –

+0

好吧,我現在看到我的問題,我已經嘗試'shell.Streams.Error.Clear();',但因爲我didn '同樣不使用'Commands.Clear()',同樣的命令再次被調用,使得它看起來像'shell.Streams.Error.Clear();'沒有效果。 謝謝 – Etaila

+1

啊......有時候我也會發生這種情況:) @Etaila –