Ontdek PowerShell
PowerShell is een opdrachtregelshell en een scripttaal in één. PowerShell is gestart in Windows om beheertaken te automatiseren. Nu wordt het platformoverschrijdend uitgevoerd en kan het worden gebruikt voor verschillende taken.
Het enige dat PowerShell uniek maakt, is dat deze .NET-objecten accepteert en retourneert in plaats van tekst. Met deze functie kunt u eenvoudiger verschillende opdrachten in een pijplijn verbinden.
Waarvoor kan PowerShell worden gebruikt?
Het gebruik van PowerShell is sinds de dagen dat het alleen Windows was, toegenomen. Het wordt nog steeds gebruikt voor Automatisering van Windows-taken, maar tegenwoordig kunt u deze gebruiken voor taken zoals:
- Cloudbeheer. PowerShell kan worden gebruikt voor het beheren van cloudresources. U kunt bijvoorbeeld informatie over cloudresources ophalen en nieuwe resources bijwerken of implementeren.
- CI/CD. Het kan ook worden gebruikt als onderdeel van een pijplijn voor continue integratie/continue implementatie.
- Automatiseer taken voor Active Directory en Exchange. U kunt deze gebruiken om bijna elke taak in Windows te automatiseren, zoals het maken van gebruikers in Active Directory en postvakken in Exchange.
Er zijn nog veel meer gebruiksgebieden, maar de voorgaande lijst geeft u een hint dat PowerShell een lange weg is gekomen.
Wie Gebruikmaakt van PowerShell?
PowerShell is een krachtig hulpprogramma waarmee mensen in een groot aantal rollen kunnen werken. PowerShell wordt traditioneel gebruikt door de rol System Beheer istrator, maar wordt nu gebruikt door mensen die zichzelf DevOps, Cloud Ops en zelfs ontwikkelaars noemen.
PowerShell-cmdlets
PowerShell wordt geleverd met honderden vooraf geïnstalleerde opdrachten. PowerShell-opdrachten worden cmdlets genoemd (uitgesproken als command-lets).
De naam van elke cmdlet bestaat uit een werkwoord-zelfstandig naamwoordpaar . Bijvoorbeeld: Get-Process
. Deze naamconventie maakt het gemakkelijker om te begrijpen wat de cmdlet doet. Het maakt het ook gemakkelijker om de opdracht te vinden die u zoekt. Wanneer u op zoek bent naar een cmdlet die u wilt gebruiken, kunt u filteren op het werkwoord of zelfstandig naamwoord.
Cmdlets gebruiken om PowerShell te verkennen
Wanneer u PowerShell voor het eerst oppikt, voelt het zich misschien intimiderend omdat er zoveel te leren is. PowerShell is ontworpen om u te helpen een beetje tegelijk te leren, omdat u het nodig hebt.
PowerShell bevat cmdlets waarmee u PowerShell kunt detecteren. Met deze drie cmdlets kunt u ontdekken welke opdrachten beschikbaar zijn, wat ze doen en op welke typen ze werken.
Get-Verb
. Als u deze opdracht uitvoert, wordt een lijst met werkwoorden geretourneerd waaraan de meeste opdrachten voldoen. Het antwoord bevat een beschrijving van wat deze werkwoorden doen. Omdat de meeste opdrachten deze naamconventie volgen, worden verwachtingen ingesteld over wat een opdracht doet. Dit helpt u bij het selecteren van de juiste opdracht en de naam van een opdracht, als u er een maakt.Get-Command
. Met deze opdracht wordt een lijst opgehaald met alle opdrachten die op uw computer zijn geïnstalleerd.Get-Member
. Het werkt op object gebaseerde uitvoer en kan detecteren welk object, welke eigenschappen en methoden beschikbaar zijn voor een opdracht.Get-Help
. Als u deze opdracht aanroept met de naam van een opdracht als argument, wordt een Help-pagina weergegeven waarin verschillende onderdelen van een opdracht worden beschreven.
Met deze opdrachten kunt u vrijwel alles ontdekken wat u moet weten over PowerShell.
Term
Werkwoord is een belangrijk concept in PowerShell. Het is een naamgevingsstandaard die de meeste cmdlets volgen. Het is ook een naamgevingsstandaard die u verwacht te volgen wanneer u uw eigen opdrachten schrijft. Het idee is dat het werkwoord zegt wat u probeert te doen, zoals het lezen of wijzigen van gegevens. PowerShell heeft een gestandaardiseerde lijst met werkwoorden. Gebruik de Get-Verb
cmdlet om een volledige lijst met alle mogelijke werkwoorden op te halen:
Get-Verb
De cmdlet retourneert een lange lijst met werkwoorden. De beschrijving biedt context voor wat het werkwoord moet doen. Dit zijn de eerste paar rijen met uitvoer:
Verb AliasPrefix Group Description
---- ----------- ----- -----------
Add a Common Adds a resource to a container, or attaches an item to another item
Clear cl Common Removes all the resources from a container but does not delete the container
Close cs Common Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy cp Common Copies a resource to another name or to another container
Enter et Common Specifies an action that allows the user to move into a resource
Exit ex Common Sets the current environment or context to the most recently used context
...
Opdrachten zoeken met Get-Command
De Get-Command
cmdlet retourneert een lijst met alle beschikbare opdrachten die op uw systeem zijn geïnstalleerd. De lijst die je terug krijgt, is vrij groot. U kunt de hoeveelheid informatie beperken die wordt geretourneerd door het antwoord te filteren met behulp van parameters of helper-cmdlets.
Filteren op naam
U kunt de uitvoer filteren van het gebruik van Get-Command
verschillende parameters. Met filteren kunt u opdrachten met bepaalde eigenschappen vinden. Met de parameter Name kunt u een specifieke opdracht vinden op naam.
Get-Command -Name Get-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
Wat moet u doen als u alle opdrachten wilt vinden die met processen werken? U kunt een jokerteken *
gebruiken om andere vormen van de tekenreeks te vinden. Voorbeeld:
Get-Command -Name *-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Start-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Management
Filteren op zelfstandig naamwoord en werkwoord
Er zijn andere parameters die filteren op waarden voor werkwoorden en zelfstandig naamwoorden. Het werkwoordgedeelte van de naam van een opdracht is het meest linkse gedeelte. Het werkwoord moet een van de waarden zijn die worden geretourneerd door de Get-Verb
cmdlet. Het meest rechtse deel van een opdracht is het zelfstandig naamwoord. Een zelfstandig naamwoord kan alles zijn.
Filter op werkwoord. In de opdracht
Get-Process
isGet
het werkwoordgedeelte. Als u wilt filteren op het werkwoordonderdeel, gebruikt u de parameter Werkwoord .Get-Command -Verb 'Get'
In dit voorbeeld worden alle opdrachten weergegeven die gebruikmaken van het werkwoord
Get
.Filter op zelfstandig naamwoord. In de opdracht
Get-Process
isProcess
het zelfstandig naamwoord. Als u wilt filteren op het zelfstandig naamwoord, gebruikt u de parameter Zelfstandig naamwoord . In het volgende voorbeeld worden alle cmdlets geretourneerd met zelfstandige naamwoorden die beginnen met de letterU
.Get-Command -Noun U*
U kunt ook parameters combineren om uw zoekopdracht te verfijnen, bijvoorbeeld:
Get-Command -Verb Get -Noun U*
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-UICulture 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Unique 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Uptime 7.0.0.0 Microsoft.PowerShell.Utility
Helper-cmdlets gebruiken om resultaten te filteren
U kunt ook andere cmdlets gebruiken om resultaten te filteren.
Select-Object
. Met deze veelzijdige opdracht kunt u specifieke eigenschappen uit een of meer objecten kiezen. U kunt ook het aantal items beperken dat u terugkrijgt. In het volgende voorbeeld worden de waarden van de eigenschap Naam en Bron geretourneerd voor de eerste vijf opdrachten die beschikbaar zijn in de huidige sessie.Get-Command | Select-Object -First 5 -Property Name, Source
Name Source ---- ------ Add-AppPackage Appx Add-AppPackageVolume Appx Add-AppProvisionedPackage Dism Add-AssertionOperator Pester Add-ProvisionedAppPackage Dism
Zie Select-Object voor meer informatie.
Where-Object
. Met deze cmdlet kunt u de objecten filteren die worden geretourneerd op basis van de waarden van eigenschappen. Met de opdracht wordt een expressie gebruikt waarmee de waarde van een eigenschap kan worden getest. In het volgende voorbeeld worden alle processen geretourneerd waarbij hetProcessName
begint metp
.Get-Process | Where-Object {$_.ProcessName -like "p*"}
De
Get-Process
cmdlet retourneert een verzameling procesobjecten. Als u het antwoord wilt filteren, sluist u de uitvoer door naarWhere-Object
. Piping betekent dat twee of meer opdrachten zijn verbonden via een pipe-teken|
. De uitvoer van de ene opdracht wordt verzonden als invoer voor de volgende opdracht. De filterexpressie voorWhere-Object
het gebruik van de-like
operator om processen te vinden die beginnen met de letterp
.
Objecten verkennen met Get-Member
Zodra u de gewenste cmdlet hebt gevonden, wilt u meer weten over de uitvoer die het produceert. De Get-Member
cmdlet geeft het type, de eigenschappen en methoden van een object weer. Sluis de uitvoer die u wilt inspecteren.Get-Member
Get-Process | Get-Member
Het resultaat geeft het geretourneerde type weer als TypeName
en alle eigenschappen en methoden van het object. Hier volgt een fragment van een dergelijk resultaat:
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
...
Met de parameter MemberType kunt u de geretourneerde informatie beperken.
Get-Process | Get-Member -MemberType Method
Standaard worden in PowerShell slechts enkele eigenschappen weergegeven. In het vorige voorbeeld zijn de Name
, MemberType
en Definition
leden weergegeven. U kunt de Select-Object
eigenschappen opgeven die u wilt zien. U wilt bijvoorbeeld alleen de eigenschappen en Definition
de Name
eigenschappen weergeven:
Get-Process | Get-Member | Select-Object Name, Definition
Zoeken op parametertype
Get-Member
toont ons dat Get-Process
procestypeobjecten retourneert. De parameter ParameterType van Get-Command
kan worden gebruikt om andere opdrachten te vinden die procesobjecten als invoer gebruiken.
Get-Command -ParameterType Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Enter-PSHostProcess 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Get-PSHostProcessInfo 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Als u het uitvoertype van een opdracht kent, kunt u uw zoekopdracht naar gerelateerde opdrachten verfijnen.