Є й інший шлях. Ви можете використовувати $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 .