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-Processis Gethet 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-Processis Processhet 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 letter U.

    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 het ProcessName begint met p.

    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 naar Where-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 voor Where-Object het gebruik van de -like operator om processen te vinden die beginnen met de letter p.

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-Membertoont 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.

Aanvullende bronnen