【问题标题】:Invoking a x86 PowerShell Script from an x64 C# Application从 x64 C# 应用程序调用 x86 PowerShell 脚本
【发布时间】:2013-01-08 15:45:05
【问题描述】:

我查看了几个问题,但没有发现任何与我的情况相似的内容(据我所知)。

我有一个 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 会话,我将不胜感激。

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

【问题讨论】:

    标签: c# powershell x86 64-bit


    【解决方案1】:

    在您的 x64 C# 应用程序中运行脚本,启动作业以执行 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 检索结果。

    【讨论】:

    • 所以,在这种情况下,我试图在 Scriptblock 内触发一个 Cmdlet(我希望在这里提出正确的问题),这应该是 { Cmdlet-Name -Parameter Value } 吗?此外,这是否意味着我不需要添加命令,而只需添加一个脚本?
    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 2023-03-21
    • 2020-10-09
    • 2016-03-22
    相关资源
    最近更新 更多