about_Parameters_Default_Values
Korte beschrijving
Beschrijft hoe u aangepaste standaardwaarden in kunt stellen voor cmdlet-parameters en geavanceerde functies.
Lange beschrijving
Met $PSDefaultParameterValues
de voorkeursvariabele kunt u aangepaste standaardwaarden opgeven voor elke cmdlet of geavanceerde functie. Cmdlets en geavanceerde functies gebruiken de aangepaste standaardwaarde, tenzij u een andere waarde opgeeft in de opdracht .
De auteurs van cmdlets en geavanceerde functies stellen standaardwaarden in voor hun parameters. Normaal gesproken zijn de standaardwaarden nuttig, maar ze zijn mogelijk niet geschikt voor alle omgevingen.
Deze functie is vooral nuttig wanneer u vrijwel elke keer dat u de opdracht gebruikt dezelfde alternatieve parameterwaarde moet opgeven of wanneer een bepaalde parameterwaarde moeilijk te onthouden is, zoals een e-mailservernaam of project-GUID.
Als de gewenste standaardwaarde voorspelbaar varieert, kunt u een scriptblok opgeven met verschillende standaardwaarden voor een parameter onder verschillende voorwaarden.
$PSDefaultParameterValues
is geïntroduceerd in PowerShell 3.0.
Syntax
De $PSDefaultParameterValues
variabele is een hashtabel die de indeling van sleutels valideert als een objecttype van System.Management.Automation.DefaultParameterDictionary. De hashtabel bevat sleutel-waardeparen . Een sleutel heeft de indeling CmdletName:ParameterName
. Een waarde is de DefaultValue of ScriptBlock die is toegewezen aan de sleutel.
De syntaxis van de voorkeursvariabele $PSDefaultParameterValues
is als volgt:
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
Jokertekens zijn toegestaan in de waarden CmdletName en ParameterName .
Als u een specifiek sleutel-waardepaar wilt instellen, wijzigen, toevoegen of verwijderen uit $PSDefaultParameterValues
, gebruikt u de methoden om een standaardhashtabel te bewerken. Bijvoorbeeld de methoden Toevoegen en Verwijderen. Met deze methoden worden andere waarden in de hashtabel niet overschreven.
Er is een andere syntaxis die een bestaande hashtabel $PSDefaultParameterValues
niet overschrijft. Als u een specifiek sleutel-waardepaar wilt toevoegen of wijzigen, gebruikt u de volgende syntaxis:
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
De CmdletName moet de naam zijn van een cmdlet of de naam van een geavanceerde functie die gebruikmaakt van het kenmerk CmdletBinding . U kunt niet gebruiken om standaardwaarden $PSDefaultParameterValues
op te geven voor scripts of eenvoudige functies.
De DefaultValue kan een object of een scriptblok zijn. Als de waarde een scriptblok is, evalueert PowerShell het scriptblok en gebruikt het resultaat als parameterwaarde. Wanneer de opgegeven parameter een waarde voor een scriptblok accepteert, sluit u de waarde van het scriptblok in een tweede set accolades in, zoals:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Raadpleeg de volgende documenten voor meer informatie:
Voorbeelden
$PSDefaultParameterValues instellen
$PSDefaultParameterValues
is een voorkeursvariabele, dus deze bestaat alleen in de sessie waarin deze is ingesteld. Deze heeft geen standaardwaarde.
Als u wilt $PSDefaultParameterValues
instellen, typt u de naam van de variabele en een of meer sleutel/waarde-paren . Als u een andere opdracht $PSDefaultParameterValues
uit te voeren, wordt de bestaande hash-tabel overschreven.
Zie How to add values to $PSDefaultParameterValues (Waarden toevoegen aan PSDefaultParameterValues) of How to change values in PSDefaultParameterValues (Waarden wijzigen in $PSDefaultParameterValues) voor voorbeelden over het wijzigen van sleutel-waardeparen zonder bestaande hash-tabelwaarden te overschrijven.
Als u wilt $PSDefaultParameterValues
opslaan voor toekomstige sessies, voegt u een opdracht $PSDefaultParameterValues
toe aan uw PowerShell-profiel. Zie voor meer informatie about_Profiles.
Een aangepaste standaardwaarde instellen
Het sleutel-waardepaar stelt de sleutel Send-MailMessage:SmtpServer
in op een aangepaste standaardwaarde van Server123.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Standaardwaarden voor meerdere parameters instellen
Als u standaardwaarden voor meerdere parameters wilt instellen, scheidt u elk sleutel-waardepaar met een puntkomma (;
). De Send-MailMessage:SmtpServer
sleutels Get-WinEvent:LogName
en zijn ingesteld op aangepaste standaardwaarden.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Jokertekens en schakelparameters gebruiken
De cmdlet en parameternamen kunnen jokertekens bevatten. Gebruik $True
en om $False
waarden in te stellen voor switchparameters, zoals Uitgebreid. De parameter Verbose van de algemene parameter is ingesteld op $True
voor alle opdrachten.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Een matrix gebruiken voor de standaardwaarde
Als een parameter meerdere waarden kan accepteren, een matrix, kunt u meerdere waarden instellen als de standaardwaarden. De standaardwaarde van de Invoke-Command:ComputerName
sleutel is ingesteld op een matrixwaarde van Server01 en Server02.
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
Een scriptblok gebruiken
U kunt een scriptblok gebruiken om verschillende standaardwaarden voor een parameter op te geven onder verschillende voorwaarden. PowerShell evalueert het scriptblok en gebruikt het resultaat als de standaardparameterwaarde.
Met Format-Table:AutoSize
de sleutel wordt de parameter ingesteld op de standaardwaarde Waar. De If
instructie bevat een voorwaarde dat de $host.Name
de PowerShell-console, ConsoleHost, moet zijn.
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
Als een parameter een blokwaarde voor het script accepteert, sluit u het scriptblok in een extra set accolades. Wanneer PowerShell het buitenste scriptblok evalueert, is het resultaat het binnenste scriptblok en dat is ingesteld als de standaardparameterwaarde.
De Invoke-Command:ScriptBlock
sleutel is ingesteld op een standaardwaarde van het gebeurtenislogboek van Systeem omdat het scriptblok tussen een tweede set accolades staat. Het resultaat van het scriptblok wordt doorgegeven aan de Invoke-Command
cmdlet .
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
$PSDefaultParameterValues krijgen
De hash-tabelwaarden worden weergegeven door in te geven $PSDefaultParameterValues
bij de PowerShell-prompt.
Een $PSDefaultParameterValues
hash-tabel wordt ingesteld met drie sleutel-waardeparen .
Deze hashtabel wordt gebruikt in de volgende voorbeelden waarin wordt beschreven hoe u waarden toevoegt, wijzigt en verwijdert uit $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
Gebruik de volgende syntaxis om de waarde van CmdletName:ParameterName
een specifieke sleutel op te halen:
$PSDefaultParameterValues["CmdletName:ParameterName"]
Bijvoorbeeld om de waarde voor de sleutel op te Send-MailMessage:SmtpServer
halen.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Waarden toevoegen aan $PSDefaultParameterValues
Als u een waarde wilt toevoegen aan $PSDefaultParameterValues
, gebruikt u de methode Add. Het toevoegen van een waarde heeft geen invloed op de bestaande waarden van de hashtabel.
Gebruik een komma (,
) om de sleutel te scheiden van de Waarde. De volgende syntaxis laat zien hoe u de methode Add gebruikt voor $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
De hash-tabel die in het vorige voorbeeld is gemaakt, wordt bijgewerkt met een nieuw sleutel-waardepaar . Met de methode Toevoegen stelt u de Get-Process:Name
sleutel in op de waarde PowerShell.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
Met de volgende syntaxis wordt hetzelfde resultaat bereikt.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
De variabele $PSDefaultParameterValues
geeft de bijgewerkte hash-tabel weer. De Get-Process:Name
sleutel is toegevoegd.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Waarden verwijderen uit $PSDefaultParameterValues
Als u een waarde uit wilt verwijderen $PSDefaultParameterValues
, gebruikt u de methode Remove van hashtabellen. Het verwijderen van een waarde heeft geen invloed op de bestaande waarden van de hashtabel.
De volgende syntaxis laat zien hoe u de methode Remove gebruikt op $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
In dit voorbeeld wordt de hashtabel die in het vorige voorbeeld is gemaakt, bijgewerkt om een sleutel-waardepaar te verwijderen. Met de methode Remove wordt de sleutel Get-Process:Name
verwijderd.
$PSDefaultParameterValues.Remove("Get-Process:Name")
De variabele $PSDefaultParameterValues
geeft de bijgewerkte hash-tabel weer. De Get-Process:Name
sleutel is verwijderd.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
Waarden wijzigen in $PSDefaultParameterValues
Wijzigingen in een specifieke waarde hebben geen invloed op bestaande hash-tabelwaarden. Als u een specifiek sleutel-waardepaar in wilt wijzigen, $PSDefaultParameterValues
gebruikt u de volgende syntaxis:
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
In dit voorbeeld wordt de hashtabel die in het vorige voorbeeld is gemaakt, bijgewerkt om een sleutel-waardepaar te wijzigen. Met de volgende opdracht wordt de Send-MailMessage:SmtpServer
sleutel gewijzigd in een nieuwe waarde van ServerXYZ.
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
De variabele $PSDefaultParameterValues
geeft de bijgewerkte hash-tabel weer. De Send-MailMessage:SmtpServer
sleutel is gewijzigd in een nieuwe waarde.
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
$PSDefaultParameterValues uitschakelen en opnieuw inschakelen
U kunt tijdelijk uitschakelen en vervolgens opnieuw inschakelen $PSDefaultParameterValues
.
Uitschakelen is handig $PSDefaultParameterValues
als u scripts gebruikt die verschillende standaardparameterwaarden nodig hebben.
Als u wilt $PSDefaultParameterValues
uitschakelen, voegt u een sleutel van Disabled
toe met de waarde Waar. De waarden in $PSDefaultParameterValues
blijven behouden, maar zijn niet effectief.
PS> $PSDefaultParameterValues.Add("Disabled", $True)
Met de volgende syntaxis wordt hetzelfde resultaat bereikt.
PS> $PSDefaultParameterValues["Disabled"]=$True
De $PSDefaultParameterValues
variabele geeft de bijgewerkte hashtabel weer met de waarde voor de Disabled
sleutel.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Als u opnieuw wilt inschakelen $PSDefaultParameterValues
, verwijdert u de uitgeschakelde sleutel of wijzigt u de waarde van de uitgeschakelde sleutel in $False
. De vorige waarde van $PSDefaultParameterValues
is weer effectief.
PS> $PSDefaultParameterValues.Remove("Disabled")
Met de volgende syntaxis wordt hetzelfde resultaat bereikt.
PS> $PSDefaultParameterValues["Disabled"]=$False
De $PSDefaultParameterValues
variabele geeft de bijgewerkte hash-tabel weer. Wanneer de methode Remove wordt gebruikt, wordt Disabled
de sleutel verwijderd uit de uitvoer.
Als de alternatieve syntaxis is gebruikt om opnieuw in teschakelen $PSDefaultParameterValues
, Disabled
wordt de sleutel weergegeven als Onwaar.
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
Zie ook
Feedback
Feedback verzenden en weergeven voor