问题标签 [runspace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
527 浏览

c# - 使用 C# 在运行空间中创建远程 Powershell 会话并加载模块

我想连接到远程 powershell 会话并在运行空间中加载模块。

我使用此链接获得了连接部分:- 在 c# 中创建远程 powershell 会话?

如何在运行空间中加载模块并调用该模块中的其他命令?

谢谢你。

0 投票
1 回答
351 浏览

c# - 无法在 C# 中使用不同帐户同时执行两个 Office 365 命令

我正在尝试使用 C# 同时查询两个不同 Office 365 帐户的用户。从两个 Powershell Windows 尝试或通过代码连接并获取一个又一个帐户时,它工作正常。但是在同时使用代码时不起作用。

在检查时我发现从 C# 尝试时只生成一个日志文件。但是从 PowerShell 窗口尝试时会生成两个不同的日志文件。

日志文件夹位置:%userprofile%\appdata\Local\Microsoft\Office365\Powershell

这意味着从代码运行时,即使有两个运行空间,它也像使用单个 PowerShell 窗口运行一样工作。

主要方法代码:

连接并获取用户的方法:

0 投票
0 回答
987 浏览

c# - PowerShell 通过 C# - 异步 RunspacePool - 已添加密钥

长期潜伏者(尤其是在这个问题上)。我一直在研究这个网站上与我的问题直接相关的异步帖子,但我没有找到解决方案。我还尝试了以下代码的许多不同变体,但均无济于事。

发生的事情是我ps.BeginInvoke()在加载命令后异步执行,使用某种方法异步启动调用,它确实总是异步运行!但问题是(例如),执行的命令有时只会返回结果 10 次中的 2 次,有时 10 次中的 8 次。这是我正在执行的当前代码的示例:

我已经多次尝试不同的组合IASyncResult result = ps.BeginInvoke()并等待该命令,但它的结果与上面的代码相同。还尝试将其放入var task = Task.Factory.FromAsync(ps.beginInvoke(), p => ps.EndInvoke(p));样式块并添加到任务列表中,然后再次等待它们的所有执行.ConfigureAwait(false);......结果相同!

那么结果如何呢?命令全部执行,但在尝试不成功时,将引发以下异常:

否则,它会很快返回结果。

我认为问题在于 PowerShell 会话正在尝试写入相同的内部输出对象,尽管它正在执行为

1.) 它是自己的新 PowerShell 实例
2.) 在由 RunSpace 池管理的不同运行空间中。

每次运行脚本时,此错误至少发生一次。有时它实际上会吐出 10 个组结果中的 8 个,有时它只对 1 个有效。

我怎样才能阻止这种碰撞的发生?我怀疑 PowerShell 内部发生了一些事情导致这种情况发生。

0 投票
1 回答
1371 浏览

c# - 在 C# WPF 中保持 powershell 运行空间处于活动状态?

我正计划使用与 Exchange 服务器进行对话来构建Active Directory/Exchange管理控制台。C#powershellDC

我想在应用程序启动时建立powershell与这些服务器的连接,然后让它们保持活动状态,这样我就可以继续运行查询或脚本或其他任何东西,因为建立远程连接需要几秒钟的时间,而且这种情况根本行不通延迟你所做的一切。

我目前只是在测试一个本地powershell运行空间,但是每次我向它发送命令时它都会关闭,并且在初始命令之后我无法重用它。

如何防止runspace关闭,以便我可以一遍又一遍地使用它?

编辑:代码非常基本,只是创建一个运行空间,计划稍后在我完成基本功能时能够包含模块。这个想法是创建一个运行空间,并在调用执行 powershell 代码的函数时将该运行空间分配给另一个变量,以便我可以重用它,但我可能很愚蠢。目前我只有一个虚拟的“Get-Process”,当点击一个按钮和一个显示输出的文本框时发送。

0 投票
2 回答
692 浏览

