about_Parameters_Default_Values
Краткое описание
Описывает, как задать пользовательские значения по умолчанию для параметров командлета и расширенных функций.
Подробное описание
Переменная $PSDefaultParameterValues
предпочтения позволяет указать пользовательские значения по умолчанию для любого командлета или расширенной функции. Командлеты и расширенные функции используют настраиваемое значение по умолчанию, если в команде не указано другое значение.
Авторы командлетов и расширенных функций задают стандартные значения по умолчанию для параметров. Как правило, стандартные значения по умолчанию полезны, но они могут не соответствовать всем средам.
Эта функция особенно полезна, если необходимо указать одно и то же альтернативное значение параметра почти каждый раз, когда команда используется или когда определенное значение параметра сложно помнить, например имя сервера электронной почты или GUID проекта.
Если требуемое значение по умолчанию изменяется прогнозируемо, можно указать блок скрипта, предоставляющий различные значения по умолчанию для параметра в различных условиях.
$PSDefaultParameterValues
появилась в PowerShell 3.0.
Синтаксис
Переменная $PSDefaultParameterValues
— это хэш-таблица, которая проверяет формат ключей как тип объекта System.Management.Automation.DefaultParameterDictionary. Хэш-таблица содержит пары "Ключ-значение ". Ключ находится в форматеCmdletName:ParameterName
. Значением является DefaultValue или ScriptBlock, назначенный ключу.
Синтаксис переменной $PSDefaultParameterValues
предпочтения выглядит следующим образом:
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
Дикие карта символы разрешены в значениях Командлета и ParameterName.
Чтобы задать, изменить, добавить или удалить определенную пару $PSDefaultParameterValues
"Ключ-значение", используйте методы для изменения стандартной хэш-таблицы. Например, методы Добавления и удаления . Эти методы не перезаписывают другие значения в хэш-таблице.
Существует еще один синтаксис, который не перезаписывает существующую $PSDefaultParameterValues
хэш-таблицу. Чтобы добавить или изменить определенную пару "Ключ-значение ", используйте следующий синтаксис:
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
Имя командлета должно быть именем командлета или именем расширенной функции, которая использует атрибут КомандлетBinding . Нельзя использовать $PSDefaultParameterValues
для указания значений по умолчанию для скриптов или простых функций.
DefaultValue может быть объектом или блоком скрипта. Если значение является блоком скрипта, PowerShell оценивает блок скрипта и использует результат в качестве значения параметра. Если указанный параметр принимает значение блока скрипта, заключите значение блока скрипта во второй набор фигурных скобок, например:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Дополнительные сведения см. в следующих документах:
Примеры
Настройка $PSDefaultParameterValues
$PSDefaultParameterValues
— это переменная предпочтения, поэтому она существует только в сеансе, в котором он задан. Оно не имеет значения по умолчанию.
Чтобы задать $PSDefaultParameterValues
, введите имя переменной и одну или несколько пар key/Value . При выполнении другой $PSDefaultParameterValues
команды она перезаписывает существующую хэш-таблицу.
Примеры изменения пар "Ключ-значение" без перезаписи существующих хэш-таблиц см. в статье "Добавление значений в $PSDefaultParameterValues" или "Изменение значений в $PSDefaultParameterValues".
Чтобы сохранить $PSDefaultParameterValues
для будущих сеансов, добавьте $PSDefaultParameterValues
команду в профиль PowerShell. Дополнительные сведения см. в разделе about_Profiles.
Установка настраиваемого значения по умолчанию
Пара "Ключ-значение " задает Send-MailMessage:SmtpServer
для ключа настраиваемое значение по умолчанию Server123.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Установка значений по умолчанию для нескольких параметров
Чтобы задать значения по умолчанию для нескольких параметров, разделите каждую пару "Ключ-значение " с точкой с запятой (;
). Для Send-MailMessage:SmtpServer
значений Get-WinEvent:LogName
по умолчанию заданы значения и ключи.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Использование параметров wild карта и switch
Имена командлетов и параметров могут содержать дикие карта символы. Используйте $True
и $False
задайте значения для параметров коммутатора, таких как Подробные сведения. Для всех команд задан $True
общий параметр Verbose.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Использование массива для значения по умолчанию
Если параметр может принимать несколько значений, массив можно задать несколько значений в качестве значений по умолчанию. Значение по умолчанию ключа имеет значение Invoke-Command:ComputerName
массива Server01 и Server02.
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
Использование блока скриптов
Вы можете использовать блок скрипта для указания различных значений по умолчанию для параметра в различных условиях. PowerShell оценивает блок скрипта и использует результат в качестве значения параметра по умолчанию.
Ключ Format-Table:AutoSize
задает параметр, переключяющий значение по умолчанию true. Инструкция If
содержит условие, которое $host.Name
должно быть консолью PowerShell, ConsoleHost.
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
Если параметр принимает значение блока скрипта, заключите блок скрипта в дополнительный набор фигурных скобок. Если PowerShell вычисляет внешний блок скриптов, результатом является внутренний блок скрипта, который устанавливается в качестве значения параметра по умолчанию.
КлючInvoke-Command:ScriptBlock
, заданный по умолчанию для журнала событий системы, так как блок скрипта заключен во второй набор фигурных скобок. Результат блока скрипта передается командлету Invoke-Command
.
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
Как получить $PSDefaultParameterValues
Хэш-таблицы отображаются путем ввода $PSDefaultParameterValues
в командной строке PowerShell.
Хэш-таблица $PSDefaultParameterValues
устанавливается с тремя парами "Ключ-значение ".
Эта хэш-таблица используется в следующих примерах, описывающих, как добавлять, изменять и удалять значения из $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
"Get-*:Verbose"=$True
}
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Чтобы получить значение определенного CmdletName:ParameterName
ключа, используйте следующий синтаксис:
$PSDefaultParameterValues["CmdletName:ParameterName"]
Например, чтобы получить значение ключа Send-MailMessage:SmtpServer
.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Добавление значений в $PSDefaultParameterValues
Чтобы добавить значение $PSDefaultParameterValues
, используйте метод Add . Добавление значения не влияет на существующие значения хэш-таблицы.
Используйте запятую (,
) для разделения ключа от значения. В следующем синтаксисе показано, как использовать метод Add для $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
Хэш-таблица, созданная в предыдущем примере, обновляется с помощью новой пары "Ключ-значение ". Метод Add задает Get-Process:Name
ключ значению PowerShell.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
Следующий синтаксис выполняет тот же результат.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
Переменная $PSDefaultParameterValues
отображает обновленную хэш-таблицу. Get-Process:Name
Добавлен ключ.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Удаление значений из $PSDefaultParameterValues
Чтобы удалить значение из $PSDefaultParameterValues
, используйте метод Remove для хэш-таблиц. Удаление значения не влияет на существующие значения хэш-таблицы.
В следующем синтаксисе показано, как использовать метод Remove в $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
В этом примере хэш-таблица, созданная в предыдущем примере, обновляется, чтобы удалить пару "Ключ-значение ". Метод Remove удаляет Get-Process:Name
ключ.
$PSDefaultParameterValues.Remove("Get-Process:Name")
Переменная $PSDefaultParameterValues
отображает обновленную хэш-таблицу. Get-Process:Name
Ключ был удален.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Изменение значений в $PSDefaultParameterValues
Изменения в определенном значении не влияют на существующие хэш-таблицы. Чтобы изменить определенную пару "Ключ-значение " $PSDefaultParameterValues
, используйте следующий синтаксис:
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
В этом примере хэш-таблица, созданная в предыдущем примере, обновляется, чтобы изменить пару key/Value . Следующая команда изменяет Send-MailMessage:SmtpServer
ключ на новое значение ServerXYZ.
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
Переменная $PSDefaultParameterValues
отображает обновленную хэш-таблицу. Send-MailMessage:SmtpServer
Ключ был изменен на новое значение.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Отключение и повторное включение $PSDefaultParameterValues
Вы можете временно отключить и повторно включить $PSDefaultParameterValues
.
$PSDefaultParameterValues
Отключение полезно при выполнении сценариев, требующих разных значений параметров по умолчанию.
Чтобы отключить $PSDefaultParameterValues
, добавьте ключ Disabled
со значением True. Значения сохраняются $PSDefaultParameterValues
, но не являются эффективными.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
Следующий синтаксис выполняет тот же результат.
PS> $PSDefaultParameterValues["Disabled"]=$True
Переменная $PSDefaultParameterValues
отображает обновленную хэш-таблицу со значением ключа Disabled
.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Чтобы повторно включить$PSDefaultParameterValues
, удалите отключенный ключ или измените значение отключенного ключа $False
на . Предыдущее значение $PSDefaultParameterValues
является эффективным снова.
PS> $PSDefaultParameterValues.Remove("Disabled")
Следующий синтаксис выполняет тот же результат.
PS> $PSDefaultParameterValues["Disabled"]=$False
Переменная $PSDefaultParameterValues
отображает обновленную хэш-таблицу. При использовании Disabled
метода Remove ключ удаляется из выходных данных.
Если для повторного включения $PSDefaultParameterValues
использовался альтернативный синтаксис, Disabled
ключ отображается как false.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
См. также
PowerShell
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по