问题标签 [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.
multithreading - 为什么我无法 Dispose of Runspace?
因为我的雇主不想使用已编译的软件,所以他们要求我创建一个 GUI,使用 PowerShell 并行 ping 一系列设备。我的 PowerShell 脚本由一个表单和该表单上的一个按钮组成,用于 ping 设备。为了防止 GUI 锁定,我使用运行空间将 ping 卸载到单独的线程。我可以 ping 设备并使用运行空间中的信息更新表单,但是当我完成应用程序时,我无法关闭/处置运行空间,因此即使在应用程序退出后它也会继续运行。
下面提供的函数 ping localhost 10 次,并将结果添加到 GUI 中的 ListView。
关闭应用程序时出现的错误是
我认为这个问题正在发生,因为运行空间正在执行,但它在它没有运行时也会发生。但是,当它全部耦合在这样的同一个函数中时,它会成功关闭且没有错误
我怎样才能让运行空间在它所在的同一个函数之外释放它的所有资源?
wpf - WPF 运行空间使用 powershell 版本 2 崩溃
我正在编写一个 powershell 脚本,它安装了各种驱动程序。
我的脚本工作正常,所以我想使用 WPF 添加一个 gui。首先,我使用 WPF 创建了一个 gui,没什么特别的,只是一个带有标签的窗口。
我想从我的安装脚本中更新这个标签。所以我创建了两个运行空间,一个创建并显示 WPF gui,另一个执行我的安装脚本。只要我使用的是 powershell 版本 3 或更高版本,它就可以正常工作。使用 powershell 2,我不得不在新的 Windows 7 安装中使用它,wpf 运行空间崩溃了。
我希望有一种方法可以使用 powershell 版本 2。
这是一个示例脚本,演示了我在做什么。
c# - 远程 PowerShell 连接脚本适用于交换 PS,但不适用于 windows PS
我编写了一个函数来与 Exchange Shell 进行远程交互。现在我想将它用于普通的 Windows PS。所以我将 Shell Uri 更改WSManConnectionInfo
为http://schemas.microsoft.com/powershell/Microsoft.PowerShell
.
该函数现在看起来像这样:
如果我现在运行这个函数,我会得到错误:
WS-Management 服务无法处理该请求。在 WS-Management 目录中找不到资源 URI ( http://schemas.microsoft.com/powershell/Microsoft.PowerShell )。目录包含描述资源或逻辑端点的元数据。
该函数现在看起来与 SO、CodeProject 和 MSDN 上的其他同类函数几乎相同。ShellUri 也是正确的。
然后我尝试了另一种形式WSManConnectionInfo
可悲的是,这也不起作用。
我关闭了两个防火墙(来自客户端和成员服务器)并重新启动了我能想到的所有相关服务(RPC、IIS、WS-Management)这应该不是问题,因为脚本可以与 Exchange PS 交互。
是否有可能我需要定义更多的东西或者我需要其他的PSCredentials
?
提前感谢您的任何共同想法。
powershell - 使用 foreach-parallel 在运行空间中添加 PSsnapin
我使用功能foreach-parallel运行许多脚本块,如运行空间,第一个加载管理单元正确,但接下来都返回 2 错误
我的错误是:
add-PSSnapin :已添加具有相同键的项目
get-qadUser : 函数不存在
csv - RunSpacePool 哈希表查找
我正在整理一个 powershell 脚本,它将使用 RunSpacePools 输出一个包含 1)ServerName、2)SCCM 维护窗口、3)PingCheck、4)LastRebootTimestamp 的 CSV 文件。
通过使用这个惊人的答案,我得到了一些工作,但我的 CSV 文件有空行,我坚持将 SCCM 维护窗口放入 CSV。
我不确定如何完成 SCCM 维护窗口查找然后将其添加$Job.Result
到$ScriptBlock
空白 CSV 行是,,
,有些行没有额外的空白行。
-edit,我现在的想法是执行 SCCM 窗口查找,然后简单地将其作为另一个参数/参数传递到 runspacepool。
csv - RunSpacePool 输出 CSV 包含空白行
我正在使用这个惊人的答案并让 RunSpacePools 输出一个 CSV 文件,但我的 CSV 文件有空白行,我只是无法弄清楚空白行的来源。
空白行在记事本中显示为,,,
powershell - 在独立运行的 Powershell 脚本之间传递信息
抱歉之前是工资。我会再尝试:
情况太复杂无法解释,但基本上问题是:
- 如何将字符串(最多 20 个字符)从一个脚本传递到在同一台机器上运行的另一个脚本。
- 两个脚本在后台连续运行,在同一台机器上,在同一用户上下文下,但不能合并。
- 我不能在另一个中点源一个脚本。
我通过让一个脚本在另一个脚本监视的目录中创建一个包含字符串的文件来完成它。因此,当它出现时,另一个脚本会读取信息。它有效,但感觉“脏”。:)
我想知道是否有一种“最佳实践”——在脚本之间传递信息的方式,或者至少是一种更优雅的方式。
谢谢。
performance - 将 powershell 脚本转换为运行空间
我编写了一个快速脚本来查找一个用户列表 (TEMP.txt) 中的用户在另一个用户列表 (TEMP2.txt) 中的百分比。它工作了一段时间,直到我的用户列表超过了 100,000 个左右……太慢了。我想将其转换为运行空间以加快速度,但我失败得很惨。原来的脚本是:
抱歉,我还是 powershell 的新手。
powershell - 如何在召回之前停止powershell运行空间
我在 powershell GUI 上有一个项目列表,当我单击一个时,我调用相同的运行空间$runspace.BeginInvoke()
但是,如果我快速单击第二个项目的第一个实例正在进行中。我停止它($runspace.stop()
和$runspace.dispose()
)berore 回忆我的运行空间。
但有时我的 GUI 在Stop()
和之间失败dispose()
。我只能假设这个方法不好
c# - 在运行空间中执行 PS 命令的代码是否需要锁定?
一个 Java 人正试图通过深入研究一些现有的 C# 代码来学习一些 C#,使用 PowerShell 检查用户凭据。
我试图理解的下面的代码是在可能的性能问题的背景下。
下面的方法 ,CheckCredentials()
经常被调用,并且似乎被卡住了很长一段时间,60 秒甚至更长时间。当然,我的第一个嫌疑人是lock()
角色。我不明白为什么需要锁,如果是的话。
根据文档,InitialSessionState.CreateDefault()
并且RunspaceFactory.CreateRunspace()
是线程安全的,因为它们是公共静态方法(此处和此处的相关部分)
方法中使用的所有对象都是重新创建的;唯一的共享变量是_lock
(我不确定它为什么会存在)和modulePath
. 所以,本质上,只有modulePath
可以被多个线程访问。但是,这似乎不是问题。它只是一个路径,代码正在导入一个 PS 模块。
我的问题是:下面的代码是否需要“锁定”?