Om standardvärden för parametrarAbout Parameters Default Values

Kort beskrivningShort description

Beskriver hur du ställer in anpassade standardvärden för cmdlet-parametrar och avancerade funktioner.Describes how to set custom default values for cmdlet parameters and advanced functions.

Lång beskrivningLong description

Med $PSDefaultParameterValues variabeln Preference kan du ange anpassade standardvärden för valfri cmdlet eller avancerad funktion.The $PSDefaultParameterValues preference variable lets you specify custom default values for any cmdlet or advanced function. Cmdletar och avancerade funktioner använder det anpassade standardvärdet om du inte anger något annat värde i kommandot.Cmdlets and advanced functions use the custom default value unless you specify another value in the command.

Författare av cmdletar och avancerade funktioner ställer in standardvärden för sina parametrar.The authors of cmdlets and advanced functions set standard default values for their parameters. Vanliga standardvärden är vanligt vis användbara, men de är kanske inte lämpliga för alla miljöer.Typically, the standard default values are useful, but they might not be appropriate for all environments.

Den här funktionen är särskilt användbar när du måste ange samma alternativa parameter värde nästan varje gång du använder kommandot eller när ett visst parameter värde är svårt att komma ihåg, till exempel ett e-postservernamn eller projekt-GUID.This feature is especially useful when you must specify the same alternate parameter value nearly every time you use the command or when a particular parameter value is difficult to remember, such as an email server name or project GUID.

Om det önskade standardvärdet varierar förutsägbart kan du ange ett skript block som innehåller olika standardvärden för en parameter under olika förhållanden.If the desired default value varies predictably, you can specify a script block that provides different default values for a parameter under different conditions.

$PSDefaultParameterValues introducerades i PowerShell 3,0.$PSDefaultParameterValues was introduced in PowerShell 3.0.

SyntaxSyntax

$PSDefaultParameterValuesVariabeln är en hash-tabell som verifierar formatet för nycklar som objekt typ av system. Management. Automation. DefaultParameterDictionary.The $PSDefaultParameterValues variable is a hash table that validates the format of keys as an object type of System.Management.Automation.DefaultParameterDictionary. Hash-tabellen innehåller nyckel/värde- par.The hash table contains Key/Value pairs. En nyckel har formatet CmdletName:ParameterName .A Key is in the format CmdletName:ParameterName. Ett värde är DefaultValue eller script block som tilldelats nyckeln.A Value is the DefaultValue or ScriptBlock assigned to the key.

Syntaxen för $PSDefaultParameterValues Preference-variabeln är följande:The syntax of the $PSDefaultParameterValues preference variable is as follows:

$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}

$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }

$PSDefaultParameterValues["Disabled"]=$True | $False

Jokertecken tillåts i värdena CmdletName och ParameterName .Wildcard characters are permitted in the CmdletName and ParameterName values.

Om du vill ange, ändra, lägga till eller ta bort ett speciellt nyckel/värde -par från $PSDefaultParameterValues använder du metoderna för att redigera en standard-hash-tabell.To set, change, add, or remove a specific Key/Value pair from $PSDefaultParameterValues, use the methods to edit a standard hash table. Till exempel metoderna Add och Remove .For example, the Add and Remove methods. Dessa metoder skriver inte över andra värden i hash-tabellen.These methods don't overwrite other values in the hash table.

Det finns en annan syntax som inte skriver över en befintlig $PSDefaultParameterValues hash-tabell.There's another syntax that doesn't overwrite an existing $PSDefaultParameterValues hash table. Om du vill lägga till eller ändra ett speciellt nyckel/värde -par använder du följande syntax:To add or change a specific Key/Value pair, use the following syntax:

$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"

CmdletName måste vara namnet på en cmdlet eller namnet på en avancerad funktion som använder attributet CmdletBinding .The CmdletName must be the name of a cmdlet or the name of an advanced function that uses the CmdletBinding attribute. Du kan inte använda $PSDefaultParameterValues för att ange standardvärden för skript eller enkla funktioner.You can't use $PSDefaultParameterValues to specify default values for scripts or simple functions.

