about_Parameters_Default_Values
Kort beskrivning
Beskriver hur du anger anpassade standardvärden för cmdlet-parametrar och avancerade funktioner.
Lång beskrivning
Med $PSDefaultParameterValues
inställningsvariabeln kan du ange anpassade standardvärden för valfri cmdlet eller avancerad funktion. Cmdletar och avancerade funktioner använder det anpassade standardvärdet om du inte anger ett annat värde i kommandot.
Författarna till cmdletar och avancerade funktioner anger standardvärden för sina parametrar. Standardvärdena är vanligtvis användbara, men de kanske inte är lämpliga för alla miljöer.
Den här funktionen är särskilt användbar när du måste ange samma alternativa parametervärde nästan varje gång du använder kommandot eller när ett visst parametervärde är svårt att komma ihåg, till exempel ett e-postservernamn eller projekt-GUID.
Om det önskade standardvärdet varierar förutsägbart kan du ange ett skriptblock som tillhandahåller olika standardvärden för en parameter under olika förhållanden.
$PSDefaultParameterValues
introducerades i PowerShell 3.0.
Syntax
Variabeln $PSDefaultParameterValues
är en hash-tabell som validerar formatet för nycklar som en objekttyp för System.Management.Automation.DefaultParameterDictionary. Hash-tabellen innehåller nyckel/värde-par . En nyckel är i formatet CmdletName:ParameterName
. Ett värde är den DefaultValue eller ScriptBlock som tilldelats nyckeln.
Syntaxen för inställningsvariabeln $PSDefaultParameterValues
är följande:
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
Jokertecken tillåts i värdena CmdletName och ParameterName .
Om du vill ange, ändra, lägga till eller ta bort ett specifikt nyckel/värde-par från $PSDefaultParameterValues
använder du metoderna för att redigera en standardhashtabell. Till exempel metoderna Lägg till och ta bort . Dessa metoder skriver inte över andra värden i hash-tabellen.
Det finns en annan syntax som inte skriver över en befintlig $PSDefaultParameterValues
hash-tabell. Om du vill lägga till eller ändra ett specifikt nyckel/värde-par använder du följande syntax:
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
CmdletName måste vara namnet på en cmdlet eller namnet på en avancerad funktion som använder attributet CmdletBinding. Du kan inte använda $PSDefaultParameterValues
för att ange standardvärden för skript eller enkla funktioner.
DefaultValue kan vara ett objekt eller ett skriptblock. Om värdet är ett skriptblock utvärderar PowerShell skriptblocket och använder resultatet som parametervärde. När den angivna parametern accepterar ett skriptblockvärde omger du skriptblockvärdet i en andra uppsättning klammerparenteser, till exempel:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Mer information finns i följande dokument:
Exempel
Så här ställer du in $PSDefaultParameterValues
$PSDefaultParameterValues
är en inställningsvariabel, så den finns bara i den session där den har angetts. Den har inget standardvärde.
$PSDefaultParameterValues
Ange variabelnamnet och ett eller flera nyckel/värde-par. Om du kör ett annat $PSDefaultParameterValues
kommando skriver det över den befintliga hash-tabellen.
Exempel på hur du ändrar nyckel/värde-par utan att skriva över befintliga hash-tabellvärden finns i Lägga till värden i $PSDefaultParameterValues eller Ändra värden i $PSDefaultParameterValues.
Om du vill spara $PSDefaultParameterValues
för framtida sessioner lägger du till ett $PSDefaultParameterValues
kommando i din PowerShell-profil. Mer information finns i about_Profiles.
Ange ett anpassat standardvärde
Nyckel /värde-paret anger Send-MailMessage:SmtpServer
nyckeln till ett anpassat standardvärde för Server123.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Ange standardvärden för flera parametrar
Om du vill ange standardvärden för flera parametrar separerar du varje nyckel/värde-par med ett semikolon (;
). Nycklarna Send-MailMessage:SmtpServer
och Get-WinEvent:LogName
är inställda på anpassade standardvärden.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Använda jokertecken och växelparametrar
Cmdlet- och parameternamnen kan innehålla jokertecken. Använd $True
och $False
för att ange värden för växelparametrar, till exempel Utförlig. Den gemensamma parameterns utförliga parameter är inställd på $True
för alla kommandon.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Använd en matris för standardvärdet
Om en parameter kan acceptera flera värden, en matris, kan du ange flera värden som standardvärden. Standardvärdet för Invoke-Command:ComputerName
nyckeln är inställt på matrisvärdet Server01 och Server02.
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
Använda ett skriptblock
Du kan använda ett skriptblock för att ange olika standardvärden för en parameter under olika förhållanden. PowerShell utvärderar skriptblocket och använder resultatet som standardparametervärde.
Nyckeln Format-Table:AutoSize
anger som växlar parametern till standardvärdet True. -instruktionen If
innehåller ett villkor som $host.Name
måste vara PowerShell-konsolen ConsoleHost.
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
Om en parameter accepterar ett skriptblockvärde omger du skriptblocket i en extra uppsättning klammerparenteser. När PowerShell utvärderar det yttre skriptblocket blir resultatet det inre skriptblocket och det anges som standardparametervärdet.
Nyckeln Invoke-Command:ScriptBlock
är inställd på ett standardvärde för systemhändelseloggeneftersom skriptblocket omges av en andra uppsättning klammerparenteser. Resultatet av skriptblocket skickas till cmdleten Invoke-Command
.
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
Så här hämtar du $PSDefaultParameterValues
Hash-tabellvärdena visas genom att anges $PSDefaultParameterValues
i PowerShell-prompten.
En $PSDefaultParameterValues
hash-tabell anges med tre nyckel/värde-par .
Den här hash-tabellen används i följande exempel som beskriver hur du lägger till, ändrar och tar bort värden från $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
Om du vill hämta värdet för en specifik CmdletName:ParameterName
nyckel använder du följande syntax:
$PSDefaultParameterValues["CmdletName:ParameterName"]
Till exempel för att hämta värdet för Send-MailMessage:SmtpServer
nyckeln.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Så här lägger du till värden i $PSDefaultParameterValues
Om du vill lägga till ett värde i $PSDefaultParameterValues
använder du metoden Lägg till . Att lägga till ett värde påverkar inte hashtabellens befintliga värden.
Använd ett kommatecken (,
) för att skilja nyckeln från värdet. Följande syntax visar hur du använder metoden Lägg till för $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
Den hash-tabell som skapades i föregående exempel uppdateras med ett nytt nyckel/värde-par . Metoden Lägg till anger Get-Process:Name
nyckeln till värdet PowerShell.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
Följande syntax åstadkommer samma resultat.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
Variabeln $PSDefaultParameterValues
visar den uppdaterade hash-tabellen. Nyckeln Get-Process:Name
har lagts till.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Ta bort värden från $PSDefaultParameterValues
Om du vill ta bort ett värde från $PSDefaultParameterValues
använder du metoden Ta bort för hash-tabeller. Om du tar bort ett värde påverkas inte hashtabellens befintliga värden.
Följande syntax visar hur du använder metoden Ta bort på $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
I det här exemplet uppdateras hash-tabellen som skapades i föregående exempel för att ta bort ett nyckel/värde-par . Metoden Ta bort tar bort Get-Process:Name
nyckeln.
$PSDefaultParameterValues.Remove("Get-Process:Name")
Variabeln $PSDefaultParameterValues
visar den uppdaterade hash-tabellen. Nyckeln Get-Process:Name
har tagits bort.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Ändra värden i $PSDefaultParameterValues
Ändringar i ett visst värde påverkar inte befintliga hash-tabellvärden. Om du vill ändra ett specifikt nyckel/värde-par i $PSDefaultParameterValues
använder du följande syntax:
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
I det här exemplet uppdateras hash-tabellen som skapades i föregående exempel för att ändra ett nyckel/värde-par . Följande kommando ändrar Send-MailMessage:SmtpServer
nyckeln till ett nytt värde för ServerXYZ.
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
Variabeln $PSDefaultParameterValues
visar den uppdaterade hash-tabellen. Nyckeln Send-MailMessage:SmtpServer
ändrades till ett nytt värde.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Inaktivera och återaktivera $PSDefaultParameterValues
Du kan tillfälligt inaktivera och sedan återaktivera $PSDefaultParameterValues
.
Det är användbart att inaktivera $PSDefaultParameterValues
om du kör skript som behöver olika standardparametervärden.
Om du vill inaktivera $PSDefaultParameterValues
lägger du till en nyckel för Disabled
med värdet True. Värdena i $PSDefaultParameterValues
bevaras, men är inte effektiva.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
Följande syntax åstadkommer samma resultat.
PS> $PSDefaultParameterValues["Disabled"]=$True
Variabeln $PSDefaultParameterValues
visar den uppdaterade hash-tabellen med värdet för Disabled
nyckeln.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Om du vill återaktivera $PSDefaultParameterValues
tar du bort nyckeln Inaktiverad eller ändrar värdet för inaktiverad nyckel till $False
. Det tidigare värdet för $PSDefaultParameterValues
gäller igen.
PS> $PSDefaultParameterValues.Remove("Disabled")
Följande syntax åstadkommer samma resultat.
PS> $PSDefaultParameterValues["Disabled"]=$False
Variabeln $PSDefaultParameterValues
visar den uppdaterade hash-tabellen. När metoden Ta bort används Disabled
tas nyckeln bort från utdata.
Om den alternativa syntaxen användes för att återaktivera $PSDefaultParameterValues
Disabled
visas nyckeln som False.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för