来自C#的Powershell命令'该术语不被识别为cmdlet'

时间:2013-11-28 18:41:14

标签: c# powershell cmdlet

我在从C#应用程序执行powershell命令时遇到问题。 我发现很多与这个问题有关的事情,但没有一个能帮助我弄清楚可能发生的事情。

所以我有这个小测试功能:

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
            Runspace runspace = RunspaceFactory.CreateRunspace();

            runspace.Open();

            Pipeline pipeline = runspace.CreatePipeline();
            pipeline.Commands.AddScript("msg * test");

            pipeline.Invoke();

            runspace.Close();
    }

问题在于,在某些计算机中它可以正常工作,但在其他计算机中,我收到的消息是“术语'msg'未被识别为cmdlet,函数等。” 这种情况发生在c:\ windows \ system32中存在的每个可执行文件中。 当我使用像'Get-Process'这样的cmdlet时,它可以正常工作......

我现在正在两台计算机上进行测试,两台计算机都将ExecutionPolicy设置为不受限制,并且它们具有相同的Powershell版本。 环境变量的“路径”也是一样的。

感谢任何帮助。

提前致谢。

圣保罗

1 个答案:

答案 0 :(得分:3)

您是如何编译C#应用程序的?如果它被编译为x86平台,那么它将使用虚拟化System32目录C:\windows\syswow64并且该目录中没有msg.exe。您可以A)编译为x64或B)使用路径C:\windows\sysnative\msg.exe