about_Parameters_Default_Values
Korte beschrijving
Hierin wordt beschreven hoe u aangepaste standaardwaarden instelt voor cmdlet-parameters en geavanceerde functies.
Lange beschrijving
Met de $PSDefaultParameterValues
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 in de opdracht opgeeft.
De auteurs van cmdlets en geavanceerde functies stellen standaardwaarden in voor hun parameters. Normaal gesproken zijn de standaardwaarden nuttig, maar deze zijn mogelijk niet geschikt voor alle omgevingen.
Deze functie is vooral handig wanneer u bijna elke keer dezelfde alternatieve parameterwaarde moet opgeven wanneer u de opdracht gebruikt 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 dat verschillende standaardwaarden biedt voor een parameter onder verschillende voorwaarden.
$PSDefaultParameterValues
is geïntroduceerd in PowerShell 3.0.
Syntaxis
De $PSDefaultParameterValues
variabele is een hashtabel waarmee de indeling van sleutels wordt gevalideerd als objecttype System.Management.Automation.DefaultParameterDictionary. De hashtabel bevat sleutel-waardeparen . Een sleutel heeft de indeling CmdletName:ParameterName
. Een waarde is de DefaultValue of ScriptBlock die aan de sleutel is toegewezen.
De syntaxis van de $PSDefaultParameterValues
voorkeursvariabele 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$PSDefaultParameterValues
wilt instellen, wijzigen, toevoegen of verwijderen, gebruikt u de methoden om een standaard-hashtabel te bewerken. Bijvoorbeeld de methoden Toevoegen en Verwijderen . Deze methoden overschrijven geen andere waarden in de hash-tabel.
Er is nog een syntaxis die een bestaande $PSDefaultParameterValues
hash-tabel niet overschrijft. Gebruik de volgende syntaxis om een specifiek sleutel-/waardepaar toe te voegen of te wijzigen:
$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 geen $PSDefaultParameterValues
standaardwaarden opgeven 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 scriptblokwaarde accepteert, plaatst u de waarde van het scriptblok in een tweede set accolades, zoals:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
Zie 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 instellen $PSDefaultParameterValues
, typt u de naam van de variabele en een of meer sleutel-waardeparen . Als u een andere $PSDefaultParameterValues
opdracht uitvoert, wordt de bestaande hash-tabel overschreven.
Zie Waarden toevoegen aan $PSDefaultParameterValues of waarden wijzigen in $PSDefaultParameterValues voor voorbeelden over het wijzigen van sleutel-/waardeparen zonder bestaande hashtabelwaarden te overschrijven.
Als u wilt opslaan $PSDefaultParameterValues
voor toekomstige sessies, voegt u een $PSDefaultParameterValues
opdracht toe aan uw PowerShell-profiel. Zie about_Profiles voor meer informatie.
Een aangepaste standaardwaarde instellen
Met het sleutel-/waardepaar wordt de Send-MailMessage:SmtpServer
sleutel ingesteld op een aangepaste standaardwaarde van Server123.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
Standaardwaarden instellen voor meerdere parameters
Als u standaardwaarden voor meerdere parameters wilt instellen, scheidt u elk sleutel-/waardepaar met een puntkomma (;
). De Send-MailMessage:SmtpServer
en Get-WinEvent:LogName
sleutels worden ingesteld op aangepaste standaardwaarden.
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
Jokertekens gebruiken en parameters wisselen
De cmdlet- en parameternamen kunnen jokertekens bevatten. Gebruik $True
en $False
stel waarden in voor schakelparameters, zoals Uitgebreid. De uitgebreide parameter van de gemeenschappelijke parameter is ingesteld $True
op voor alle opdrachten.
$PSDefaultParameterValues = @{"*:Verbose"=$True}
Een matrix gebruiken voor de standaardwaarde
Als een parameter meerdere waarden kan accepteren, 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 onder verschillende voorwaarden op te geven. PowerShell evalueert het scriptblok en gebruikt het resultaat als de standaardparameterwaarde.
Met de Format-Table:AutoSize
sleutel wordt de parameter ingesteld op een standaardwaarde waar. De If
instructie bevat een voorwaarde dat de $host.Name
PowerShell-console, ConsoleHost, moet zijn.
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
Als een parameter een scriptblokwaarde accepteert, plaatst u het scriptblok in een extra set accolades. Wanneer PowerShell het buitenste scriptblok evalueert, is het resultaat het interne scriptblok en dat is ingesteld als de standaardparameterwaarde.
De Invoke-Command:ScriptBlock
sleutel die is ingesteld op een standaardwaarde van het systeemgebeurtenislogboek , omdat het scriptblok in een tweede set accolades wordt geplaatst. Het resultaat van het scriptblok wordt doorgegeven aan de Invoke-Command
cmdlet.
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
Hoe krijg ik $PSDefaultParameterValues
De hashtabelwaarden worden weergegeven door bij de PowerShell-prompt in te voeren $PSDefaultParameterValues
.
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 een specifieke CmdletName:ParameterName
sleutel op te halen:
$PSDefaultParameterValues["CmdletName:ParameterName"]
Als u bijvoorbeeld de waarde voor de Send-MailMessage:SmtpServer
sleutel wilt ophalen.
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
Waarden toevoegen aan $PSDefaultParameterValues
Als u een waarde wilt $PSDefaultParameterValues
toevoegen, gebruikt u de methode Toevoegen . Het toevoegen van een waarde heeft geen invloed op de bestaande waarden van de hash-tabel.
Gebruik een komma (,
) om de sleutel van de waarde te scheiden. De volgende syntaxis laat zien hoe u de methode Toevoegen gebruikt voor $PSDefaultParameterValues
.
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
De hashtabel die in het vorige voorbeeld is gemaakt, wordt bijgewerkt met een nieuw sleutel-/waardepaar . Met de methode Toevoegen wordt de Get-Process:Name
sleutel ingesteld op de waarde PowerShell.
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
Met de volgende syntaxis wordt hetzelfde resultaat bereikt.
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
De $PSDefaultParameterValues
variabele 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 wilt verwijderen uit $PSDefaultParameterValues
, gebruikt u de methode Remove van hash-tabellen. Het verwijderen van een waarde heeft geen invloed op de bestaande waarden van de hash-tabel.
De volgende syntaxis laat zien hoe u de methode Remove gebruikt voor $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 Get-Process:Name
sleutel verwijderd.
$PSDefaultParameterValues.Remove("Get-Process:Name")
De $PSDefaultParameterValues
variabele 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 zijn niet van invloed op bestaande hashtabelwaarden. Als u een specifiek sleutel-/waardepaar wilt $PSDefaultParameterValues
wijzigen, 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 $PSDefaultParameterValues
variabele 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 weer inschakelen $PSDefaultParameterValues
.
$PSDefaultParameterValues
Uitschakelen is handig als u scripts uitvoert waarvoor verschillende standaardparameterwaarden nodig zijn.
Als u wilt uitschakelen $PSDefaultParameterValues
, voegt u een sleutel toe van Disabled
met de waarde Waar. De waarden blijven $PSDefaultParameterValues
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 hash-tabel 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 is $PSDefaultParameterValues
weer van kracht.
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 de Disabled
sleutel uit de uitvoer verwijderd.
Als de alternatieve syntaxis is gebruikt om opnieuw in te schakelen $PSDefaultParameterValues
, wordt de Disabled
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
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor