如何在不同的运行空间中运行函数,PowerShell

Posted

技术标签:

【中文标题】如何在不同的运行空间中运行函数,PowerShell【英文标题】:How to run function in different runspace, PowerShell 【发布时间】:2010-09-07 11:54:02 【问题描述】:

我有向事件添加注册的 powershell 脚本,但是当事件跳转时,每次事件跳转时我都会收到以下错误: “没有可用于在此线程中运行脚本的运行空间” 我正在使用 PS v2,我该怎么办? 你能提供一些代码吗? 谢谢

【问题讨论】:

【参考方案1】:

听起来您正在尝试在非 powershell 线程上运行脚本,可能是通过异步回调。这不是受支持的方案。诀窍是“桥接”回调到事件基础设施,其中脚本块有一个默认的运行空间。看看我在这里写的:

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

它向您展示了如何在 powershell 中使用异步线程并运行脚本以响应回调。

-奥辛

【讨论】:

【参考方案2】:

您是否在第三方 PowerShell 主机中?这是一个错误;)

如果您在处理异步回调,问题是您在不同的线程中运行,而[Runspace]::DefaultRunspace 是线程静态的。 @x0n 不久前为异步回调写了一个桥接器(我会看看能不能找到它)。

底线,您需要按照错误提示执行操作:在 System.Management.Automation.Runspaces.Runspace 类型的 DefaultRunspace 属性中提供一个。但是你必须从代码将要执行的线程开始,所以异步回调有点粗糙。

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

【讨论】:

以上是关于如何在不同的运行空间中运行函数,PowerShell的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中,如何给函数分配内存?

如何在并行 Scala 中运行不同的函数

kubernetes pod重新调度,部署到不同的命名空间后会在不同的节点上运行。

如何在Rancher上运行无服务器应用程序

如何使用不同的参数异步运行很多函数?

在 Node.js (React) 中更改为不同的页面/组件时如何运行不同的 SQL 函数?