CLR检测到带有powershell的无效程序

本文关键字:无效 程序 powershell 检测 CLR | 更新日期: 2023-09-27 18:20:40

我正试图将Powershell脚本发送到服务器并执行它。服务器收到了该脚本,但当我试图创建PS实例时,它崩溃了。我已经四处寻找模拟案例,但大多数时候似乎都是特定的。

public void processMsg(TcpClient client, NetworkStream stream, byte[] bytesReceived, int length)
        {    
            mstrMessage = Encoding.ASCII.GetString(bytesReceived, 0, bytesReceived.Length);
            mscClient = client;
            mstrMessage = mstrMessage.Substring(0, length);
            Console.WriteLine(mstrMessage);
            if (mstrMessage.Length > 8)
            {
                if (mstrMessage.Substring(0, 8) == "%SCRIPT%")
                {
                    Console.WriteLine("Script recieved.");
                    try
                    {
  • 在下面的行中,我得到了以下异常:公共语言运行时检测到一个无效程序。

                        PowerShell powerShellInstance = PowerShell.Create();
                        using (powerShellInstance)
                        {
                            powerShellInstance.AddScript(mstrMessage);
                            powerShellInstance.Invoke();
                            Console.WriteLine("Script executed.");
                        }
                    }
                    catch (InvalidProgramException)
                    {
                        throw;
                    }
                }
            }
    

CLR检测到带有powershell的无效程序

重要的部分是:A)您使用哪个版本的System.Management.Automation.dll进行编译,B)您使用什么版本的.NET完成编译,以及C)服务器上安装了什么版本的PowerShell和.NET。

您的服务器可能运行的PowerShell版本已过时,因此您编译的内容与服务器上可用的内容不同。