2013-08-01 86 views
6

關於有很多問題和回答,如何從C#代碼執行powershell腳本,但是我想知道runspace/pipeline 如何執行.ps1文件的執行C#運行空間/管道如何執行powershell腳本?

我問的上下文是這樣的: 我爲建立一個新網站的PowerShell腳本構建了一個基本的asp.net前端。它在IIS中創建站點,並設置wwwroot文件夾,日誌文件夾,AD用戶以及它需要的一切。當我在PowerShell中以管理員身份運行它時,它完美地工作。但是,當我通過C#管道運行它時,它會使用參數綁定異常中斷管道。

我沒有對這個特定問題的答案,我只是在尋找一個解釋如何管道執行我的文件,以便我可以更好地瞭解究竟是怎麼回事。

回答

1

您是否嘗試過使用ILSpy或打開課程Class View查看該課程的代碼?我一直這樣做,看看Microsoft如何實現一個特定的類。如果這是一個簡短的答案,我會在這裏粘貼代碼,但System.Management.Automation.Runspaces或Microsoft.Powershell命名空間有很多。仔細查看一下自己,您就可以清楚地看到Microsoft如何執行Powershell腳本。

希望這會有所幫助。

+0

感謝亞當,我給了它一個去,但它沒有提供任何額外的信息如何執行文件。大多數方法沿着這些方向: 'public Collection Invoke() {0121}使用(Pipeline._trace.TraceMethod()) return this.Invoke((IEnumerable)null); } public abstract Collection Invoke(IEnumerable input);' – harrietgrace

1

這不是關於運行空間如何工作的完整解釋,但是我已經覆蓋了主要位的written a blog post

另外,從one of the msdn pages on how powershell works一個片段:

的Powershell的運行時被調用的運行空間和將默認情況下, 過程同步命令和處理 的結果傳送到主機應用程序,以便它們可以返回給用戶。