6

我有一个 Powershell 脚本,它存储在一个名为“script”的字符串中,内容如下:

get-user |  out-file C:\Users\user\Desktop\user.txt -append

我的 C# 代码:

RunspaceConfiguration runConfig = RunspaceConfiguration.Create();
                PSSnapInException psEx = null;
                runConfig.AddPSSnapIn("VMWare.View.Broker", out psEx);
                Runspace runspace = RunspaceFactory.CreateRunspace(runConfig);
                runspace.Open();
                Pipeline pipeline = runspace.CreatePipeline();
                pipeline.Commands.AddScript(script);
                Collection<PSObject> results = new Collection<PSObject>();
                results = pipeline.Invoke();
                runspace.Close();

如果我调试代码,我会得到以下异常:

No snap-ins have been registered for Windows Powershell Version 2

如果我手动运行脚本并添加管理单元,它工作正常

4

2 回答 2

5

该错误消息还意味着您正在尝试从 64 位 powershell 实例加载 32 位管理单元(反之亦然)。在您的情况下,您需要编译程序以定位正确的位:x86。AnyCPU 将默认为您机器的位数,即 64 位。

于 2011-11-24T18:42:09.177 回答
1

我有一个类似的问题......我试图从控制台应用程序执行自定义 powershell cmdlet。我确认我的控制台设置为 4.0 框架,并且 powershell 为 3.0。原来,问题是控制台的 bild 选项卡中的“首选 32 位”设置设置为 true。我取消选中它,一切正常!

于 2013-11-11T20:28:41.987 回答