Попытка запустить скрипт powershell в C # - PullRequest
3 голосов
/ 20 июня 2011

У меня есть сценарий PS, который добавляет правила брандмауэра.

Я использую Process.Start ("powershell.exe", "-File" + "\" C: \ Program Files (x86)) \ blah \ blah \ add-FirewallRule.ps1 \ "");

Эта команда отлично работает на моем локальном компьютере, но при тестировании я запускала программу на Windows Server 2008 R2, иPS скрипт не запустится.Он работает и работает нормально, если я запускаю его вручную из командной строки, но мой код не будет работать.Все пути к файлам верны (я уже проверил это, и коллега проверил это).Когда я запускаю код, консоль PS даже не появляется.

Есть предложения?

Ответы [ 3 ]

11 голосов
/ 20 июня 2011

Поскольку вы находитесь в C #, я бы рекомендовал использовать PowerShell Invoke API вместо Process.Start.API прост в использовании и, надеюсь, даст вам лучшее представление о том, что происходит не так.

3 голосов
/ 21 июня 2011

Оказывается, я не учитывал автоматическое перенаправление, вызванное запуском 32-разрядного приложения в 64-разрядной системе.Поэтому все, что мне нужно было сделать, - это зайти и установить соответствующую политику выполнения для 32-разрядной версии powershell.

0 голосов
/ 20 июня 2011

Вы пробовали работать от имени администратора? Я считаю, что Process.Start требует повышенных привилегий, которые недоступны, скажем, в режиме песочницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...