Delen via


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 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 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 de naam van een e-mailserver of project-GUID.

Als de gewenste standaardwaarde voorspelbaar varieert, kunt u een scriptblok opgeven dat verschillende standaardwaarden biedt voor een parameter onder verschillende omstandigheden.

$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 $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 wilt instellen, wijzigen, toevoegen of verwijderen uit $PSDefaultParameterValues, gebruikt u de methoden om een standaard-hashtabel te bewerken. Bijvoorbeeld de methoden Toevoegen en Verwijderen . Deze methoden overschrijven geen andere waarden in de hashtabel.

Er is nog een syntaxis waarmee een bestaande $PSDefaultParameterValues hashtabel niet wordt overschreven. 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 $PSDefaultParameterValues om standaardwaarden 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 wordt het resultaat als parameterwaarde gebruikt. Wanneer de opgegeven parameter een waarde voor een scriptblok accepteert, plaatst u de waarde van het scriptblok in een tweede set accolades, 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 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 hashtabel 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

Het sleutel/waarde-paar stelt de Send-MailMessage:SmtpServer sleutel in 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 sleutels en Get-WinEvent:LogName 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 $False om waarden in te stellen voor schakelparameters, zoals Uitgebreid. De uitgebreide parameter 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( een matrix) 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 op te geven voor een parameter 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 True. 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 waarde voor een scriptblok accepteert, plaatst u het scriptblok tussen 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 systeemgebeurtenislogboek omdat het scriptblok is ingesloten in een tweede set accolades. Het resultaat van het scriptblok wordt doorgegeven aan de Invoke-Command cmdlet.

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

Hoe kom ik aan $PSDefaultParameterValues

De waarden van de hashtabel worden weergegeven door in te voeren $PSDefaultParameterValues bij de PowerShell-prompt.

Een $PSDefaultParameterValues hashtabel wordt ingesteld met drie sleutel-waardeparen . Deze hash-tabel 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"]

Bijvoorbeeld om de waarde voor de Send-MailMessage:SmtpServer sleutel op te halen.

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

Waarden toevoegen aan $PSDefaultParameterValues

Als u een waarde wilt toevoegen aan $PSDefaultParameterValues, gebruikt u de methode Toevoegen . Het toevoegen van een waarde heeft geen invloed op de bestaande waarden van de hashtabel.

Gebruik een komma (,) om de sleutel van de waarde te scheiden. In de volgende syntaxis ziet u 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 Add 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 uit $PSDefaultParameterValueswilt verwijderen, gebruikt u de methode Remove van hash-tabellen. 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/waarde-paar 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 hebben geen invloed op bestaande hashtabelwaarden. Als u een specifiek sleutel-waardepaar in $PSDefaultParameterValueswilt 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/waarde-paar 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. Uitschakelen $PSDefaultParameterValues is handig als u scripts uitvoert waarvoor andere standaardparameterwaarden nodig zijn.

Als u wilt uitschakelen $PSDefaultParameterValues, voegt u een sleutel van Disabled toe met de waarde True. 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 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 van $PSDefaultParameterValues is 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