0
我試圖使用.net NamedPipeServerStream在PowerShell中使用回調異步使用命名管道。PowerShell中使用回調的異步命名管道
我目前使用下面的代碼:
服務器端:
$myCallback = [AsyncCallback]{
"Connected"
}
$pipe = New-Object System.IO.Pipes.NamedPipeServerStream("alert", [System.IO.Pipes.PipeDirection]::InOut, 1, [System.IO.Pipes.PipeTransmissionMode]::Message, [System.IO.Pipes.PipeOptions]::Asynchronous)
$pipe.BeginWaitForConnection($myCallback, "alertCallback")
客戶端:
$pipe = new-object System.IO.Pipes.NamedPipeClientStream("alert");
$pipe.Connect(3000);
$sw = new-object System.IO.StreamWriter($pipe);
$sw.WriteLine("Test");
我首先調用服務器端代碼,它報告回調已成功註冊
AsyncState IsCompleted AsyncWaitHandle CompletedSynchronously
---------- ----------- --------------- ----------------------
alertCallback False System.Threading.ManualRese... False
只要客戶端代碼被調用powershell服務器腳本崩潰 - 不會拋出異常,只是我得到一個「Powershell已停止工作」窗口樣式錯誤框。我不知道爲什麼發生這種情況,我似乎無法從腳本中獲取任何異常或其他調試信息,以瞭解發生了什麼問題。如果我試圖做同樣的事情,一切都按預期工作。任何幫助深表感謝。
Windows中的任何日誌客戶端上的日誌? – ojf
不幸的不是。我一直在尋找事件日誌的Powershell部分,我可以看到我知道的異常條目,並且已經從以前編寫上述代碼的失敗嘗試中報告給控制檯,所以我認爲這是正確的地方。 – Nitr0UK
您可以使用sysinternals中的procdump讓它在發生異常時創建轉儲文件。像'procdump -ma -e 100''。在發生崩潰轉儲後,您可以開始使用WinDbg進行調查。 –