从x64 C#应用程序调用x86 PowerShell脚本

时间:2013-01-24 19:12:18

标签: c# powershell x86 64-bit

我查看了几个问题,并没有发现任何类似的东西足以适用于我的情况(从我能说的)。

我有一个x64应用程序(我无法根据设计要求更改架构),它需要在x86架构下调用PowerShell脚本。

var runspaceConfiguration = RunspaceConfiguration.Create();    
var runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();

var pipeline = runspace.CreatePipeline();

var myCommand = new Command(@"MY-COMMAND");
myCommand.Parameters.Add("Path", @"C:\");

pipeline.Commands.Add(myCommand);

return pipeline.Invoke();

如果有人能告诉我如何从C#开始x86-PowerShell会话,我将非常感激。

编辑:一旦我解决了细节,我会用更正后的代码更新。

1 个答案:

答案 0 :(得分:7)

在x64 C#app中运行脚本,启动作业以执行32位脚本。请务必使用-RunAs32上的Start-Job开关。这将需要PowerShell 2.0或更高版本。

pipeline.Commands.AddScript("Start-Job -Scriptblock { My-Command.exe -Path C:\ } -Name MyCommandJob -RunAs32");

您需要使用Receive-Job -Name MyCommandJob检索结果。