您好,登錄后才能下訂單哦!
上一次的博客中我們介紹了最為基本的方法在應用程序中使用PowerShell引擎,當然這是最為簡單的使用方式雖然簡單當然也很有效,只不過不要忘記當不想再使用 RunspaceInvoke 實例的時候調用
實例的Dispose() 方法對其資源進行釋放,也許你也已經嘗試在你的應用程序中使用了這種方法
或許你也已經發現這中方法有一個巨大的問題 那就是通過簡單的代碼創建RunspaceInvoke 但是只能同步執行并且獲取結果,也許這種方式在一般情況下并不是什么大問題,在需要長時間的執行的腳本或者命令時候 Invoke()方法將會阻塞當前線程,使得你不得不進行長時間的等待,不得不說這點的確有點讓人不爽,我們之前說過選擇的簡單的辦法就要喪失其靈活性。
聰明的你似乎覺得我們今天的主題應該是異步運行了? 我不得不Say No 因為在討論異步運行之前還有很多事情要做。
So 你就應該知道我們今天討論的主題是如何開始初步的使用Runspace 和PipeLine
一般來說 如果想在應用程序中使用PowerShell 引擎 我們只要創建Pipeline 就可以完成
但是現在我們還不能創建因為這是依靠Runspace 實例的CreatePipeline() 方法創建
而現在我們都沒有創建Runspace 對象實例,Runspace 實例都要通過 RunspaceFactory 的靜態方法來創建并且在PowerShellV1 版本時候創的Runspace 實例都是Local Runspace 意味這你講不能創建基于遠程計算機會話的 Runspace 當然 V1版本已經太過久遠 我們已經無需思考這個問題
好了說了這么多 下面我們應該看實際代碼
事實上代碼簡單到可以非常容易的理解
我們使用了無配置的靜態方法創建了新的Runspace 對象 當然這是使用默認配置
緊接著 我們創建了管道,并且是一個完整的管道 因為我們給管道中放置了新的命令,
最后就像之前一樣我們使用Invoke執行了管道中的命令,
請注意創建管道前 Runspace 狀態要處于Opened 狀態 雖然此時依然可以創建管道但是系統會引發異常
同樣CreatePipeline 方法還有另外一個重載接受兩個參數
意思是當true 時候 命令將會記錄在命令歷史記錄中以方便使用Get-history 進行查找調用
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。