Я пытаюсь отправить сценарий 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
{
В строке ниже я получаю следующее исключение: Common Language Runtime обнаружил недопустимую программу.
PowerShell powerShellInstance = PowerShell.Create();
using (powerShellInstance)
{
powerShellInstance.AddScript(mstrMessage);
powerShellInstance.Invoke();
Console.WriteLine("Script executed.");
}
}
catch (InvalidProgramException)
{
throw;
}
}
}
Важными битами являются: A) какая версия System.Management.Automation.dll вы скомпилировали, B), какую версию.NET вы завершили, и C) какие версии PowerShell и.NET установлены на сервере.
Вероятно, ваш сервер работает с устаревшей версией PowerShell, поэтому то, что вы скомпилировали, отличается от того, что доступно на сервере.