PowerShell — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
м (Область действия политики выполнения)
м (Область действия политики выполнения)
Строка 44: Строка 44:
 
== Область действия политики выполнения ==
 
== Область действия политики выполнения ==
  
В начале этой статьи мы упомянули, что политика выполнения должна быть установлена в '''RemoteSigned''', для возможности запуска скриптов. Из
+
В начале этой статьи мы упомянули, что политика выполнения должна быть установлена в '''RemoteSigned''', для возможности запуска скриптов. Для выполнения скрипта из фабиуса используется команда RunProcess( 'PowerShell ' + имя_сценария )
 +
 
 +
Но, оказывается, даже если вы установили политику в RemoteSigned, сценарии, запущенные из фабиуса, работать не будут.
 +
 
 +
Дело в том, что разрешение выполнения сценария действует на определенную область. Чтобы проверить, какие права установлены именно у приложения фабиус, нужно в фабиусе выполнить программу
 +
 
 +
  local a
 +
  a := [PowerShell Get-ExecutionPolicy > c:\1.txt]
 +
  RunProcess( a )

Версия 09:40, 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 )