Discover PowerShell

PowerShell är ett kommandoradsgränssnitt och ett skriptspråk i ett. PowerShell startade i Windows för att automatisera administrativa uppgifter. Nu körs den plattformsoberoende och kan användas för olika uppgifter.

Det som gör PowerShell unikt är att det accepterar och returnerar .NET-objekt i stället för text. Den här funktionen gör det enklare att ansluta olika kommandon i en pipeline.

Vad kan PowerShell användas för?

Användningen av PowerShell har ökat sedan de dagar då det endast var Windows. Den används fortfarande för Windows-uppgiftsautomatisering, men i dag kan du använda den för uppgifter som:

  • Molnhantering. PowerShell kan användas för att hantera molnresurser. Du kan till exempel hämta information om molnresurser samt uppdatera eller distribuera nya resurser.
  • CI/CD. Det kan också användas som en del av en pipeline för kontinuerlig integrering/kontinuerlig distribution.
  • Automatisera uppgifter för Active Directory och Exchange. Du kan använda den för att automatisera nästan alla aktiviteter i Windows som att skapa användare i Active Directory och postlådor i Exchange.

Det finns många fler användningsområden, men föregående lista ger dig en ledtråd om att PowerShell har kommit långt.

Vem använder PowerShell?

PowerShell är ett kraftfullt verktyg som kan hjälpa personer som arbetar i en mängd olika roller. Traditionellt har PowerShell använts av systemadministratörsrollen men används nu av personer som kallar sig DevOps, Cloud Ops och till och med utvecklare.

PowerShell-cmdletar

PowerShell levereras med hundratals förinstallerade kommandon. PowerShell-kommandon kallas cmdletar (uttalas command-lets).

Namnet på varje cmdlet består av ett Verb-Noun-par . Exempel: Get-Process Den här namngivningskonventionen gör det lättare att förstå vad cmdleten gör. Det gör det också lättare att hitta kommandot du letar efter. När du letar efter en cmdlet att använda kan du filtrera på verbet eller substantivet.

Använda cmdletar för att utforska PowerShell

När du först hämtar PowerShell kan det kännas skrämmande eftersom det verkar finnas så mycket att lära. PowerShell är utformat för att hjälpa dig att lära dig lite i taget, eftersom du behöver det.

PowerShell innehåller cmdletar som hjälper dig att identifiera PowerShell. Med hjälp av dessa tre cmdletar kan du identifiera vilka kommandon som är tillgängliga, vad de gör och vilka typer de fungerar på.

  • Get-Verb. När du kör det här kommandot returneras en lista med verb som de flesta kommandon följer. Svaret innehåller en beskrivning av vad dessa verb gör. Eftersom de flesta kommandon följer den här namngivningskonventionen anger den förväntningar på vad ett kommando gör. Detta hjälper dig att välja rätt kommando och vad du vill namnge ett kommando, om du skapar ett.
  • Get-Command. Det här kommandot hämtar en lista över alla kommandon som är installerade på datorn.
  • Get-Member. Den fungerar på objektbaserade utdata och kan identifiera vilka objekt, egenskaper och metoder som är tillgängliga för ett kommando.
  • Get-Help. Om du anropar det här kommandot med namnet på ett kommando som argument visas en hjälpsida som beskriver olika delar av ett kommando.

Med de här kommandona kan du identifiera nästan allt du behöver veta om PowerShell.

Verb

Verb är ett viktigt begrepp i PowerShell. Det är en namngivningsstandard som de flesta cmdletar följer. Det är också en namngivningsstandard som du förväntas följa när du skriver egna kommandon. Tanken är att verbet säger vad du försöker göra, som att läsa eller kanske ändra data. PowerShell har en standardiserad lista över verb. Om du vill få en fullständig lista över alla möjliga verb använder du cmdleten Get-Verb :

Get-Verb

Cmdleten returnerar en lång lista med verb. Beskrivningen ger kontext för vad verbet är avsett att göra. Här är de första raderna med utdata:

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

Hitta kommandon med Get-Command

