PowerShell — различия между версиями
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м (→Область действия политики выполнения) |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | PowerShell - это достаточно мощное встроенное средство системы Windows | + | [[PowerShell]] - это достаточно мощное встроенное средство системы Windows |
− | + | = Редактор реестра = | |
− | + | Компьютер\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 | 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 | ||
Строка 44: | Строка 40: | ||
********************** | ********************** | ||
− | + | = Область действия политики выполнения = | |
+ | В начале этой статьи мы упомянули, что политика выполнения должна быть установлена в '''RemoteSigned''', для возможности запуска скриптов. | ||
− | + | Для выполнения скрипта из фабиуса используется команда RunProcess( 'PowerShell ' + имя_сценария ) | |
− | Но, оказывается, даже если вы установили политику в RemoteSigned, сценарии, запущенные из фабиуса, работать не будут | + | Но, оказывается, даже если вы установили политику в RemoteSigned, сценарии, запущенные из фабиуса, работать не будут |
Дело в том, что разрешение выполнения сценария действует на определенную область. Чтобы проверить, какие права установлены именно у приложения фабиус, нужно в фабиусе выполнить программу | Дело в том, что разрешение выполнения сценария действует на определенную область. Чтобы проверить, какие права установлены именно у приложения фабиус, нужно в фабиусе выполнить программу | ||
− | |||
local a | local a | ||
a := [PowerShell Get-ExecutionPolicy > c:\1.txt] | a := [PowerShell Get-ExecutionPolicy > c:\1.txt] | ||
RunProcess( a ) | RunProcess( a ) | ||
− | |||
После этого на диске С будет сформирован файл 1.txt внутри которого и будет написана текущая политика выполнения для фабиуса. | После этого на диске С будет сформирован файл 1.txt внутри которого и будет написана текущая политика выполнения для фабиуса. | ||
Для просмотра всех областей действия в оболочке PowerShell введите команду Get-ExecutionPolicy -list | Для просмотра всех областей действия в оболочке PowerShell введите команду Get-ExecutionPolicy -list | ||
− | |||
Scope ExecutionPolicy | Scope ExecutionPolicy | ||
----- --------------- | ----- --------------- | ||
Строка 67: | Строка 61: | ||
CurrentUser RemoteSigned | CurrentUser RemoteSigned | ||
LocalMachine 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