functies in PowerShell begrijpen
Maak een PowerShell-functie aan in plaats van dezelfde code steeds opnieuw te kopiëren en te plakken.
wanneer u voor het eerst PowerShell-scripts begint te schrijven, maakt u zich niet noodzakelijkerwijs zorgen over zaken als modulariteit, herbruikbaarheid en “best practices”.”Je krijgt gewoon je voeten nat. Echter, naarmate de tijd vordert, zul je al snel beseffen dat je jezelf begint te herhalen in code.
u zult merken dat de noodzaak om steeds opnieuw hetzelfde te doen steeds groter wordt. Je zou dezelfde code kunnen kopiëren en plakken, maar het is niet duurzaam. In plaats daarvan, waarom niet kleine “bouwstenen” in code, zodat ze kunnen worden hergebruikt? Het is tijd om PowerShell-functies te maken.
een functie in PowerShell is een groepering van code die een optionele input en output heeft. Het is een manier om een hoop code te verzamelen om een of vele verschillende keren uit te voeren door er gewoon naar te wijzen in plaats van die code herhaaldelijk te dupliceren.
basisfuncties
Er zijn twee soorten functies in PowerShell. We hebben een “basis” functie en een geavanceerde functie. “Basisfuncties” zijn de eenvoudigste vorm van een functie die kan worden gecreëerd. Ze hebben niet een van de mooie ingebouwde mogelijkheden die geavanceerde functies doen. Het wordt gemaakt of gedeclareerd met behulp van de functie statement gevolgd door een set van krullende accolades.
functie Do-Something {}
het bovenstaande is technisch gezien een functie die dan aangeroepen kan worden door Do-Something aan te roepen, maar zoals je zult zien doet het niet veel. Dit is omdat we geen code hebben opgenomen om uit te voeren. Laten we enkele eenvoudige code toevoegen om ervoor te zorgen dat het iets doet. Om dit te demonstreren gebruik ik het Write-Host commando dat tekst naar de PowerShell console schrijft.
functie Do-Something {
Write-Host ‘ik heb iets gedaan!’
}
PS > Do-Something
Ik heb iets gedaan!
nu kunt u hierboven zien wanneer aangeroepen; het draait de code in de functie. Wat als we iets willen doorgeven aan de code in de functie als het draait? We kunnen een of meer parameters maken binnen een parameterblok.
functie Do-Something {
param ($String)
Write-Host “ik heb iets gedaan — $String!”}
PS > Do-Something-String ’thing’
Ik heb iets gedaan — thing!
merk op dat ik de String parameter heb opgegeven door een streepje toe te voegen gevolgd door de parameternaam gevolgd door de waarde direct nadat ik Do-Something heb aangeroepen. Dit is de basis van het doorgeven van parameters aan functies.
geavanceerde functies
basisfuncties werken, maar meestal zult u merken dat u een geavanceerde functie maakt. Geavanceerde functies zijn functies die alle functionaliteit als basisfuncties bevatten, maar komen ook met een aantal ingebouwde functies die basisfuncties niet doen. Bijvoorbeeld, PowerShell heeft een concept van streams genaamd fout, waarschuwing, uitgebreide, enz. Deze streams zijn van cruciaal belang voor het correct weergeven van uitvoer aan gebruikers. Basisfuncties begrijpen deze streams niet inherent.
laten we zeggen dat we een foutmelding willen weergeven als er iets gebeurt binnen de functie. Echter, we willen ook de mogelijkheid om deze foutmelding te verbergen voor een of andere reden op slechts bepaalde tijden. Met een basisfunctie zou het kludgy zijn om dit te doen. Echter, met een geavanceerde functie, die functionaliteit is ingebouwd recht in. Geavanceerde functies hebben standaard al parameters, zelfs als je ze niet opneemt zoals uitgebreid, ErrorAction, WarningVariable enzovoort. Deze kunnen op verschillende manieren worden gebruikt. In ons foutvoorbeeld, laten we zeggen dat ik onze functie heb aangepast om “Geavanceerd” te zijn met behulp van het trefwoord.
functie Do-Something {
param ($String)
Write-Error-Message ‘ Danger, Will Robinson!’
}
PS> doe-iets
doe-iets: gevaar, Will Robinson!
op Regel: 1 Teken: 1
+ doe-iets
+ ~~~~~~~~~~~~
+ CategoryInfo: niet gespecificeerd: (:),
WriteErrorException
+ FullyQualifiedErrorId:
Microsoft.PowerShell.Opdracht.WriteErrorException, Do-Something
wanneer dit wordt uitgevoerd, zult u onmiddellijk rode tekst zien die aangeeft dat het uit de foutenstroom kwam. Laten we nu deze fout stilleggen.
doe-iets-ErrorAction SilentlyContinue
De erroraction parameter is slechts één ingebouwde parameter op elke geavanceerde functie. Er is zoveel meer aan PowerShell-functies dat we geen tijd hebben gehad om te behandelen. Voor een volledige uitsplitsing van alles wat geavanceerde functies voor je kunnen doen, refereer je naar het about_advanced_functies Help onderwerp.