10Aug

Geek School: Leren gebruik te maken van Cmdlets in PowerShell

click fraud protection

Als je ipconfig hebt gebruikt of via de opdrachtprompt hebt gepingd, ben je al bijna een PowerShell-ninja. Dus kom eraan en doe mee als we cmdlets ontdekken in deze installatie van Geek School.

Bekijk eerst ons eerste artikel over PowerShell en blijf op de hoogte voor de rest van onze serie, de hele week lang.

De anatomie van een Cmdlet

In het eerste deel van de serie zagen we een cmdlet die er ongeveer zo uitzag:

Update-Help

PowerShell-cmdlets hebben een syntaxis van Verb-Noun, die hierboven te zien is. Het belangrijkste om op te merken is dat het zelfstandig naamwoord altijd enkelvoud is, ook al kan de cmdlet meer dan één resultaat opleveren. Als u een lijst met juridische werkwoorden in PowerShell wilt bekijken, gebruikt u de cmdlet Get-verbing.

Het kennen van de wettelijke werkwoorden en het onthouden van de regel van het enkelvoudige naamwoordwoord helpt echt bij het raden van cmdletnamen. Stel dat u een lijst van -services en hun status wilt geven, dat klopt, het is net zo eenvoudig als Get-Service. Hoe denk je dat we

instagram viewer
een lijst van lopende -processen zouden krijgen - dat klopt, Get-Process zal het lukken.

Get-Process

Dit maakt het heel gemakkelijk om met elke technologie te werken. Als u bijvoorbeeld de Exchange-cmdlets hebt geladen, kunnen we gemakkelijk een lijst met postvakken op de server krijgen met behulp van:

Get-Mailbox

Er is echter een uitzondering. Opzij zetten, alle andere technologie-specifieke commando's vereisen een prefix. Als we bijvoorbeeld de gebruikers willen hebben die momenteel zijn aangemeld via Extern bureaublad, typen we:

Get-RDUserSession

Dit is te zien in de onderstaande schermafbeelding.

Opmerking: Deze schermafbeelding is gemaakt op een vak voor Server 2012, omdat u daar de meeste van de technologie-specifieke modules zult vinden.

Een tijdje geleden las ik een artikel van Don Jones, de peetvader van PowerShell, waarin hij uitlegde dat Exchange werd verzonden voordat dit voorvoegsel werd toegevoegd aan cmdlets, dus het heeft ze nooit geïmplementeerd en zal het nooit doen.

Aliassen

Een andere functie waarmee PowerShell wordt geleverd, is de mogelijkheid om meerdere manieren te hebben om dezelfde opdracht uit te voeren - aliassen, als u wilt. Het geweldige aan hen is dat ze veel commando's bevatten die je misschien al in de opdrachtprompt gebruikte, evenals enkele Linux-aliassen. In PowerShell kunnen we bijvoorbeeld een directoryvermelding krijgen met behulp van:

Get-ChildItem

Wordt gebruikt om de opdrachtprompt te gebruiken? Maak je geen zorgen, ze hebben jou gedekt.

Hebt u een Linux-achtergrond? Ze hebben je daar ook gedekt.

Wanneer je een paar jaar hebt gescripte, heb je de neiging om lui te worden en veel aliassen te gaan gebruiken, maar dit helpt geen nieuwkomers die onze code gaan lezen. Om te zien welk commando een alias onder de motorkap uitvoert, kun je het volgende gebruiken:

Get-Alias ​​-Name ls

Aan de andere kant, als je voelt dat het tijd is om je game op te starten, kun je de definitieparameter gebruiken om te krijgenalle aliassen voor een cmdlet:

Get-ChildItem -Definitie Get-ChildItem

Als u van een andere achtergrond komt, kunt u uw eigen aliassen toevoegen door het volgende te doen:

Nieuw-alias -Name icanhazfilez -Value Get-ChildItem

Uiteraard,je moet "icanhazfilez" vervangen door de naam van je nieuwe alias en Get-ChildItem met de cmdlet die je wilt dat deze onder de motorkap loopt.

Een ding om op te merken is dat je alle aliassen verliest die je hebt gedefinieerd wanneer je de shell afsluit. Je kunt dit omzeilen door hun definitie toe te voegen aan je profielscript.

Truncatieparameters

Windows PowerShell maakt het ook mogelijk om parameternamen af ​​te kappen tot het punt waarop ze dubbelzinnig worden, dat wil zeggen tot het punt waarop PowerShell niet meer kan achterhalen over welke parameter u het hebt. Bijvoorbeeld:

Get-Service -Name 'Apple Mobile Device' -ComputerName localhost

Is hetzelfde als:

Get-Service -Na 'Apple Mobile Device' -Com localhost

Als je toevallig de parameters namen te ambigu maaktkrijgt een foutmelding.

Legacy-opdrachten

Ten slotte werken de opdrachten die u kent en leuk vindt nog steeds in PowerShell.

ping www.google.com

Vergeet niet dat legacy-applicaties zoals ping output een string zijn, en er is vaak een betere manier om hetzelfde te doen met een PowerShell-cmdlet.

In plaats van een lange reeks tekst uit te voeren, hebben we nu een object, dat we in de editie van morgen van Geek School zullen bekijken.