Есть другой способ.Вы можете использовать автоматическую переменную $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 .