DefaultValue kan vara ett objekt eller ett skript block.The DefaultValue can be an object or a script block. Om värdet är ett-skript block utvärderar PowerShell skript blocket och använder resultatet som parameter värde.If the value is a script block, PowerShell evaluates the script block and uses the result as the parameter value. När den angivna parametern accepterar ett skript Blocks värde, omger du skript block svärdet i en andra uppsättning klammerparenteser, till exempel:When the specified parameter accepts a script block value, enclose the script block value in a second set of braces, such as:

$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }

Mer information finns i följande dokument:For more information, see the following documents:

ExempelExamples

Så här ställer du in $ PSDefaultParameterValuesHow to set $PSDefaultParameterValues

$PSDefaultParameterValues är en inställnings variabel, så den finns bara i den session där den har angetts.$PSDefaultParameterValues is a preference variable, so it exists only in the session in which it's set. Det har inget standardvärde.It has no default value.

Ange $PSDefaultParameterValues genom att skriva variabelns namn och ett eller flera nyckel/värde- par.To set $PSDefaultParameterValues, type the variable name and one or more Key/Value pairs. Om du kör ett annat $PSDefaultParameterValues kommando skriver det över den befintliga hash-tabellen.If you run another $PSDefaultParameterValues command, it overwrites the existing hash table.

Exempel på hur du ändrar nyckel/värde- par utan att skriva över befintliga värden för hash-tabeller finns i så här lägger du till värden i $ PSDefaultParameterValues eller hur du ändrar värden i $ PSDefaultParameterValues.For examples about how to change Key/Value pairs without overwriting existing hash table values, see How to add values to $PSDefaultParameterValues or How to change values in $PSDefaultParameterValues.

Om du vill spara $PSDefaultParameterValues för framtida sessioner lägger du till ett $PSDefaultParameterValues kommando i din PowerShell-profil.To save $PSDefaultParameterValues for future sessions, add a $PSDefaultParameterValues command to your PowerShell profile. Mer information finns i about_Profiles.For more information, see about_Profiles.

Ange ett anpassat standardvärdeSet a custom default value

Nyckel/värde- paret ställer in Send-MailMessage:SmtpServer nyckeln till ett anpassat standardvärde för Server123.The Key/Value pair sets the Send-MailMessage:SmtpServer key to a custom default value of Server123.

$PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123"
}

Ange standardvärden för flera parametrarSet default values for multiple parameters

Om du vill ange standardvärden för flera parametrar, separera varje nyckel/värde -par med ett semikolon ( ; ).To set default values for multiple parameters, separate each Key/Value pair with a semicolon (;). Send-MailMessage:SmtpServerNycklarna och Get-WinEvent:LogName är inställda på anpassade standardvärden.The Send-MailMessage:SmtpServer and Get-WinEvent:LogName keys are set to custom default values.

