Є й інший шлях. Ви можете використовувати $PSDefaultParameterValuesавтоматичну змінну, яка існує (починаючи з v3), щоб надати нові аргументи за замовчуванням командлетам та розширеним функціям (не працює з нормальними функціями). Однак це працює для скриптів, навіть під час налагодження в ISE. Ви повинні задекларувати [CmdletBinding()]або [Parameter()]подібно до розширеної функції.
Отже, для вашого прикладу,
[CmdletBinding()]
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
ви б виконали щось подібне в підказці ISE:
$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt")
$PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log")
Ви також можете встановити значення параметра як блок сценарію, який буде автоматично виконуватися під час виконання:
$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={
"Example-{0:yyMMddHHmm}.log" -f [datetime]::Now
}
Змінна є хеш-таблицею, і застосовується весь стандартний синтаксис, за винятком того, що ключ повинен мати ім'я сценарію (або розширеної функції або командлета), за яким слід двокрапка, а потім ім'я параметра. Ви можете встановити значення за замовчуванням для декількох сценаріїв або команд, а також кілька параметрів для кожного (кожен параметр є новим записом таблиці).
Роблячи це таким чином, ви можете просто натиснути, F5щоб запустити свій сценарій як зазвичай. Параметри будуть взяті зі змінної, тому вам не потрібно нічого вводити.
Інші випадки використання $PSDefaultParameterValuesможуть бути налаштуваннями, наприклад, щоб Get-History отримував лише останні 10 записів, якщо ви не вказали -Countпараметр у команді. Оскільки записи зберігаються лише для поточного сеансу, ви хочете додати налаштування у свій профіль . Ви можете прочитати більше, ввівши Get-Help about_Parameters_Default_Valuesзапит або переглянути ту саму інформацію на TechNet .