Как передать необходимые параметры в скрипт в Powershell ISE? - PullRequest
69 голосов
/ 14 января 2011

См. Заголовок.

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

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

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

Ответы [ 4 ]

69 голосов
/ 14 января 2011

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

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

A sample showing PowerShell debugging with ISE and command parameter

15 голосов
/ 22 сентября 2015

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

0 голосов
/ 19 января 2016

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...