来自C#和#x27;该术语不被视为cmdlet';
我在从C#应用程序执行powershell命令时遇到问题。 我发现了很多与这个问题相关的东西,但没有一件能帮助我弄清楚到底发生了什么 所以我有一个小测试功能:来自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();
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
dirC:\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,帮了我大忙。