См. раздел "Название".
Я указал необходимые параметры в заголовке script:
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
Когда я хочу отлаживать script с помощью PowerShell ISE: как я могу заполнить эти параметры?
Ответ 1
Используйте панель команд. Откройте файл script в редакторе ISE, установите точки останова (F9). Затем в панели команд введите команду script с требуемыми параметрами. Я не думаю, что в ISE есть другой (встроенный) способ сделать это.
Ответ 2
- Откройте script (myscript.ps1) в Windows PowerShell ISE
- Нажмите F9 на переменную, которую вы хотите проверить (отладить). Например, вторая строка в примере ниже, где назначается переменная $outputText
- В окне оболочки укажите относительный путь script вместе с значением параметра. Например:.\Myscript.ps1 "my value"
- Нажмите Enter (вам не нужно нажать F5)
- Вы сможете увидеть отладочные точки останова, выделенные желтым цветом. Поместите курсор на нужную переменную, чтобы проверить текущее значение.
![A sample showing PowerShell debugging with ISE and command parameter]()
Ответ 3
Есть и другой способ. Вы можете использовать автоматическую переменную $PSDefaultParameterValues
, которая существует (начиная с версии v3) для предоставления новых аргументов по умолчанию для командлетов и расширенных функций (не работает с обычными функциями). Однако он работает для скриптов, даже при отладке в ISE.
Итак, для вашего примера
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")
Вы также можете установить значение параметра в блок script, который будет автоматически выполняться во время выполнения:
$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={
"Example-{0:yyMMddHHmm}.log" -f [datetime]::Now
}
Переменная - это хеш-таблица, и применяется весь стандартный синтаксис, за исключением того, что ключ должен иметь имя script (или расширенную функцию или командлет), за которым следует двоеточие, а затем имя параметра. Вы можете установить значения по умолчанию для нескольких сценариев или команд и несколько параметров для каждого (каждый параметр - новая запись в таблице).
Сделав это, вы можете просто нажать F5, чтобы запустить свой script как обычно. Параметры будут взяты из переменной, поэтому вам нечего вводить.
Другими вариантами использования для $PSDefaultParameterValues
могут быть настройки, например, если Get-History получает только последние 10 записей, если вы не укажете параметр -Count
в команде. Поскольку записи сохраняются только для текущего сеанса, вы хотели бы добавить настройки в профиль. Вы можете прочитать больше, набрав Get-Help about_Parameters_Default_Values
в приглашении или просмотрите ту же информацию на TechNet.
Ответ 4
Существует гораздо более простой способ установки необходимых параметров в ISE:
Прежде чем нажимать F5 в ISE, установите необходимый параметр. Я обычно комментирую параметр, который мне нужен, например: # $G_ARCHIVE = "C:\Temp\TestFile_001.txt"
Я выбираю все после "#" и нажимаю F8. В следующий раз, когда я отлаживаю script с F5, параметру присваивается значение, которое я тестирую, нет необходимости передавать параметры через командную строку.