Как передать необходимые параметры скрипту в Powershell ISE?



Посмотреть Название.



Я указал необходимые параметры в голове скрипта:



param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))


когда я хочу отладить скрипт с помощью Powershell ISE: как я могу заполнить эти параметры?

948   4  

4 ответов:

панель команд. Откройте файл сценария в Редакторе ISE, установите точки останова (F9). Затем в области команд введите команду, вызывающую этот скрипт с требуемыми параметрами. Я не думаю, что есть другой (встроенный) способ сделать это в Исэ.

  1. откройте скрипт (myscript. ps1) в Windows Powershell ISE
  2. пресс F9 в переменной, которую вы хотите проверить (отладка). Например, 2-я строка в примере ниже, где переменной $outputText присваивается
  3. в окне оболочки укажите относительный путь скрипта вместе со значением param. Например:. \myscript. ps1 "my value"
  4. нажмите enter (вам не нужно нажимать F5)
  5. вы сможете чтобы увидеть точки останова отладки, выделенные желтым цветом. Наведите курсор на нужную переменную, чтобы проверить текущее значение.

A sample showing PowerShell debugging with ISE and command parameter

есть и другой способ. Вы можете использовать $PSDefaultParameterValues автоматическая переменная, которая существует (начиная с v3) для предоставления новых аргументов по умолчанию командлетам и advanced функции (не работает с нормальными функциями). Однако он работает для сценариев, даже при отладке в 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.

существует гораздо более простой способ установить необходимые параметры в ISE:

перед нажатием F5 в ISE установите необходимый параметр. Я обычно комментирую параметр, который мне нужен, например: # $G_ARCHIVE = "C:\Temp\TestFile_001.txt"

Я выбираю все после " # " и нажимаю F8. В следующий раз я отлаживаю скрипт с помощью F5, параметр установлен на значение, которое я тестирую, нет необходимости передавать параметры через команду линия.

Comments

    Ничего не найдено.