Veel mensen gebruiken PowerShell graag omdat ze hiermee dingen kunnen doen die niet mogelijk zijn met de Windows GUI. Toch valt niet te ontkennen dat sommige PowerShell-cmdlets een beetje vervelend of ingewikkeld kunnen zijn. Maar wat als er een manier was om deze cmdlets te kunnen bewerken en ervoor te zorgen dat ze zich gedragen zoals jij dat wilt? Geloof het of niet, er is een gemakkelijke manier om dat te doen. U kunt het gedrag van de cmdlet wijzigen door de waarden van de PowerShell-standaardparameters te wijzigen. In dit artikel wordt beschreven hoe u de standaardparameters van PowerShell kunt gebruiken om het gedrag van cmdlet-opdrachten te wijzigen.
Waarschuwing
Voordat u aan de slag gaat, zijn er een paar dingen waar u rekening mee moet houden. Hoewel het wijzigen van de standaardparameters en het cmdelt-gedrag van PowerShell handig is, kan dit tot problemen leiden. Als u een script uitvoert en dat script ervan uitgaat dat de gewijzigde cmdlet zich op een bepaalde manier gedraagt, krijgt u mogelijk onvoorspelbare resultaten. Zorg er daarom voor dat u de standaardparameters van PowerShell zorgvuldig wijzigt.
Snelle beoordeling
Er zijn twee PowerShell-concepten waarmee u bekend moet zijn om met standaardparameters te kunnen werken. Het eerste concept is variabel. In PowerShell beginnen variabelenamen altijd met een dollarteken, en u kunt de inhoud van een variabele schrijven door de naam van de variabele te typen.
Het tweede concept waarmee u wellicht bekend bent, is de hashtabel. Een hashtabel is in wezen een lijst die bestaat uit sleutel-waardeparen. Stel dat u bijvoorbeeld een hashtabel wilt maken met de namen van Amerikaanse staten en hun afkortingen. Hieronder staat de code:
$StateList = @{}
$StateList.add('Florida','FL')
$StateList.add('South Carolina','SC')
$StateList.add('Georgië','GA')
$StateList
De eerste regel code maakt een lege hashtabel met de naam $StateList . De volgende drie regels voegen vermeldingen toe aan de tabel. Elke invoer bestaat uit een sleutel (staatnaam) en een waarde (staatafkorting). Op de laatste regel wordt de inhoud van de tabel vermeld. Je kunt de code in actie zien in de onderstaande afbeelding.
Dit is slechts een heel eenvoudig voorbeeld en er zijn veel andere manieren om hashtabellen te gebruiken.
Werk met standaardparameters van PowerShell
PowerShell heeft een ingebouwde variabele die wordt gebruikt om standaardparameters op te slaan die worden gebruikt met de cmdlets. Deze variabele heet $PSDefaultParameterValues . Zoals je misschien hebt gemerkt bij de eerste introductie en naam van de variabele, is dit geen gewone variabele, maar een hashtabel. Als u echter de naam van de variabele in PowerShell invoert, zult u snel zien dat de tabel leeg is, zoals hieronder weergegeven.

