Ви винаходите колесо. Нормальні сценарії PowerShell мають параметри, починаючи з -
, наприкладscript.ps1 -server http://devserver
Потім ви обробляєте їх у param
розділі на початку файлу.
Ви також можете призначити параметри за замовчуванням для своїх параметрів, прочитати їх з консолі, якщо вони відсутні, або зупинити виконання сценарію:
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
Всередині сценарію можна просто
write-output $server
оскільки всі параметри стають змінними, доступними в області скрипту.
У цьому прикладі значення $server
отримує значення за замовчуванням, якщо скрипт викликається без нього, скрипт зупиняється, якщо ви опускаєте -username
параметр, і просить ввести термінал, якщо -password
пропущено.
Оновлення: Ви також можете передати "прапор" (булевий параметр true / false) до сценарію PowerShell. Наприклад, ваш скрипт може прийняти "силу", коли сценарій працює в більш обережному режимі, коли сила не використовується.
Ключове слово для цього - [switch]
тип параметра:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Всередині сценарію тоді ви працюєте з ним так:
if ($force) {
//deletes a file or does something "bad"
}
Тепер при виклику скрипту слід встановити параметр switch / flag таким чином:
.\yourscript.ps1 -server "http://otherserver" -force
Якщо ви прямо хочете заявити, що прапор не встановлений, для цього є спеціальний синтаксис
.\yourscript.ps1 -server "http://otherserver" -force:$false
Посилання на відповідну документацію Microsoft (для PowerShell 5.0; версії 3.0 та 4.0 також доступні за посиланнями):