簡體   English   中英

如何在不同的運行空間中運行功能,PowerShell

[英]How to run function in different runspace, PowerShell

我有為事件添加注冊的Powershell腳本,但是當事件跳轉時,每次事件跳轉時我都會收到以下錯誤:“沒有可用於在該線程中運行腳本的運行空間”我正在使用PS v2,可以我做? 你能提供一些代碼嗎? 謝謝

您是否在第三方PowerShell主機中? 那是個錯誤;)

如果您正在使用Async回調,那么問題是您正在其他線程中運行,並且[Runspace]::DefaultRunspace是線程靜態的。 @ x0n不久前為異步回調寫了一個橋(我看看是否能找到它)。

最重要的是,您需要執行錯誤所建議的操作:在System.Management.Automation.Runspaces.Runspace類型的DefaultRunspace屬性中提供一個。 但是您必須在要執行代碼的線程中執行此操作,因此異步回調的操作有點麻煩。

[Management.Automation.Runspaces.Runspace]::DefaultRunspace = [RunspaceFactory]::CreateRunspace()

聽起來您正在嘗試通過非異步回調在非Powershell線程上運行腳本。 這不是受支持的方案。 訣竅是“橋接”到回調基礎設施,其中腳本塊具有默認運行空間。 看看我在這里寫的內容:

https://web.archive.org/web/20190222052659/http://www.nivot.org/blog/post/2009/10/09/PowerShell20AsynchronousCallbacksFromNET

它向您展示了如何在Powershell中使用異步線程並如何運行腳本以響應回調。

-Oisin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM