2013-01-24 47 views
4

我查看了幾個問題,但沒有發現任何足夠類似以適用於我的情況(從我所知道的情況)。從x64 C#應用程序中調用x86 PowerShell腳本

我有一個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會話,我將不勝感激。

編輯:我會在更正此問題後,更正此問題。

回答

8

在啓動作業以執行32位腳本的x64 C#應用程序中運行腳本。請務必使用Start-Job上的-RunAs32開關。這將需要PowerShell 2.0或更高版本。

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

您需要使用Receive-Job -Name MyCommandJob檢索結果。

+0

因此,在這種情況下,我試圖在Scriptblock內部觸發一個Cmdlet(這裏是我希望我提出的正確問題),這應該是{Cmdlet-Name -Parameter Value}嗎? 此外,這是否意味着我不需要添加命令,而只需一個腳本? –

+0

這是正確的。 –

相關問題