2012-01-24 38 views
0

的powershell響應我有從C#2個執行的powershell腳本我使用第一列表消息使用IMAP cmdlet和第二腳本,其對特定的消息的圖。無論從PowerShell的成功執行,第二屆一個我試圖提取附件,我看到一組數據輸出到像這樣的控制檯...不確定如何處理在.NET

Sent from my iPhone 
    ------=_NextPart_000_0027_01CCDAA7.399EBE00 
    Content-Type: image/jpeg; name="photo.JPG" 
    Content-Transfer-Encoding: base64 
    Content-Disposition: attachment; filename="photo.JPG" 

    /9j/4QH6RXhpZgAATU0AKgAAAAgACgEPAAIAAAAGAAAAhgEQAAIAAAAHAAAAjAESAAMAAAABAAYA 
    AAEaAAUAAAABAAAAlAEbAAUAAAABAAAAnAEoAAMAAAABAAIAAAEyAAIAAAAUAAAApAITAAMAAAAB 
    AAEAAIdpAAQAAAABAAAAuIglAAQAAAABAAABZgAAAABBcHBsZQBpUGhvbmUAAAAAAEgAAAABAAAA 
    SAAAAAEyMDA5OjA5OjIwIDE1OjEwOjU1AAAKgp0ABQAAAAEAAAE2kAAABwAAAAQwMjIxkAMAAgAA 
    ABQAAAE+kAQAAgAAABQAAAFSkQEABwAAAAQBAgMAoAAABwAAAAQwMTAwoAEAAwAAAAEAAQAAoAIA 
    BAAAAAEAAAZAoAMABAAAAAEAAASwpAYAAwAAAAEAAAAAAAAAAAAAAA4AAAAFMjAwOTowOToyMCAx 

所以看來一切都很好,到目前爲止 - 除了有我相信在功能結果上的差異儘可能從powershell的流/管道?

第一個返回PSObjects的集合被稱爲像這樣

  PowerShell ps = PowerShell.Create(); 
      ps.Runspace = runspace; 
      ps.AddScript(script); 
      ps.Invoke(); 

      foreach (PSObject result in ps.Invoke()) 
      { 
       dynamic val = result.BaseObject; 
      } 

的第二腳本執行,而無需使用調用(錯誤),但是試圖通過檢索數據爲每個或

dynamic xx = ps2.Invoke(); 

xx是空的;

我想,也許我需要使用的BeginInvoke和異步調用,所以我嘗試

static dynamic GotMail(dynamic o) 
    { 
     return o; 
    } 

    delegate dynamic SomeDelegate(dynamic o); 

    and attempted to use like so.. 

      SomeDelegate sd = GotMail; 
      IAsyncResult ar = ps2.BeginInvoke(); 


      dynamic val2 = sd.EndInvoke(ar); 

,我收到「異步結果對象爲空或意外的類型。」我甚至沒有將參數傳遞到powershell腳本中......一切都是硬編碼的 - 我從powershell成功運行的腳本正是我從.NET執行的腳本

對此非常感謝的任何建議。

謝謝

回答

1

您通過兩次調用Invoke()來調用腳本兩次。刪除第一個要進行的調用例如爲:

 
PowerShell ps = PowerShell.Create(); 
ps.Runspace = runspace; 
ps.AddScript(script); 
//ps.Invoke(); 
foreach (PSObject result in ps.Invoke()) { 
    dynamic val = result.BaseObject; 
}