Power Shell from Windows Service

Некоторые особенности с организацией вызова PowerShell на WindowsServer 2008R2, для выполнения произвольного скрипта

1) Ставим PowerShell, через стандартную установку Features для WindowsServer, далее пишем примерно такую функцию
2) Важно, что ей можно передовать разовые команды, а можно имя файла, который нужно исполнить, для этого useScript ставим в true.
3) Вторая особенность неочевидна, так как PS выполняется в отдельном потоке под .Net 2.0 , а у вас .Net 4.0, то все токены прав потеряются, во избежание этого вы в приведенной выше функции указываем исполнять PS в том же потоке, что и текущий код (runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;).
4) Следующей командой важно разрешить выполнение скриптов в отдельном файле. Так как по умолчанию это запрещено (scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted");).
5) И в завершение важно помнить, что PS выполняется с рабочей директорией System, которая отлична от вашей текущей, поэтому все относительные пути в файле скрипта могут не работать.


Метки: Code | microsoft


Добавить комментарий



biuquote
Loading


Кто я?

Программист. Я слежу за блогосферой и знаю, как будет развиваться интернет. Когда у меня есть время я даже прилагаю для этого усилия. Подробнее

Последние комментарии

Topbot at FeedsBurner