powershell - 将 GUI 命令导出到 PowerShell 运行空间?

在托管 PowerShell 运行空间的 .NET 应用程序中,是否可以将主机应用程序功能导出到该运行空间,以便我拥有对我的 UI 产生影响的 PowerShell cmdlet?

我的目标只是能够从长时间运行的 PowerShell 脚本将进度消息报告回我的主机应用程序 UI(因为通过托管 PowerShell,我没有控制台窗口。)我想象的是:

C#:

电源外壳:

这可能吗?如果我做错了,很高兴听到不同的解决方案(事件?)

如何从应用程序中向 PowerShell 公开功能

Powershell 调用程序集委托

如何以编程方式将 PSCmdlet 添加到 Powershell 管道?

提供 .NET 方法作为委托回调

0 投票
0 回答
922 浏览

c# - C# start.process powershell 比原生 ps1 运行时间更长

我正在使用以下 C# 代码运行 PowerShell 脚本,该脚本在 C# 之外运行时会在一秒钟内运行,但在以下 C# 代码块中运行时间超过 9 秒。C# 代码在同一用户帐户下编译并作为 Windows 服务运行(通过whoami在 PowerShell 脚本中输出进行测试。)

PowerShell 脚本从如下文件夹加载函数:

任何人都可以指出为什么从 C# 中执行脚本时脚本如此缓慢的方向吗?

结果:(首先从 c# 运行本机第二个)

使用时性能得到了更好的分配:

我注意到生成的 powershell.exe 首先尝试了 *32 C:\Windows\SysWOW64\WindowsPowerShell\v1.0 但实际上是 32 位,而 system32 中的 powershell.exe 是 64 位?

现在的区别是:0.5 秒 vs 1.1 秒

任何进一步的性能提升器都非常感谢

0 投票
1 回答
1218 浏览

powershell - Powershell 'runspace' 不会从 Powershell 控制台运行

我试图了解为什么此代码将在 Powershell ISE 中运行,而不是在 Powershell 控制台中运行

从 ISE 运行它,您将获得 XAML 窗口出现的预期结果。保存文件并从控制台运行它,它会静默失败 将其复制并粘贴到控制台中,它会静默失败。

它包含一个带有同步哈希表的运行空间 因为它是 XAML,所以我将运行空间作为单线程单元启动。从控制台运行时尝试过 MTA 和 STA

目的是将这段代码用作启动屏幕的一部分。

0 投票
0 回答
1341 浏览

c# - Get-MailboxPermission 异常调用“GetSteppablePipeline”

运行以下 PoweShell 命令时出现异常:

例外:

使用“1”参数调用“GetSteppablePipeline”的异常:“找不到自定义属性“参数”的类型。
确保已加载包含此类型的程序集。”

紧随其后的是

这让我ParameterBindingException

找不到与参数名称“CommandName”匹配的参数。

这是我的代码的一部分: 我将把上面的命令executeRemoteCommand一一发送给所有用户。

0 投票
1 回答
513 浏览

powershell - 如何在主机控制台上显示运行空间子 powershell 对象流?

我有一些Powershell 对象(使用 创建[PowerShell]::Create())在我的 powershell 应用程序中充当线程。

如何在调用者的控制台上显示流数据(详细和错误流),在运行本身期间,而不仅仅是在线程终止之后?

0 投票
1 回答
279 浏览

c# - 从模块导入特定 cmdlet 以在 Runspacepool 中使用

在 C# 中,InitialSessionState 类提供了一种导入特定模块并使用“ImportPSModule”方法使其可用于运行空间池中的所有运行空间的方法。(但这会导入正在导入的模块中的所有 cmdlet)

要从模块中导入特定的 cmdlet,“Import-Module”命令接受参数“Cmdlet”,我们可以使用该参数仅从该模块导入特定的 cmdlet。如何在 Runspacepool 中实现此行为(仅从模块导入特定的 cmdlet)