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 $PSDefaultParameterValuespouž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, $PSDefaultParameterValuespouž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 $PSDefaultParameterValuesklíč/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í $PSDefaultParameterValuespouž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é