Команды 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
,