gpt4 book ai didi

c# - 从另一个自定义 cmdlet 运行许多自定义 C# PowerShell cmdlet

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:24 27 4
gpt4 key购买 nike

我试图从另一个自定义 cmdlet 运行我的自定义 PowerShell cmdlet。奇怪的是,我可以从 Windows Powershell 手动运行我的自定义 cmdlet 并且它有效,但是当我尝试触发相同的自定义 cmdlet 时它失败了。

Powershell

运行演示代码:

Run-Demo基本上是这样的:我知道它缺少参数,但“无论如何”它应该在 PowerShell 中找到 cmdlet。

                Command cmd = new Command("Run-ContentInventory");
Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();
Pipeline pipeline = runSpace.CreatePipeline();
pipeline.Commands.Add(cmd);
Collection<PSObject> output;
output = pipeline.Invoke();
foreach (PSObject psObject in output)
{
Console.WriteLine(psObject);
}

感谢您的帮助!

最佳答案

问题的核心是您正在创建一个新的运行空间,它不会加载您的 cmdlet。这是您应该避免的事情,因为它会占用大量内存,并在尝试同步两个运行空间时产生很多问题。

诀窍是使用管道。声明一个类型为 Pipeline 的私有(private)字段,然后在您的 BeginProcessing 中添加:

 pipeline = Runspace.DefaultRunspace.CreateNestedPipeline();

请在 EndProcessing 中处理嵌套管道。

在 processrecord 中,您的代码应该保持几乎相同。

关于c# - 从另一个自定义 cmdlet 运行许多自定义 C# PowerShell cmdlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com