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

Материал из Фабиус wiki
Перейти к: навигация, поиск
м
м (Область действия политики выполнения)
 
(не показаны 24 промежуточные версии этого же участника)
Строка 1: Строка 1:
PowerShell - это достаточно мощное встроенное средство системы Windows
+
[[PowerShell]] - это достаточно мощное встроенное средство системы Windows
 
+
= Редактор реестра =
Для знакомства с этой оболочкой мы рекомендуем прочитать книгу Андрея Попова "Введение в Windows PowerShell"
+
Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell
 
+
EnableScripts
 +
1
 +
ExecutionPolicy
 +
RemoteSigned
 +
= Знакомство =
 +
Андрей Попов "Введение в Windows PowerShell"
 
Из фабиуса можно запустить скрипт PowerShell следующим образом
 
Из фабиуса можно запустить скрипт PowerShell следующим образом
 
 
   RunProcess( 'PowerShell j:\1\test' )
 
   RunProcess( 'PowerShell j:\1\test' )
 
 
Для работы сценариев для начала необходимо проверить, разрешено ли выполнение сценариев в PowerShell
 
Для работы сценариев для начала необходимо проверить, разрешено ли выполнение сценариев в PowerShell
  
 
Для этого выдаем команду  
 
Для этого выдаем команду  
 
 
   Get-ExecutionPolicy
 
   Get-ExecutionPolicy
 
+
Политика должна быть установлена в '''RemoteSigned'''. Для изменения политики введите команду
Политика должна быть установлена в '''RemoteSigned'''
+
  Set-ExecutionPolicy RemoteSigned 
 
+
 
В любой папке, например, "j:\1\" создаем файл "test.ps1", в него запишем любой код, например
 
В любой папке, например, "j:\1\" создаем файл "test.ps1", в него запишем любой код, например
 
 
   Start-Transcript
 
   Start-Transcript
 
   "Hello world"
 
   "Hello world"
 
   Get-WmiObject Win32_OperatingSystem | Select-Object -Property LastBootUpTime
 
   Get-WmiObject Win32_OperatingSystem | Select-Object -Property LastBootUpTime
 
+
Запускаем скрипт '''RunProcess( 'PowerShell j:\1\test' )''' и в папке "Мои документы" видим результат
Запускаем скрипт '''RunProcess( 'PowerShell j:\1\test' )''' в папке "Мои документы" видим результат
+
 
+
 
   PowerShell_transcript.20151208165608
 
   PowerShell_transcript.20151208165608
  
Строка 34: Строка 32:
 
   Софтсервис7\Мои документы\PowerShell_transcript.20151208165608.txt
 
   Софтсервис7\Мои документы\PowerShell_transcript.20151208165608.txt
 
   Hello world
 
   Hello world
 
 
   LastBootUpTime                                                                 
 
   LastBootUpTime                                                                 
 
   --------------                                                                 
 
   --------------                                                                 
 
   20151125123816.355125+180                                                       
 
   20151125123816.355125+180                                                       
 
 
 
   **********************
 
   **********************
 
   Windows PowerShell Конец  записи протокола
 
   Windows PowerShell Конец  записи протокола
 
   Время окончания: 20151208165608
 
   Время окончания: 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
 +
Мы видим, что для первых трех строк политика не определена ( а значит - выполнение запрещено ), а для последних двух - разрешена
 +
 +
Для того, чтобы изменить политику выполнения в какой-либо области, необходимо ввести команду
 +
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
 +
 +
= Смотрите также =
 +
[[Встроенные возможности системы Windows]]
 +
 +
[[test.ps1]]

Текущая версия на 11:14, 2 июня 2021

PowerShell - это достаточно мощное встроенное средство системы Windows

Редактор реестра

Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell
EnableScripts
1
ExecutionPolicy
RemoteSigned

Знакомство

Андрей Попов "Введение в Windows PowerShell"

Из фабиуса можно запустить скрипт PowerShell следующим образом

 RunProcess( 'PowerShell j:\1\test' )

Для работы сценариев для начала необходимо проверить, разрешено ли выполнение сценариев в PowerShell

Для этого выдаем команду

 Get-ExecutionPolicy

Политика должна быть установлена в RemoteSigned. Для изменения политики введите команду

 Set-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

Мы видим, что для первых трех строк политика не определена ( а значит - выполнение запрещено ), а для последних двух - разрешена

Для того, чтобы изменить политику выполнения в какой-либо области, необходимо ввести команду

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Смотрите также

Встроенные возможности системы Windows

test.ps1