Dus wat kunnen we doen met deze $PSDefaultParameterValues variabele . Zoals hierboven vermeld, kunt u het gedrag van PowerShell-cmdlets bepalen. Het enige punt is dat je de inherente mogelijkheden van de cmdlet-opdracht niet kunt overwinnen. Laten we dus naar een voorbeeld kijken.
Dit voorbeeld is misschien niet iets dat u in het echte leven wilt gebruiken, maar het laat u zien hoe gemakkelijk het is om het gedrag van cmdlets radicaal te veranderen. Als u de cmdlet Get-TimeZone in PowerShell invoert, ziet u de naam van de tijdzone waarvoor uw pc momenteel is geconfigureerd. Dit voorbeeld zie je in de onderstaande afbeelding.
![Hoe u de standaardparameters van PowerShell kunt gebruiken om het opdrachtgedrag te wijzigen Hoe u de standaardparameters van PowerShell kunt gebruiken om het opdrachtgedrag te wijzigen]()
Nu wijzigen we deze cmdlet zodat deze niet de tijdzone weergeeft waarvoor het systeem is geconfigureerd, maar in plaats daarvan de beschikbare tijdzones. Hiervoor hebben we de cmdlet-syntaxis nodig met behulp van de Get-Help cmdlet gevolgd door de Get-TimeZone cmdlet . Hieronder ziet u de syntaxis van de cmdlet.
![Hoe u de standaardparameters van PowerShell kunt gebruiken om het opdrachtgedrag te wijzigen Hoe u de standaardparameters van PowerShell kunt gebruiken om het opdrachtgedrag te wijzigen]()
Deze syntaxis bevat een parameter met de naam ListAvailable . Voer de onderstaande opdracht in:
$PSDefaultParameterValues.Add(“Get-TimeZone:ListAvailable”,$True)
Het eerste deel van deze opdracht vertelt PowerShell eenvoudigweg dat u een waarde aan de hashtabel wilt toevoegen, net zoals we deden met het voorbeeld van de Amerikaanse staatsafkorting in de vorige sectie. Deze hashtabel bevat een sleutel/waarde-paar. In dit geval is de sleutel de naam van de cmdlet (Get-TimeZone), gevolgd door een komma en de naam van de parameter die u wilt instellen. In dit geval is de parameternaam ListAvailable. Het tweede deel van deze cmdlet is de waarde die u aan de parameter wilt toewijzen. Hier is het $True . De parameter ListAvailable heeft normaal gesproken geen waarde nodig, dus door $True op te geven , vertelt u PowerShell om deze parameter te gebruiken zonder er een waarde aan toe te wijzen.
Als u naar de onderstaande afbeelding kijkt, ziet u wat er gebeurt als u de Get-TimeZone-cmdlet uitvoert.
![Hoe u de standaardparameters van PowerShell kunt gebruiken om het opdrachtgedrag te wijzigen Hoe u de standaardparameters van PowerShell kunt gebruiken om het opdrachtgedrag te wijzigen]()
Dingen om in gedachten te houden
Het belangrijkste dat u moet begrijpen, is dat het toevoegen van een nieuwe waarde voor een PowerShell-standaardparameter het standaardgedrag van de cmdlet wijzigt en niet de mogelijkheden van de cmdlet verwijdert. Zelfs als u de cmdlet Get-TimeZone wijzigt om beschikbare tijdzones weer te geven in plaats van de huidige tijdzone weer te geven. U kunt nog steeds de huidige tijdzone-informatie weergeven als u meer bekijkt.
Een ander ding dat u moet weten, is dat aangepaste standaardparameters kunnen worden verwijderd. Om één item te verwijderen, gebruikt u de opdracht $PSDefaultParameterValues.Remove , gevolgd door de naam van het item dat u wilt verwijderen. Bijvoorbeeld:
$PSDefaultParameterValues.Remove(“Get-TimeZone:ListAvailable”)
In plaats daarvan kunt u de volledige inhoud van de hashtabel verwijderen met behulp van deze opdracht:
$PSDefaultParameterValues.Clear();
Voorbeelden van beide technieken ziet u hieronder:
![Hoe u de standaardparameters van PowerShell kunt gebruiken om het opdrachtgedrag te wijzigen Hoe u de standaardparameters van PowerShell kunt gebruiken om het opdrachtgedrag te wijzigen]()
U kunt de gehele hashtabel verwijderen of een enkel item verwijderen.
Het wijzigen van het standaardgedrag van een cmdlet-opdracht is iets dat u niet vaak doet, maar als u het nodig heeft, weet u al hoe u het moet wijzigen.
Ik wens je succes!
Bekijk meer: