我查看了几个问题,并没有发现任何类似的东西足以适用于我的情况(从我能说的)。
我有一个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会话,我将非常感激。
编辑:一旦我解决了细节,我会用更正后的代码更新。
答案 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
检索结果。