2013-02-14 71 views
0

我從c#程序調用Powershell腳本,得到PSObjects的集合,作爲pipeline.Invoke()的結果。作爲PS腳本的一部分,使用Net.Mail.SmtpClient發送電子郵件。但是,發送電子郵件需要一些時間,所以我將電子郵件發送代碼移動到使用Start-Jon -ScriptBlock執行的腳本塊中,然後問題就開始了:電子郵件未發送。當我從命令行執行腳本時,它會發送一封電子郵件。帶有從c調用的後臺作業的Powershell腳本#

什麼能是什麼原因?

+0

任何輸出或錯誤消息? – 2013-02-14 08:35:18

+0

不是。 'pipeline'不返回任何錯誤,腳本工作(從某種意義上說,它將處理後的數據返回給c#程序,只發送電子郵件。 – 2013-02-14 09:05:01

+0

您是否嘗試過運行一個「dumber」腳本,即只寫入參數/參數的腳本傳遞給文件而不是發送電子郵件。 – 2013-02-14 09:45:22

回答

1

實際上,在向代碼中添加Wait-Job(使其同步)之後,它再次運行。我想我明白了。 我在終止主機的代碼末尾調用了runspace.Close(),所以Powershell後臺作業沒有機會執行。所以我不幸地看錯了地方。