Сценарии PowerShell

Сценарии PowerShell как и в командной строке CMD и сервере Windows Script Host предоставляют из себя текстовые файлы с программным кодом (команды, операторы и другие конструкции и комментарии на языке PowerShell), которые имею расширение ps1. Чтобы создать PowerShell сценарий, можно использовать несколько вариантов:

- использовать текстовый редактор (например Notepad++) для написания кода.
- ввести нужные команды в самой оболочке PowerShell с последующим их копированием в файл с расширением ps1.
- включить в консоли режим протоколирования с помощью командлета start-Transcript (stop-Transcript для остановки протокола) и уже из создавшегося файла использовать нужные команды.
- оформить в консоли код с помощью обычных или автономных строк, а потом перенаправить их с помощью символов > и >> во внешний сценарий – файл оболочки PowerShell с расширением ps1.

Давайте рассмотрим самый простой пример создания сценария с внедрением в него комментариев PowerShell. Создадим каталог d:\data\script\ в котором будут храниться наши файлы:

PS C:\> md d:\data\script\

Перейдем в созданный каталог:

PS C:\> cd d:\data\script\
PS d:\data\script>

А теперь пропишем простую текстовую строчку и перенаправим ее в файл test.ps1:

PS d:\data\script > '"Это новая текстовая строка"' > test.ps1

Прежде чем запускать созданный сценарий, стоит проверить активную политику безопасности:

PS D:\data\script> Get-ExecutionPolicy
RemoteSigned

Если консоль показала, что действует более строгая политика безопасности (Restricted или AllSigned), то с помощью командлета Set-ExecutionPolicy ее можно сменить на другую (запись производится в реестр, поэтому стоит обладать правами администратора):

PS D:\data\script> Set-ExecutionPolicy RemoteSigned

Некий комментарий PowerShell относительно сценариев: для запуска программного файла через консоль, нужно явно указывать путь к нему. Если мы теперь просто пропишем имя файла, то ничего не выйдет:

PS D:\data\script> test.ps1

Мы получим следующее предупреждение:

Условие “test.ps1″ не распознано как командлет, функция, выполняемая программа или файл сценария. Проверьте условие и повторите попытку. В строка:1 знак:8 + test.ps1 <<<<

Теперь попробуем сделать все правильно:

PS D:\data\script> D:\data\script\test.ps1

Это новая текстовая строка

Хорошо, теперь все получилось, но в данном случае, можно использовать и такую конструкцию:

PS d:\data\script> .\test.ps1

Это новая текстовая строка

Тут точка соответствует текущему каталогу. Можно вообще не прописывать расширения для сценария в консоли PowerShell:

PS D:\data\script> .\test

Это новая текстовая строка

Есть и второй способ, что бы запустить сценарии PowerShell – из командной строки cmd или с помощью меню Пуск/Выполнить. Что произвести запуск через Пуск/Выполнить, нам достаточно прописать следующую строчку:

powershell.exe  d:\data\script\test.ps1

На короткое время мы увидим окно консоли с прописанной в сценарии строчкой. В отличии от cmd и wsh файлами, PowerShell файлы не удастся запустить двойным щелчком по ним – это сделано в целях безопасности.

Как и функции, сценарии также могут обрабатывать аргументы, для этого можно или использовать переменную $Args (содержит в себе массив все переданных аргументов), или с помощью формальный параметров (для этого надо использовать специальную инструкцию Param). Давайте рассмотрим первый способ, с помощью автономным строк, напишем сценарий allSum.ps1, который будет сообщать количество параметров, с которыми он запушен, и их сумму.

PS D:\data\script>@'
>>######################################
>>#Это комментарий PowerShell
>>#Работа с входными параметрами
>>######################################
>> "Количество аргументов: $($Args.count)"
>> $n=0
>> for($i=0; $i -lt $Args.count; $i++) { $n+=$Args[$i]}
>> "Сумма аргументов: $n"
>> '@ > allSum.ps1
>>
PS D:\data\script>

Как видим, с помощью символа # оформляются в PowerShell комментарии. Теперь запустим сценарий с несколькими числовыми параметрами:

PS D:\data\script> .\allsum.ps1 2 4 6 8 9

Количество аргументов: 5

Сумма аргументов: 29

Теперь с помощью специальной инструкции попробуем поработтаь с формальными параметрами. Сама конструкция Param должна быть самой первой командой в файле, предшествовать ей могут только пустые строки и комментарии PowerShell. Создадим сценарий allSum1.ps1 который будет вычислять сумму переданных аргументов:

PS  D:\data\script> @'
>>######################################
>>#Это комментарий PowerShell
>>#Вычисление сумы аргументов
>>######################################
>> Param ($x=2, $y=3)
>> $x+$y
>> '@ > allSum1.ps1
>>

Запустим полученный сценарий с аргументами и без них:

PS  D:\data\script> .\allSum1 10  20
30
PS D:\data\script> .\allSum1
5

Хорошо, как видим, если не передавать сценарию PowerShell аргументов, то вычисление сумы произойдет по уже заданным.

 

Купить женскую одежду больших размеров в Новосибирске. .

Комментарии закрыты.