$PSDefaultParameterValues = @{
  "Send-MailMessage:SmtpServer"="Server123";
  "Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}

Använda jokertecken och växla parametrarUse wildcards and switch parameters

Cmdlet och parameter namn får innehålla jokertecken.The cmdlet and parameter names can contain wildcard characters. Använd $True och $False för att ange värden för växel parametrar, till exempel verbose.Use $True and $False to set values for switch parameters, such as Verbose. Den gemensamma parameterns utförliga parameter har angetts till $True för alla kommandon.The common parameter's Verbose parameter is set to $True for all commands.

$PSDefaultParameterValues = @{"*:Verbose"=$True}

Använd en matris för standardvärdetUse an array for the default value

Om en parameter kan acceptera flera värden, en matris, kan du ange flera värden som standardvärden.If a parameter can accept multiple values, an array, you can set multiple values as the default values. Standardvärdet för Invoke-Command:ComputerName nyckeln anges till ett mat ris värde för Server01 och Server02.The default value of the Invoke-Command:ComputerName key is set to an array value of Server01 and Server02.

$PSDefaultParameterValues = @{
  "Invoke-Command:ComputerName"="Server01","Server02"
}

Använd ett skript blockUse a script block

Du kan använda ett-skript block för att ange olika standardvärden för en parameter under olika villkor.You can use a script block to specify different default values for a parameter under different conditions. PowerShell utvärderar skript blocket och använder resultatet som standard parameter värde.PowerShell evaluates the script block and uses the result as the default parameter value.

De Format-Table:AutoSize nyckel uppsättningar som byter parameter till värdet Sant.The Format-Table:AutoSize key sets that switch parameter to a default value of True. IfInstruktionen innehåller ett villkor som $host.Name måste vara PowerShell-konsolen, ConsoleHost.The If statement contains a condition that the $host.Name must be the PowerShell console, ConsoleHost.

$PSDefaultParameterValues=@{
  "Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}

Om en parameter accepterar ett skript Blocks värde, omger du skript blocket med en extra uppsättning klammerparenteser.If a parameter accepts a script block value, enclose the script block in an extra set of braces. När PowerShell utvärderar det yttre skript blocket är resultatet det inre skript blocket och det anges som standard parameter värde.When PowerShell evaluates the outer script block, the result is the inner script block, and that is set as the default parameter value.

Invoke-Command:ScriptBlockNyckeln har angetts till ett standardvärde för system händelse loggen eftersom skript blocket omges av en andra uppsättning klammerparenteser.The Invoke-Command:ScriptBlock key set to a default value of the System event log because the script block is enclosed in a second set of braces. Resultatet av skript blocket skickas till Invoke-Command cmdlet: en.The result of the script block is passed to the Invoke-Command cmdlet.

$PSDefaultParameterValues=@{
  "Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}

Så här hämtar du $ PSDefaultParameterValuesHow to get $PSDefaultParameterValues

Hash-tabellens värden visas genom att $PSDefaultParameterValues du anger i PowerShell-prompten.The hash table values are displayed by entering $PSDefaultParameterValues at the PowerShell prompt.

En $PSDefaultParameterValues hash-tabell har angetts med tre nyckel/värde- par.A $PSDefaultParameterValues hash table is set with three Key/Value pairs. 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 .This hash table is used in the following examples that describe how to add, change, and remove values from $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

Använd följande syntax för att hämta värdet för en speciell CmdletName:ParameterName nyckel:To get the value of a specific CmdletName:ParameterName key, use the following syntax:

$PSDefaultParameterValues["CmdletName:ParameterName"]

Till exempel för att hämta värdet för Send-MailMessage:SmtpServer nyckeln.For example, to get the value for the Send-MailMessage:SmtpServer key.

PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123

Så här lägger du till värden i $ PSDefaultParameterValuesHow to add values to $PSDefaultParameterValues

$PSDefaultParameterValuesAnvänd metoden Add för att lägga till ett värde i.To add a value to $PSDefaultParameterValues, use the Add method. Om du lägger till ett värde påverkas inte hash-tabellens befintliga värden.Adding a value doesn't affect the hash table's existing values.

Använd kommatecken ( , ) för att avgränsa nyckeln från värdet.Use a comma (,) to separate the Key from the Value. Följande syntax visar hur du använder metoden Add för $PSDefaultParameterValues .The following syntax shows how to use the Add method for $PSDefaultParameterValues.

PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")

Hash-tabellen som skapades i föregående exempel uppdateras med ett nytt nyckel/värde- par.The hash table created in the prior example is updated with a new Key/Value pair. Metoden Add ställer in Get-Process:Name nyckeln till PowerShell -värdet.The Add method sets the Get-Process:Name key to the value PowerShell.

$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")

Följande syntax uppnår samma resultat.The following syntax accomplishes the same result.

$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"

$PSDefaultParameterValuesDen uppdaterade hash-tabellen visas i variabeln.The $PSDefaultParameterValues variable displays the updated hash table. Get-Process:NameNyckeln har lagts till.The Get-Process:Name key was added.

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 $ PSDefaultParameterValuesHow to remove values from $PSDefaultParameterValues

Ta bort ett värde från $PSDefaultParameterValues genom att använda Remove -metoden för hash-tabeller.To remove a value from $PSDefaultParameterValues, use the Remove method of hash tables. Om du tar bort ett värde påverkas inte hash-tabellens befintliga värden.Removing a value doesn't affect the hash table's existing values.

Följande syntax visar hur du använder Remove -metoden i $PSDefaultParameterValues .The following syntax shows how to use the Remove method on $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.In this example, the hash table created in the prior example is updated to remove a Key/Value pair. Metoden Remove tar bort Get-Process:Name nyckeln.The Remove method removes the Get-Process:Name key.

$PSDefaultParameterValues.Remove("Get-Process:Name")

$PSDefaultParameterValuesDen uppdaterade hash-tabellen visas i variabeln.The $PSDefaultParameterValues variable displays the updated hash table. Get-Process:NameNyckeln har tagits bort.The Get-Process:Name key was removed.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    Server123

Ändra värden i $ PSDefaultParameterValuesHow to change values in $PSDefaultParameterValues

Ändringar av ett speciellt värde påverkar inte befintliga värden för hash-tabeller.Changes to a specific value don't affect existing hash table values. Om du vill ändra ett särskilt nyckel/värde -par i $PSDefaultParameterValues använder du följande syntax:To change a specific Key/Value pair in $PSDefaultParameterValues, use the following 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.In this example, the hash table created in the prior example is updated to change a Key/Value pair. Följande kommando ändrar Send-MailMessage:SmtpServer nyckeln till ett nytt värde för ServerXYZ.The following command changes the Send-MailMessage:SmtpServer key to a new value of ServerXYZ.

$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"

$PSDefaultParameterValuesDen uppdaterade hash-tabellen visas i variabeln.The $PSDefaultParameterValues variable displays the updated hash table. Send-MailMessage:SmtpServerNyckeln ändrades till ett nytt värde.The Send-MailMessage:SmtpServer key was changed to a new value.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

Inaktivera och återaktivera $ PSDefaultParameterValuesHow to disable and re-enable $PSDefaultParameterValues

Du kan tillfälligt inaktivera och sedan återaktivera $PSDefaultParameterValues .You can temporarily disable and then re-enable $PSDefaultParameterValues. $PSDefaultParameterValuesAtt inaktivera är användbart om du kör skript som behöver olika standard parameter värden.Disabling $PSDefaultParameterValues is useful if you're running scripts that need different default parameter values.

Om du vill inaktivera $PSDefaultParameterValues lägger du till en nyckel med Disabled värdet Sant.To disable $PSDefaultParameterValues, add a key of Disabled with a value of True. Värdena i $PSDefaultParameterValues bevaras, men är inte effektiva.The values in $PSDefaultParameterValues are preserved, but aren't effective.

PS> $PSDefaultParameterValues.Add("Disabled", $True)

Följande syntax uppnår samma resultat.The following syntax accomplishes the same result.

PS> $PSDefaultParameterValues["Disabled"]=$True

$PSDefaultParameterValuesVariabeln visar den uppdaterade hash-tabellen med värdet för Disabled nyckeln.The $PSDefaultParameterValues variable displays the updated hash table with the value for the Disabled key.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Disabled                       True
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

$PSDefaultParameterValuesTa bort den inaktiverade nyckeln eller ändra värdet för den inaktiverade nyckeln till om du vill aktivera det igen $False .To re-enable $PSDefaultParameterValues, remove the Disabled key or change the value of the Disabled key to $False. Det tidigare värdet för $PSDefaultParameterValues börjar gälla igen.The previous value of $PSDefaultParameterValues is effective again.

PS> $PSDefaultParameterValues.Remove("Disabled")

Följande syntax uppnår samma resultat.The following syntax accomplishes the same result.

PS> $PSDefaultParameterValues["Disabled"]=$False

$PSDefaultParameterValuesDen uppdaterade hash-tabellen visas i variabeln.The $PSDefaultParameterValues variable displays the updated hash table. När metoden Remove används Disabled tas nyckeln bort från utdata.When the Remove method is used, the Disabled key is removed from the output. Om den alternativa syntaxen användes för att aktivera igen $PSDefaultParameterValues Disabled visas nyckeln som falsk.If the alternate syntax was used to re-enable $PSDefaultParameterValues, the Disabled key is displayed as False.

PS> $PSDefaultParameterValues

Name                           Value
----                           -----
Disabled                       False
Get-WinEvent:LogName           Microsoft-Windows-PrintService/Operational
Get-*:Verbose                  True
Send-MailMessage:SmtpServer    ServerXYZ

Se ävenSee also

about_CommonParametersabout_CommonParameters

about_Functions_Advancedabout_Functions_Advanced

about_Functions_CmdletBindingAttributeabout_Functions_CmdletBindingAttribute

about_Hash_Tablesabout_Hash_Tables

about_Preference_Variablesabout_Preference_Variables

about_Profilesabout_Profiles

about_Script_Blocksabout_Script_Blocks