about_Parameters_Default_Values
Krátký popis
Popisuje, jak nastavit vlastní výchozí hodnoty pro parametry rutin a pokročilé funkce.
Dlouhý popis
Proměnná $PSDefaultParameterValues
předvoleb umožňuje zadat vlastní výchozí hodnoty pro libovolnou rutinu nebo pokročilou funkci. Rutiny a pokročilé funkce používají vlastní výchozí hodnotu, pokud v příkazu nezadáte jinou hodnotu.
Autoři rutin a pokročilých funkcí nastavují pro své parametry standardní výchozí hodnoty. Standardní výchozí hodnoty jsou obvykle užitečné, ale nemusí být vhodné pro všechna prostředí.
Tato funkce je zvlášť užitečná, když musíte zadat stejnou alternativní hodnotu parametru téměř pokaždé, když použijete příkaz nebo když je obtížné zapamatovat konkrétní hodnotu parametru, například název e-mailového serveru nebo identifikátor GUID projektu.
Pokud se požadovaná výchozí hodnota liší předvídatelně, můžete zadat blok skriptu, který poskytuje různé výchozí hodnoty parametru za různých podmínek.
$PSDefaultParameterValues
byl představen v PowerShellu 3.0.
Syntaxe
Proměnná $PSDefaultParameterValues
je hashovací tabulka, která ověřuje formát klíčů jako typ objektu System.Management.Automation.DefaultParameterDictionary. Tabulka hash obsahuje páry klíč/hodnota . Klíč je ve formátu CmdletName:ParameterName
. Hodnota je DefaultValue nebo ScriptBlock přiřazený ke klíči.
Syntaxe $PSDefaultParameterValues
proměnné předvoleb je následující:
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
Zástupné znaky jsou povoleny v hodnotách CmdletName a ParameterName .
Pokud chcete nastavit, změnit, přidat nebo odebrat konkrétní dvojici klíč/hodnota z $PSDefaultParameterValues
, použijte metody k úpravě standardní hashovací tabulky. Například metody Add and Remove . Tyto metody nepřepíší jiné hodnoty v tabulce hash.
Existuje další syntaxe, která nepřepíše existující $PSDefaultParameterValues
tabulku hash. Pokud chcete přidat nebo změnit konkrétní dvojici klíč/hodnota , použijte následující syntaxi:
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
Název rutiny musí být název rutiny nebo název pokročilé funkce, která používá atribut CmdletBinding . Nemůžete použít $PSDefaultParameterValues
k zadání výchozích hodnot pro skripty nebo jednoduché funkce.
DefaultValue může být objekt nebo blok skriptu. Pokud je hodnota blok skriptu, PowerShell vyhodnotí blok skriptu a použije výsledek jako hodnotu parametru. Pokud zadaný parametr přijme hodnotu bloku skriptu, uzavřete hodnotu bloku skriptu do druhé sady složených závorek, například:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Další informace najdete v následujících dokumentech:
Příklady
Jak nastavit $PSDefaultParameterValues
$PSDefaultParameterValues
je proměnná předvoleb, takže existuje pouze v relaci, ve které je nastavená. Nemá výchozí hodnotu.
Chcete-li nastavit $PSDefaultParameterValues
, zadejte název proměnné a jeden nebo více párů klíč/hodnota . Pokud spustíte jiný $PSDefaultParameterValues
příkaz, přepíše existující tabulku hash.
Příklady o tom, jak změnit páry klíč/hodnota bez přepsání existujících hodnot hashovací tabulky, najdete v tématu Postup přidání hodnot do $PSDefaultParameterValues nebo jak změnit hodnoty v $PSDefaultParameterValues.
Pokud chcete uložit $PSDefaultParameterValues
budoucí relace, přidejte do profilu PowerShellu $PSDefaultParameterValues
příkaz. Další informace najdete v tématu about_Profiles.
Nastavení vlastní výchozí hodnoty
Dvojice Klíč/hodnota nastaví Send-MailMessage:SmtpServer
klíč na vlastní výchozí hodnotu Serveru123.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Nastavení výchozích hodnot pro více parametrů
Pokud chcete nastavit výchozí hodnoty pro více parametrů, oddělte jednotlivé páry klíč/hodnota středníkem (;
). Klíče Send-MailMessage:SmtpServer
jsou Get-WinEvent:LogName
nastavené na vlastní výchozí hodnoty.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Použití zástupných znaků a parametrů přepínače
Názvy rutin a parametrů můžou obsahovat zástupné znaky. Použijte $True
a $False
nastavte hodnoty pro parametry přepínače, například Podrobné. Společný parametr Podrobný parametr je nastavený na $True
všechny příkazy.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Použití pole pro výchozí hodnotu
Pokud parametr může přijmout více hodnot, můžete nastavit více hodnot jako výchozí hodnoty. Výchozí hodnota Invoke-Command:ComputerName
klíče je nastavena na hodnotu pole Server01 a Server02.
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
Použití bloku skriptu
Blok skriptu můžete použít k určení různých výchozích hodnot parametru za různých podmínek. PowerShell vyhodnotí blok skriptu a použije výsledek jako výchozí hodnotu parametru.
Klíč Format-Table:AutoSize
nastaví parametr, který přepne na výchozí hodnotu True. Příkaz If
obsahuje podmínku, že $host.Name
musí být konzolou PowerShellu ConsoleHost.
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
Pokud parametr přijme hodnotu bloku skriptu, uzavřete blok skriptu do dodatečné sady složených závorek. Když PowerShell vyhodnotí blok vnějšího skriptu, výsledkem je vnitřní blok skriptu, který je nastavený jako výchozí hodnota parametru.
Klíč Invoke-Command:ScriptBlock
nastavený na výchozí hodnotu protokolu událostí systému, protože blok skriptu je uzavřen do druhé sady složených závorek. Výsledek bloku skriptu se předá rutině Invoke-Command
.
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
Jak získat $PSDefaultParameterValues
Hodnoty tabulky hash se zobrazí zadáním $PSDefaultParameterValues
na příkazovém řádku PowerShellu.
Tabulka hash je nastavena $PSDefaultParameterValues
se třemi páry klíč/hodnota .
Tato tabulka hash se používá v následujících příkladech, které popisují, jak přidat, změnit a odebrat hodnoty z $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
Pokud chcete získat hodnotu konkrétního CmdletName:ParameterName
klíče, použijte následující syntaxi:
$PSDefaultParameterValues["CmdletName:ParameterName"]
Pokud chcete například získat hodnotu klíče Send-MailMessage:SmtpServer
.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Přidání hodnot do $PSDefaultParameterValues
K přidání hodnoty $PSDefaultParameterValues
použijte metodu Add . Přidání hodnoty nemá vliv na existující hodnoty v tabulce hash.
K oddělení klíče od hodnoty použijte čárku (,
). Následující syntaxe ukazuje, jak použít Add metoda pro $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
Tabulka hash vytvořená v předchozím příkladu se aktualizuje pomocí nového páru klíč/hodnota . Metoda Add nastaví Get-Process:Name
klíč na hodnotu PowerShellu.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
Následující syntaxe provede stejný výsledek.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
Proměnná $PSDefaultParameterValues
zobrazí aktualizovanou tabulku hash. Klíč Get-Process:Name
byl přidán.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Odebrání hodnot z $PSDefaultParameterValues
Pokud chcete odebrat hodnotu, $PSDefaultParameterValues
použijte metodu Remove tabulek hash. Odebrání hodnoty nemá vliv na existující hodnoty tabulky hash.
Následující syntaxe ukazuje, jak použít Remove metoda on $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
V tomto příkladu se tabulka hash vytvořená v předchozím příkladu aktualizuje tak, aby odebrala dvojici klíč/hodnota . Metoda Remove odebere Get-Process:Name
klíč.
$PSDefaultParameterValues.Remove("Get-Process:Name")
Proměnná $PSDefaultParameterValues
zobrazí aktualizovanou tabulku hash. Klíč Get-Process:Name
byl odebrán.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Změna hodnot v $PSDefaultParameterValues
Změny konkrétní hodnoty nemají vliv na existující hodnoty tabulky hash. Pokud chcete změnit konkrétní dvojici $PSDefaultParameterValues
klíč/hodnota, použijte následující syntaxi:
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
V tomto příkladu se tabulka hash vytvořená v předchozím příkladu aktualizuje tak, aby změnila dvojici klíč/hodnota . Následující příkaz změní Send-MailMessage:SmtpServer
klíč na novou hodnotu ServerXYZ.
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
Proměnná $PSDefaultParameterValues
zobrazí aktualizovanou tabulku hash. Klíč Send-MailMessage:SmtpServer
byl změněn na novou hodnotu.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Zakázání a opětovné povolení $PSDefaultParameterValues
Můžete dočasně zakázat a pak znovu povolit $PSDefaultParameterValues
.
Zakázání $PSDefaultParameterValues
je užitečné, pokud spouštíte skripty, které potřebují jiné výchozí hodnoty parametrů.
Pokud chcete zakázat $PSDefaultParameterValues
, přidejte klíč Disabled
s hodnotou True. Hodnoty se $PSDefaultParameterValues
zachovají, ale nejsou efektivní.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
Následující syntaxe provede stejný výsledek.
PS> $PSDefaultParameterValues["Disabled"]=$True
Proměnná $PSDefaultParameterValues
zobrazí aktualizovanou tabulku hash s hodnotou klíče Disabled
.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Chcete-li znovu povolit $PSDefaultParameterValues
, odeberte zakázaný klíč nebo změňte hodnotu zakázanéhoklíče na $False
. Předchozí hodnota $PSDefaultParameterValues
je znovu platná.
PS> $PSDefaultParameterValues.Remove("Disabled")
Následující syntaxe provede stejný výsledek.
PS> $PSDefaultParameterValues["Disabled"]=$False
Proměnná $PSDefaultParameterValues
zobrazí aktualizovanou tabulku hash. Když se použije metoda Remove, Disabled
klíč se odebere z výstupu.
Pokud se k opětovnému povolení $PSDefaultParameterValues
použila alternativní syntaxe, Disabled
zobrazí se klíč jako False.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro