about_Parameters_Default_Values
Krótki opis
Opisuje sposób ustawiania niestandardowych wartości domyślnych dla parametrów polecenia cmdlet i funkcji zaawansowanych.
Długi opis
Zmienna $PSDefaultParameterValues
preferencji umożliwia określenie niestandardowych wartości domyślnych dla dowolnego polecenia cmdlet lub funkcji zaawansowanej. Polecenia cmdlet i funkcje zaawansowane używają niestandardowej wartości domyślnej, chyba że określisz inną wartość w poleceniu.
Autorzy poleceń cmdlet i zaawansowanych funkcji ustawiają standardowe wartości domyślne dla swoich parametrów. Zazwyczaj standardowe wartości domyślne są przydatne, ale mogą nie być odpowiednie dla wszystkich środowisk.
Ta funkcja jest szczególnie przydatna, gdy musisz określić tę samą wartość parametru alternatywnego prawie za każdym razem, gdy używasz polecenia lub gdy określona wartość parametru jest trudna do zapamiętania, na przykład nazwa serwera poczty e-mail lub identyfikator GUID projektu.
Jeśli żądana wartość domyślna różni się przewidywalnie, możesz określić blok skryptu, który udostępnia różne wartości domyślne parametru w różnych warunkach.
$PSDefaultParameterValues
wprowadzono w programie PowerShell 3.0.
Składnia
Zmienna $PSDefaultParameterValues
jest tabelą skrótów, która weryfikuje format kluczy jako typ obiektu System.Management.Automation.DefaultParameterDictionary. Tabela skrótów zawiera pary Klucz/Wartość . Klucz ma format CmdletName:ParameterName
. Wartość jest wartością DefaultValue lub ScriptBlock przypisaną do klucza.
Składnia zmiennej $PSDefaultParameterValues
preferencji jest następująca:
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
Symbole wieloznaczne są dozwolone w wartościach CmdletName i ParameterName .
Aby ustawić, zmienić, dodać lub usunąć określoną parę klucz/wartość z $PSDefaultParameterValues
programu , użyj metod do edytowania standardowej tabeli skrótów. Na przykład metody Dodaj i Usuń . Te metody nie zastępują innych wartości w tabeli skrótów.
Istnieje inna składnia, która nie zastępuje istniejącej $PSDefaultParameterValues
tabeli skrótów. Aby dodać lub zmienić określoną parę klucz/wartość , użyj następującej składni:
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
Nazwa _ polecenia cmdlet musi być nazwą polecenia cmdlet lub nazwą funkcji zaawansowanej, która używa atrybutu CmdletBinding . Nie można użyć $PSDefaultParameterValues
polecenia , aby określić wartości domyślne dla skryptów lub prostych funkcji.
Wartość DefaultValue może być obiektem lub blokiem skryptu. Jeśli wartość jest blokiem skryptu, program PowerShell oblicza blok skryptu i używa wyniku jako wartości parametru. Gdy określony parametr akceptuje wartość bloku skryptu, należy ująć wartość bloku skryptu w drugim zestawie nawiasów klamrowych, takich jak:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Więcej informacji można znaleźć w następujących dokumentach:
Przykłady
Jak ustawić $PSDefaultParameterValues
$PSDefaultParameterValues
jest zmienną preferencji, więc istnieje tylko w sesji, w której jest ustawiona. Nie ma wartości domyślnej.
Aby ustawić $PSDefaultParameterValues
, wpisz nazwę zmiennej i co najmniej jedną parę Klucz/Wartość . Jeśli uruchomisz inne $PSDefaultParameterValues
polecenie, zastąpi istniejącą tabelę skrótów.
Aby zapoznać się z przykładami dotyczącymi zmieniania par klucz/wartość bez zastępowania istniejących wartości tabeli skrótów, zobacz How to add values to $PSDefaultParameterValues or How to change values in $PSDefaultParameterValues (Jak dodawać wartości do $PSDefaultParameterValues) lub How to change values in $PSDefaultParameterValues (Jak zmienić wartości w $PSDefaultParameterValues).
Aby zapisać $PSDefaultParameterValues
na potrzeby przyszłych sesji, dodaj $PSDefaultParameterValues
polecenie do profilu programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Profiles.
Ustawianie niestandardowej wartości domyślnej
Para Klucz/Wartość ustawia Send-MailMessage:SmtpServer
klucz na niestandardową wartość domyślną Server123.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Ustawianie wartości domyślnych dla wielu parametrów
Aby ustawić wartości domyślne dla wielu parametrów, należy oddzielić każdą parę Klucz/Wartość średnikiem (;
). Klucze Send-MailMessage:SmtpServer
i Get-WinEvent:LogName
są ustawione na niestandardowe wartości domyślne.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Używanie symboli wieloznacznych i parametrów przełącznika
Nazwy poleceń cmdlet i parametrów mogą zawierać symbole wieloznaczne. Użyj $True
i $False
, aby ustawić wartości parametrów przełącznika, takich jak Pełne. Parametr verbose wspólnego parametru jest ustawiony na $True
dla wszystkich poleceń.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Użyj tablicy dla wartości domyślnej
Jeśli parametr może akceptować wiele wartości, tablica, można ustawić wiele wartości jako wartości domyślne. Wartość Invoke-Command:ComputerName
domyślna klucza jest ustawiona na wartość tablicy Server01 i Server02.
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
Używanie bloku skryptu
Blok skryptu umożliwia określenie różnych wartości domyślnych parametru w różnych warunkach. Program PowerShell ocenia blok skryptu i używa wyniku jako wartości domyślnego parametru.
Klucz Format-Table:AutoSize
ustawia, który przełącza parametr na wartość domyślną True. Instrukcja If
zawiera warunek, który $host.Name
musi być konsolą programu PowerShell, ConsoleHost.
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
Jeśli parametr akceptuje wartość bloku skryptu, należy ująć blok skryptu w dodatkowy zestaw nawiasów klamrowych. Gdy program PowerShell ocenia zewnętrzny blok skryptu, wynik jest blokiem skryptu wewnętrznego i jest ustawiony jako domyślna wartość parametru.
Klucz Invoke-Command:ScriptBlock
ustawiony na wartość domyślną dziennika zdarzeń systemu, ponieważ blok skryptu jest ujęty w drugi zestaw nawiasów klamrowych. Wynik bloku skryptu jest przekazywany do Invoke-Command
polecenia cmdlet .
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
Jak uzyskać $PSDefaultParameterValues
Wartości tabeli skrótów są wyświetlane przez wprowadzenie $PSDefaultParameterValues
w wierszu polecenia programu PowerShell.
$PSDefaultParameterValues
Tabela skrótów jest ustawiana z trzema parami Klucz/Wartość.
Ta tabela skrótów jest używana w poniższych przykładach, które opisują sposób dodawania, zmieniania i usuwania wartości z programu $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
Aby uzyskać wartość określonego CmdletName:ParameterName
klucza, użyj następującej składni:
$PSDefaultParameterValues["CmdletName:ParameterName"]
Aby na przykład uzyskać wartość Send-MailMessage:SmtpServer
klucza.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Jak dodać wartości do $PSDefaultParameterValues
Aby dodać wartość do $PSDefaultParameterValues
metody , użyj metody Add . Dodanie wartości nie wpływa na istniejące wartości tabeli skrótów.
Użyj przecinka (,
), aby oddzielić klucz od wartości. Poniższa składnia pokazuje, jak używać metody Add dla $PSDefaultParameterValues
elementu .
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
Tabela skrótów utworzona w poprzednim przykładzie jest aktualizowana przy użyciu nowej pary Klucz/Wartość . Metoda Add ustawia Get-Process:Name
klucz na wartość programu PowerShell.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
Poniższa składnia osiąga ten sam wynik.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
Zmienna $PSDefaultParameterValues
wyświetla zaktualizowaną tabelę skrótów. Klucz Get-Process:Name
został dodany.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Jak usunąć wartości z $PSDefaultParameterValues
Aby usunąć wartość z $PSDefaultParameterValues
klasy , użyj metody Remove tabel skrótu. Usunięcie wartości nie wpływa na istniejące wartości tabeli skrótów.
Poniższa składnia pokazuje, jak używać metody Remove w pliku $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
W tym przykładzie tabela skrótów utworzona w poprzednim przykładzie zostanie zaktualizowana w celu usunięcia pary Klucz/Wartość . Metoda Remove usuwa Get-Process:Name
klucz.
$PSDefaultParameterValues.Remove("Get-Process:Name")
Zmienna $PSDefaultParameterValues
wyświetla zaktualizowaną tabelę skrótów. Klucz Get-Process:Name
został usunięty.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Jak zmienić wartości w $PSDefaultParameterValues
Zmiany określonej wartości nie mają wpływu na istniejące wartości tabeli skrótów. Aby zmienić określoną parę klucz/wartość w programie $PSDefaultParameterValues
, użyj następującej składni:
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
W tym przykładzie tabela skrótów utworzona w poprzednim przykładzie zostanie zaktualizowana w celu zmiany pary Klucz/Wartość . Następujące polecenie zmienia Send-MailMessage:SmtpServer
klucz na nową wartość ServerXYZ.
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
Zmienna $PSDefaultParameterValues
wyświetla zaktualizowaną tabelę skrótów. Klucz Send-MailMessage:SmtpServer
został zmieniony na nową wartość.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Jak wyłączyć i ponownie włączyć $PSDefaultParameterValues
Możesz tymczasowo wyłączyć, a następnie ponownie włączyć polecenie $PSDefaultParameterValues
.
$PSDefaultParameterValues
Wyłączenie jest przydatne, jeśli uruchamiasz skrypty, które wymagają różnych wartości parametrów domyślnych.
Aby wyłączyć $PSDefaultParameterValues
, dodaj klucz Disabled
o wartości True. Wartości w pliku $PSDefaultParameterValues
są zachowywane, ale nie są skuteczne.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
Poniższa składnia osiąga ten sam wynik.
PS> $PSDefaultParameterValues["Disabled"]=$True
Zmienna $PSDefaultParameterValues
wyświetla zaktualizowaną tabelę skrótów z wartością Disabled
klucza.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Aby ponownie włączyć , usuń klucz Wyłączony lub zmień wartość wyłączonego klucza na $False
.$PSDefaultParameterValues
Poprzednia $PSDefaultParameterValues
wartość elementu jest ponownie skuteczna.
PS> $PSDefaultParameterValues.Remove("Disabled")
Poniższa składnia osiąga ten sam wynik.
PS> $PSDefaultParameterValues["Disabled"]=$False
Zmienna $PSDefaultParameterValues
wyświetla zaktualizowaną tabelę skrótów. Gdy zostanie użyta metoda Remove , Disabled
klucz zostanie usunięty z danych wyjściowych.
Jeśli użyto alternatywnej składni do ponownego włączenia $PSDefaultParameterValues
, Disabled
klucz jest wyświetlany jako Fałsz.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