Команды Powershell из C# "термин не распознается как командлет"

У меня проблема с выполнением команд powershell из приложения C#. Я нашел много вещей, связанных с этой проблемой, но ни одна из них не помогла мне понять, что происходит.

Итак, у меня есть эта маленькая тестовая функция:

    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 "не распознается как командлет, функция и т. Д.". Это происходит с каждым исполняемым файлом, который существует в c:\windows\system32. Когда я использую командлет типа "Get-Process", он работает нормально...

Сейчас я тестирую на двух компьютерах, на обоих из них установлена ​​опция ExecutionPolicy без ограничений, и у них одинаковая версия Powershell. "Путь" в переменных среды тоже одинаков.

Ценю любую помощь.

Заранее спасибо.

Пауло

1 ответ

Решение

Как вы компилируете свое приложение на C#? Если он скомпилирован как платформа x86, он будет использовать виртуализированный System32 реж C:\windows\syswow64 и в этом каталоге нет msg.exe. Вы можете либо A) скомпилировать как x64, либо B) использовать путь C:\windows\sysnative\msg.exe,

Другие вопросы по тегам