Всем привет! Windows Powershell очень серьезный инструмент, способный в правильных рукам стать серьезной реализацией автоматизации каких-либо процессов. Как и у любого языка у него есть возможность вызывать функции из других файлов, что значительно упрощает использование. Плюс ко всему потребность в оптимизации никто не отменял. Сегодня мы поговорим про вызываемые функции в Powershell, научимся их создавать и писать. Давайте начинать.
Windows Powershell — вызываемые функции
Для того, чтобы научиться оформлять данную процедуру, давайте разберем простой пример. Задание:
- Выведем строку о попытке запустить функцию из файла.
- Выведем результат выполнения функции.
- Приукрасим и попробуем еще раз.
Отлично, с заданием разобрались. Для его выполнения нам потребуется 2 файла. Первый будет основным, по совместительству вызывающим функцию. Второй будет эту функцию хранить. Создаем первый файл. Назовем его к примеру execute_function.ps1 и впишем в него следующую строку:
1 |
write-host "Попытка выполнить внешнюю функцию: " |
Отлично, мы вывели на экран фразу, но этого мало. Пока сохраним и создадим второй файл с именем try_execute_function и сохраним туда вот эти строки:
1 2 3 4 |
function Execute-Function { write-host "Поздравляем! Функция выполнена успешно!" } |
Теперь вернемся к первому файлу и вызовем из него функцию. Нам необходимо дописать всего пару строк:
1 2 |
. .\tryexecutefunction.ps1 Execute-Function |
Из второго файла мы помним, что наша функция называется Execute-Function, соответственно она указывается после указания файла, в котором она находится. В итоге первый файл у нас должен выглядеть так execute_function.ps1:
1 2 3 |
write-host "Попытка выполнить внешнюю функцию: " . .\tryexecutefunction.ps1 Execute-Function |
Теперь запустим файл execute_function.ps1:
Мы выполнили два шага. Теперь давайте выполним третий, получим какую-то реальную информацию. Например дату и время и сделаем вызов динамическим. Создадим функцию получения даты и времени отдельно во втором файле. Нет, давайте добавим сразу 2 функции:
1 2 3 4 5 6 7 8 9 10 11 |
function Get-DateOne { Get-Date write-host "Сегодня солнечно и без осадков" } function Get-DateTwo { Get-Date write-host "Желаем приятного дня!" } |
Теперь первый файл мы изменим следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
write-host "Попытка выполнить внешнюю функцию." write-host "Пожалуйста, введите значение, которое вы хотите узнать:" write-host "1. Результат выполнения функции" write-host "2. Дату время и погоду" write-host "3. Дату и время" $ex=read-host switch ($ex){ "1" { . .\tryexecutefunction.ps1 Execute-Function } "2" { . .\tryexecutefunction.ps1 Get-DateOne } "3" { . .\tryexecutefunction.ps1 Get-DateTwo } } |
Теперь давайте попробуем запустить наш файл execute_functions.ps1:
Красота! Теперь давайте пройдемся по каждой из функций!
Оператор switch нам помогает определять, какая цифра подается на вход и вызвать нужную нам функцию:
Вот собственно и все! Если у вас остались вопросы, задавайте их в комментариях! Дерзайте, автоматизируйте и скидывайтесь на печеньки. Не забывайте про нашу группу в контакте и так же Youtube-канал!
Подключение внешнего файла (в вашем случае «. .\tryexecutefunction.ps1») достаточно вызвать всего один раз в начале скрипта.
Спасибо за заметку!