Cmdleten Get-Command returnerar en lista över alla tillgängliga kommandon som är installerade på systemet. Listan du får tillbaka är ganska stor. Du kan begränsa mängden information som kommer tillbaka genom att filtrera svaret med hjälp av parametrar eller hjälp cmdletar.

Filtrera efter namn

Du kan filtrera utdata från med hjälp av Get-Command olika parametrar. Med filtrering kan du hitta kommandon som har vissa egenskaper. Med parametern Namn kan du hitta ett specifikt kommando efter namn.

Get-Command -Name Get-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management

Vad händer om du vill hitta alla kommandon som fungerar med processer? Du kan använda ett jokertecken * för att matcha andra former av strängen. Till exempel:

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

Filtrering på substantiv och verb

Det finns andra parametrar som filtrerar på verb- och substantivvärden. Verbdelen i ett kommandos namn är den vänstra delen. Verbet ska vara ett av de värden som returneras av cmdleten Get-Verb . Den högra delen av ett kommando är substantivdelen. Ett substantiv kan vara vad som helst.

  • Filtrera på verb. I kommandot Get-Processär Getverbdelen . Om du vill filtrera på verbdelen använder du verbparametern.

    Get-Command -Verb 'Get'
    

    I det här exemplet visas alla kommandon som använder verbet Get.

  • Filtrera efter substantiv. I kommandot Get-Processär Processsubstantivdelen . Om du vill filtrera på substantivet använder du substantivparametern. I följande exempel returneras alla cmdletar som har substantiv som börjar med bokstaven U.

    Get-Command -Noun U*
    

Du kan också kombinera parametrar för att begränsa sökningen, till exempel:

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

Använda hjälp-cmdletar för att filtrera resultat

Du kan också använda andra cmdletar för att filtrera resultat.

  • Select-Object. Det här mångsidiga kommandot hjälper dig att välja ut specifika egenskaper från ett eller flera objekt. Du kan också begränsa antalet objekt som du får tillbaka. I följande exempel returneras egenskapsvärdena Namn och Källa för de första 5 kommandona som är tillgängliga i den aktuella sessionen.

    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
    

    Mer information finns i Välj objekt.

  • Where-Object. Med den här cmdleten kan du filtrera objekten som returneras baserat på egenskapernas värden. Kommandot tar ett uttryck som kan testa värdet för en egenskap. I följande exempel returneras alla processer där ProcessName börjar med p.

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    Cmdleten Get-Process returnerar en samling processobjekt. Filtrera svaret genom att skicka utdata till Where-Object. Rördragning innebär att två eller flera kommandon är anslutna via ett pipe-tecken | . Utdata från ett kommando skickas som indata för nästa kommando. Filteruttrycket för använder operatorn -like för Where-Object att matcha processer som börjar med bokstaven p.

Utforska objekt med Get-Member

När du har kunnat hitta den cmdlet som du vill ha vill du veta mer om vilka utdata som genereras. Cmdleten Get-Member visar typ, egenskaper och metoder för ett objekt. Skicka utdata som du vill inspektera till Get-Member.

Get-Process | Get-Member

Resultatet visar den returnerade typen som TypeName och alla egenskaper och metoder för objektet. Här är ett utdrag av ett sådant resultat:

TypeName: System.Diagnostics.Process

Name        MemberType     Definition
----        ----------     ----------
Handles     AliasProperty  Handles = Handlecount
Name        AliasProperty  Name = ProcessName
...

Med parametern MemberType kan du begränsa den information som returneras.

Get-Process | Get-Member -MemberType Method

Som standard visar PowerShell bara några få egenskaper. I föregående exempel visades Name, MemberType och Definition medlemmar. Du kan använda Select-Object för att ange egenskaper som du vill se. Du vill till exempel bara Name visa egenskaperna och Definition :

Get-Process | Get-Member | Select-Object Name, Definition

Sök efter parametertyp

Get-Member visade oss som Get-Process returnerar objekt av processtyp . ParameterType-parametern Get-Command för kan användas för att hitta andra kommandon som tar Process-objekt som indata.

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…

Att känna till utdatatypen för ett kommando kan hjälpa dig att begränsa sökningen efter relaterade kommandon.

Ytterligare resurser