PowerShell — различия между версиями
Hisava (обсуждение | вклад) м (→Область действия политики выполнения) |
Hisava (обсуждение | вклад) м (→Область действия политики выполнения) |
||
Строка 53: | Строка 53: | ||
a := [PowerShell Get-ExecutionPolicy > c:\1.txt] | a := [PowerShell Get-ExecutionPolicy > c:\1.txt] | ||
RunProcess( a ) | RunProcess( a ) | ||
+ | |||
+ | После этого на диске С будет сформирован файл 1.txt внутри которого и будет написана текущая политика выполнения для фабиуса. | ||
+ | |||
+ | Для просмотра всех областей действия в оболочке PowerShell введите команду Get-ExecutionPolicy -list | ||
+ | |||
+ | Scope ExecutionPolicy | ||
+ | ----- --------------- | ||
+ | MachinePolicy Undefined | ||
+ | UserPolicy Undefined | ||
+ | Process Undefined | ||
+ | CurrentUser RemoteSigned | ||
+ | LocalMachine RemoteSigned |
Версия 09:43, 10 декабря 2015
PowerShell - это достаточно мощное встроенное средство системы Windows
Для знакомства с этой оболочкой мы рекомендуем Вам прочитать книгу Андрея Попова "Введение в Windows PowerShell"
Из фабиуса можно запустить скрипт PowerShell следующим образом
RunProcess( 'PowerShell j:\1\test' )
Для работы сценариев для начала необходимо проверить, разрешено ли выполнение сценариев в PowerShell
Для этого выдаем команду
Get-ExecutionPolicy
Политика должна быть установлена в RemoteSigned
В любой папке, например, "j:\1\" создаем файл "test.ps1", в него запишем любой код, например
Start-Transcript "Hello world" Get-WmiObject Win32_OperatingSystem | Select-Object -Property LastBootUpTime
Запускаем скрипт RunProcess( 'PowerShell j:\1\test' ) в папке "Мои документы" видим результат
PowerShell_transcript.20151208165608
********************** Windows PowerShell Начало записи протокола Время запуска: 20151208165608 Имя пользователя : TD\Софтсервис7 Компьютер : TDSF (Microsoft Windows NT 5.2.3790 Service Pack 2) ********************** Транскрибирование запущено, выходной файл \\td.local\RootDFS\RemoteUsers\Users\ Софтсервис7\Мои документы\PowerShell_transcript.20151208165608.txt Hello world LastBootUpTime -------------- 20151125123816.355125+180 ********************** Windows PowerShell Конец записи протокола Время окончания: 20151208165608 **********************
Область действия политики выполнения
В начале этой статьи мы упомянули, что политика выполнения должна быть установлена в RemoteSigned, для возможности запуска скриптов. Для выполнения скрипта из фабиуса используется команда RunProcess( 'PowerShell ' + имя_сценария )
Но, оказывается, даже если вы установили политику в RemoteSigned, сценарии, запущенные из фабиуса, работать не будут.
Дело в том, что разрешение выполнения сценария действует на определенную область. Чтобы проверить, какие права установлены именно у приложения фабиус, нужно в фабиусе выполнить программу
local a a := [PowerShell Get-ExecutionPolicy > c:\1.txt] RunProcess( a )
После этого на диске С будет сформирован файл 1.txt внутри которого и будет написана текущая политика выполнения для фабиуса.
Для просмотра всех областей действия в оболочке PowerShell введите команду Get-ExecutionPolicy -list
Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser RemoteSigned LocalMachine RemoteSigned