PowerShell:
Чтение аргументов командной строки
Как это сделать
PowerShell читает аргументы командной строки, используя массив $args
или параметры. $args
удобен для одноразовых скриптов; параметры лучше подходят для надежных инструментов.
Использование $args
# myscript.ps1
Write-Host "Вы ввели следующие аргументы:"
$args
Запустите с помощью .\myscript.ps1 Hello PowerShell
, на выходе получится:
Вы ввели следующие аргументы:
Hello PowerShell
Использование параметров
# myscriptparam.ps1
param (
[string]$Name,
[int]$Age
)
Write-Host "Привет, $Name! Вам $Age лет."
Запустите с помощью .\myscriptparam.ps1 -Name Sarah -Age 32
, на выходе получится:
Привет, Sarah! Вам 32 лет.
Погружаемся глубже
Современный подход PowerShell к аргументам командной строки напоминает наследие от его предшественников, таких как cmd и Bash. Однако, он усиливает гибкость и точность.
Исторический контекст
Годы назад, пакетные файлы и скрипты оболочки получали доступ к аргументам с помощью нумерованных переменных (как %1
, %2
). PowerShell усовершенствовал это с помощью $args
и именованных параметров для большей ясности и контроля.
Альтернативы
Существуют альтернативы, такие как разбор входных данных с Read-Host
или прием входных данных через конвейер. Однако, $args
и параметры более бесшовны для автоматизированных задач и скриптов.
Детали реализации
$args
- это простой массив, хороший для произвольного ввода. Параметры с их атрибутами и типами могут валидировать входные данные и даже запрашивать у пользователя, делая скрипты самодокументируемыми и менее подверженными ошибкам.