Передача параметров в сценарий PowerShell

Параметры в сценарий PowerShell можно передавать двумя разными способами. (Если вы не знаете о PowerShell, см. Совет «Введение в PowerShell».) Параметры могут передаваться по позиции или по имени. Оба варианта одинаково допустимы, поэтому давайте посмотрим, как они работают.

У меня есть сценарий PowerShell с именем LookForFiles.ps1. Он ищет файлы в заданном каталоге и отображает те файлы, размер которых превышает 20 КБ. Сейчас мой сценарий выглядит так:

 $ files = Get-ChildItem C:  Tempforeach ($ file in $ files) {if ($ file.length -gt 20000) {Write-Output $  file}} 

Как видите, имя моего каталога (C: Temp) и размер для проверки (20000) жестко запрограммированы. Вместо этого я хочу передать имя и размер каталога, чтобы мой сценарий был более гибким.

Во-первых, я изменю все так, чтобы передавать эти параметры по позиции, т. Е. первым параметром будет каталог, а вторым параметром – размер. Мой новый сценарий выглядит так:

 $ files = Get-ChildItem args [0] foreach ($ file в $ files) {if ($ file.length -gt args [1]) {Запись  -Output $ file}} 

Теперь я вызываю свой скрипт и наблюдаю за результатом: (см. Рисунок 1.)

Рис. 1. Передача позиционных параметров.

Обратите внимание, что когда я вызываю скрипту я передаю два параметра, а именно «C: Temp» и «20000». Они заполняются в «$ args [0]» и «$ args [1]» соответственно, чтобы сценарий выполнялся точно так же, как и раньше. Теперь давайте изменим сценарий так, чтобы он ожидал именованные параметры:

 param ([string] $ dir = "C:  Temp", [int32] $ size = 20000) $ files = Get-ChildItem  $ dirforeach ($ file в $ files) {if ($ file.length -gt $ size) {Write-Output $ file}} 

Обратите внимание, что я удалил ссылки на “$ args” переменные. Также обратите внимание, что первая строка (расширенная до второй строки) является оператором «param». Это говорит PowerShell ожидать именованные параметры. Этот оператор “param” должен быть первой строкой в ​​вашем скрипте. Он определяет две переменные и инициализирует их значениями по умолчанию. Он определяет строковую переменную $ dir и устанавливает ее по умолчанию на “C: Temp”, а также определяет переменную $ size int32 (числовую) и по умолчанию принимает ее значение 20000. Эти значения инициализируются значениями по умолчанию, поэтому, если параметры не передаются, скрипт вызывается, он все равно будет работать и использовать эти значения.

Вместо того, где у меня был $ args [0], теперь у меня есть переменная $ dir, а вместо того, где я раньше have $ args [1] Теперь у меня есть переменная $ size. Давайте вызовем скрипт, указав эти именованные параметры: (см. Рисунок 2.)

Рисунок 2. Передача именованных параметров.

Теперь, когда скрипт вызывается, я указываю “-dir”, за которым следует интересующий меня каталог, и я указываю “-size”, чтобы указать интересующий меня размер. являются именованными параметрами, я могу изменить их порядок, чтобы сначала было указано «-size», а вторым – «-dir». Или я могу полностью их опустить, и будут использоваться значения внутри скрипта.

Оцените статью
Frestage.ru
Добавить комментарий