问题标签 [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 回答
2549 浏览

c# - 在 Web 应用程序中托管 powershell 运行空间

我正在编写一个执行 powershell 脚本(活动目录、目录管理等)的 Web 服务。

现在,Runspace实例是根据 Web 请求创建的。由于 Runspace 初始化是一项耗时的操作,而且我经常需要导入模块,例如 ActiveDirectory,这些操作也很慢。

在这篇博客文章使用 C# 管理 Exchange 2007 收件人中,运行空间实例保存在静态字段中。

我徘徊如果我将 Runspace 实例保留在静态字段中,它会是线程安全的吗?也许这样做还有其他缺点?

谢谢

0 投票
3 回答
125 浏览

algorithm - 运行空间分析

关于算法+O、+Theta、+Omega等的运行空间分析,我可以阅读任何材料吗?我正在学习的数据结构和算法课程需要帮助。

0 投票
1 回答
491 浏览

c# - C# 应用程序调用的 Powershell 脚本

我有这个 powershell 脚本(test1.ps1)调用另一个 powershell 脚本(test2.ps1)来完成这项工作。

两个脚本文件都在同一个文件夹中

测试1.ps1

测试2.ps1

当我在 C# 中通过创建运行空间、向管道添加命令并调用它来调用 test1.ps1 时,我收到一条错误消息,指出 “术语 '.\test2.ps1' 未被识别为 cmdlet、函数、脚本文件的名称, 或可运行的程序。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。”

0 投票
1 回答
2761 浏览

powershell - PowerShell:RunSpace.SessionStateProxy.SetVariable 未设置变量

控制台应用程序:

P.ps1

我希望“Var1:Alex”被写入我的日志文件,但我得到“Var1:”。

我做错了什么?

编辑:

我原来的问题是在以下网站上:http: //nugetter.codeplex.com/workitem/31555

0 投票
3 回答
8657 浏览

powershell - 如何在 powershell 中使用运行空间建立和进入远程会话

我正在尝试在 C# 代码中从我的机器 A 与远程主机 B 建立会话。我正在为此使用运行空间 API。下面提供了代码片段

此代码预计将进入与机器 TS-TEST-09 的会话并调用该机器上现有的脚本 helper.ps1(该部分在当前代码中被注释掉,因为我无法进入与远程主机的会话)。

现在的问题是我无法使用 -Session 参数进入会话 $s(在 scripttext3 突出显示)但是我可以使用 -Computername 参数进入它。

在 scripttext3 中使用 -Session 参数时出现的错误是:

在调用System.Management.Automation.Internal.Host.InteralHost.GetIHostSupportsInteractiveSession()

在调用System.Management.Automation。Internal.Host.InteralHost.PushRunspace(运行空间运行空间)

在 Microsoft.Powershel.Commands.EnterPSSessionCommand.ProcessRecord()

在 System.Management.Automation.Cmdlet.DoProcessRecord()

在 System.Management.Automation.CommandProcessor.ProcessRecord()

内部异常堆栈跟踪结束


这是否意味着我必须编写一个自定义 PSHost 并使用此参数添加对 Enter-PSSession cmdlet 的支持?

有没有其他方法可以使这个命令起作用?

任何帮助都感激不尽。

谢谢,

马尼什

0 投票
1 回答
1739 浏览

c# - 具有运行空间模拟的 MVC 控制器

尝试使用模拟从 MVC 3 控制器执行 Powershell cmdlet,但一直收到“不允许请求的注册表访问”。调用 Runspace.Open() 时出现异常

调试显示注册表错误是由于在 HKCU\Environment 上尝试读取注册表项所致。在没有模拟的情况下运行上述成功。

注意:在此处找到模拟类:http: //platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/

关于为什么会发生这种情况或可以做些什么来解决它的任何想法?

更新:

睡了一会儿后,我推断将 Runspace.Open() 移动到模拟行上方将允许运行空间访问所需的注册表数据(环境变量),这确实有帮助。

现在代码可以与内置的 cmdlet 一起正常工作,但是当我加载“Microsoft.Exchange.Management.PowerShell.Admin”并尝试任何 Exchange Cmdlet 时,应用程序就会崩溃。

0 投票
2 回答
5643 浏览

c# - Powershell 运行空间 Enter-PSSession

我正在编写一个程序,它将在远程机器上运行一个程序。我已经安装了 windows sdk 并成功上传了我的文件,现在我想远程运行更改目录并使用 power shell 执行命令。

程序编译并运行,但在 answer 变量中显示:“方法或操作未实现。\r\n”

我尝试在管道中使用另一个命令,但它也失败了,但没有错误输出。

0 投票
2 回答
1345 浏览

c# - PowerShell 说 '%' 和 `New-Object` 没有找到。我错过了进口吗?WinRM 或 Exchange 角色权限?

假设我已经将 IIS 配置为允许“完整”的远程运行空间,我该如何解决我在 Powershell 说找不到“%”时遇到的异常。

然后当我注释掉有问题的for..each语句时,它说找不到新对象。

我错过了进口吗?根据评论,我可能缺少 WinRM 中的某些配置或 Exchange 2010 角色权限。

0 投票
1 回答
6838 浏览

c# - 在 C# 运行空间中的不同远程服务器上运行远程 Powershell 脚本

我需要能够通过 C# 运行空间针对另一台远程计算机执行驻留在远程计算机上的 PS1 脚本。

要明确我的意思:我正在创建的服务驻留在服务器 A 上。它使用以下方法为服务器 B 创建一个远程运行空间。通过运行空间,我试图针对服务器 B 调用驻留在服务器 C 上的脚本。如果有帮助,当前服务器 A 是服务器 C,但不能保证总是如此。

这是我用来进行远程调用的方法:

“remoteScript”设置为我要运行的 Powershell 脚本。例如:

如果我在要运行脚本的远程机器上,在 powershell 控制台中,我可以给出以下命令:

但是,如果我尝试通过 c# 运行空间运行它,这将拒绝为我工作。

如果我将以下内容作为参数发送到“remoteScript”:

我收到以下错误:

术语“\remoteserverC\PathToScript\Install.ps1”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

我尝试过使用和不使用“&”以及使用和不使用参数。我已经可以调用直接驻留在远程计算机上的脚本“c:\...\Install.ps1”而不是“\\remoteserver\...\Install.ps1”,但是如果能够直接调用远程脚本。

我在 google 和 stackoverflow 上搜索了很多页面,但我找不到任何有助于克服这个问题的东西。任何帮助,将不胜感激!谢谢!

0 投票
3 回答
4047 浏览

c# - 在 C# 运行空间中的远程服务器上导入 Powershell 模块

我需要能够通过 C# 运行空间导入驻留在远程机器上的模块。

要明确我的意思:我正在创建的服务驻留在服务器 A 上。它使用以下方法为服务器 B 创建一个远程运行空间。通过运行空间,我试图在服务器 B 上导入一个模块。

这是我用来进行远程调用的方法:

“remoteScript”设置为我要运行的 Powershell 脚本。例如:

该模块没有打包在一起,它是一个 psd1、psm1 和一堆脚本文件,它们位于远程服务器(服务器 B)上的 C:\\Powershell\ModuleName 中,我已经测试并确保它正在调用 ModuleName。 C:\\Powershell\ModuleName 目录中的 psd1 文件。

ModuleName.psd1 文件中包含以下行:

但是,如果我尝试通过 c# 运行空间运行它,我会收到一个非常奇怪的错误。

如果我将以下内容作为参数发送到“remoteScript”:

我收到以下错误:

System.Management.Automation.RemoteException:处理“ModuleName.psm1”的模块,列在模块清单“C:\Powershell\ModuleName\ModuleName.psd1”的字段“ModuleToProcess”中,因为在任何模块中都找不到有效的模块模块目录。

该模块确实存在于 "$env:PSModulePath 位置之一,并且在您运行时会显示:

我还尝试在 psd1 文件中放入 ModuleName.psm1 文件的完全限定路径。当我这样做(或下面的 x0n 所建议的)时,我得到几乎完全相同的错误:

未处理模块清单“C:\Powershell\ModuleName\ModuleName.psd1”的“ModuleToProcess”字段中列出的用于处理“C:\Powershell\ModuleName\ModuleName.psm1”的模块,因为在任何模块中都找不到有效模块目录。

在这一点上,我真的不确定去哪里,或者即使这实际上是可能的。我到处搜索,发现了一些看似相关的东西,但从来都不完全相同,往往是我已经克服或(据我所知)还没有遇到的问题。任何帮助,将不胜感激!谢谢!