Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自C#和#x27;该术语不被视为cmdlet';_C#_Powershell_Cmdlet - Fatal编程技术网

来自C#和#x27;该术语不被视为cmdlet';

来自C#和#x27;该术语不被视为cmdlet';,c#,powershell,cmdlet,C#,Powershell,Cmdlet,我在从C#应用程序执行powershell命令时遇到问题。 我发现了很多与这个问题相关的东西,但没有一件能帮助我弄清楚到底发生了什么 所以我有一个小测试功能: private void Button_Click_1(object sender, RoutedEventArgs e) { Runspace runspace = RunspaceFactory.CreateRunspace(); runspace.Open();

我在从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设置为unrestricted,并且具有相同的Powershell版本。 环境变量上的“路径”也相同

谢谢你的帮助

提前谢谢


保罗

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

两个系统上是否都存在可执行msg.exe?这取代了从Vista开始的“net send”,我相信这就是您的命令将要调用的。是的,如果我直接在powershell中键入命令,它工作正常。正如我所说,它发生在ths system32中的每个文件(msg、psexec、tscmd等)上。您是否正在创建自定义Cmdlet???这似乎就是问题所在。我尝试将comand用作“c:\windows\system32\msg.exe”,但也不起作用。但我已经将一些文件(如msg、psexec、tscmd等)复制到了“C:\windows\syswow64”中,它开始工作了。非常感谢Keith,帮了我大忙。