问题标签 [powershell-sdk]

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 回答
270 浏览

c# - 当前 PowerShell 实例的状态对于 C# 中的此操作无效

我有下面的方法,它被不同的 PS 脚本调用,我希望 PowerShell 对象只创建一次,为此我将 Powershell 对象设为静态(参见下面的代码)。但后来它给了我错误

当前 PowerShell 实例的状态对此操作无效。

我该如何处理?优化以下代码的最佳方法是什么?注意:如果我删除静态,下面的代码可以正常工作。

这是从这里调用的:

0 投票
1 回答
91 浏览

multithreading - 从运行空间内的模块调用函数

我想从运行空间调用的模块中有一些函数,但它不起作用。我假设我必须以某种方式将模块发送到运行空间。

下面的示例工作正常。

但是,如果我这样调用自己的函数,则 OutData 为空白。该功能在运行空间之外工作正常。

我需要做什么才能调用我的函数?

0 投票
0 回答
29 浏览

c# - 该术语未被识别为 cmdlet、函数、可运行程序或脚本文件

我正在尝试使用以下代码在远程机器上执行 powershell 命令:

StringToSecureString 方法列表:

我可以成功执行一些命令,如“get-process”或“get-service”。

但是有一些命令(例如“$env:username”)会引发下一个错误:

该术语未被识别为 cmdlet、函数、可运行程序或脚本文件。

但是如果我直接使用 powershell 连接,“$env:username”命令将成功执行:

还有一些其他命令未连接到我也无法执行的环境变量(CLI 应用程序命令无法使用代码或 powershell 工作)。

我是 powershell 和 WinRM 的新手,不知道出了什么问题。有谁知道原因?

0 投票
0 回答
252 浏览

c# - 在由 C# 应用程序启动的 powershell 脚本中设置代理

我有一个测试 .Net core 3.1 c# 控制台应用程序,它创建一个新的运行空间并运行一个 powershell 脚本。

测试 powershell 脚本的内容如下所示

如果这个 powershell 脚本是通过标准的 powershell 会话启动的,它会按预期工作,被重定向到 HTTP 代理并成功连接。但是,如果它是从 C# 应用程序中启动的,则一切正常,除了它没有被重定向到代理。

我不确定我在这里做错了什么。有没有更好的方法来实现代理覆盖?

0 投票
1 回答
236 浏览

c# - 如何使用 c# 执行 powershell 脚本并设置执行策略?

我试图结合stackoverflow的两个答案(第一个第二个

在我的 powershell 脚本中,我有以下参数:

但是,当我执行此操作时,会出现以下异常:

0 投票
1 回答
52 浏览

powershell - Powershell 7 SDK PSCmdlet - GetCmdlet 和 GetCommand 之间的区别

在我的第一个基于 C# 的 Powershell cmdlet 中,我遇到了如何从自定义 cmdlet 中运行“现有”cmdlet 的问题。一路上,我发现了以下内容:

  1. 编辑第一个返回一个CmdletInfo对象第二个CommandInfo对象
  2. GetCmdlet 有一个描述“返回与名称参数对应的 CmdletInfo 对象”
  3. GetCommand 没有描述,但是在网上搜索我在 Mirosoft 的网站上找到了以下内容“在工作流中调用 Microsoft.PowerShell.Core\Get-Command 命令的活动”

为什么存在这两种方法,我们使用哪种方法?

0 投票
0 回答
15 浏览

powershell - 基于 PowerShell 7.xc# 的模块 - InvokeScript - 从失败的调用脚本中检索输出

我已经成功地在 c# 中构建了一个 PowerShell cmdlet 来自动化我的构建过程,但一个问题是当我使用 InvokeScript 运行 npm 命令时。

上面的代码组合了一个 npm 命令,它将构建一个 Angular 应用程序。然后它切换到正确的目录并执行捕获输出的命令。如果将 -Verbose 添加到 cmdlet 执行中,我会将结果输出到窗口。

它运行良好,但由于某种原因,它不再导致构建 Angular 项目,当我进入代码时,invokeCommand.HasErrors 为假,结果 PSObject 集合为空。

我最终发现我已经更改了导致问题的 Angular 应用程序中的设置,但是我找不到一种在 cmdlet 中检索错误信息以将其输出到控制台窗口的方法,以便我至少知道这是怎么回事。

是否有不同的方法来执行脚本,以便我可以捕获所有反馈,无论好坏?

0 投票
0 回答
26 浏览

powershell - .NET 6 Web 应用程序上的 Powershell 执行引发异常

我有一个 ASP.NET MVC Web 项目,用于Microsoft.Powershell.SDK执行 PowerShell,它运行良好:

我将 Web 应用程序迁移到 .NET 6 并使用相同的调用,现在出现错误:

在模块“DhcpServer”中找到“Get-DhcpServerv4Scope”命令,但无法加载该模块。有关更多信息,请运行“导入模块 DhcpServer”

我尝试以这种方式在 .NET 6 控制台应用程序上对其进行测试,并且效果很好:

尽管当我尝试在网络应用程序中使用代码段 2 中的代码时,我得到了异常。在这种情况下,Web 应用程序与控制台应用程序有何不同?

System.Management.Automation.CommandNotFoundException:在模块“DhcpServer”中找到“Get-DhcpServerv4Reservation”命令,但无法加载该模块。有关更多信息,请运行“Import-Module DhcpServer”。

在 System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable 输入)
在 System.Management.Automation.Runspaces.Pipeline.Invoke()
在 System.Management.Automation.PowerShell.Worker.ConstructPipelineAndDoWork(Runspace rs, Boolean performSyncInvoke)
在System.Management.Automation.PowerShell.Worker.CreateRunspaceIfNeededAndDoWork(Runspace rsToUse, Boolean isSync)
在 System.Management.Automation.PowerShell.CoreInvokeHelper[TInput,TOutput](PSDataCollection 1 input, PSDataCollection1 输出,PSInvocationSettings 设置)
在 System.Management.Automation.PowerShell。 CoreInvoke[TInput,TOutput](PSDataCollection 1 input, PSDataCollection1 输出,PSInvocationSettings 设置)
在 System.Management.Automation.PowerShell.Invoke(IEnumerable 输入,PSInvocationSettings 设置)
在 System.Management.Automation.PowerShell.Invoke()

0 投票
0 回答
14 浏览

c# - PowerShell SDK 和执行策略

PowerShell SDK 的实例是否受系统级执行策略管理?

例如,

假设在不允许所有脚本执行的机器上存在一个组策略(将范围 MachinePolicy 的 ExecutionPolicy 设置为受限)。

在该框上的标准 PowerShell 会话中,将无法加载本地托管、已签名或未签名的脚本。

由 PowerShell SDK 实例化的运行空间是否也会绑定到这些设置?