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
ärGet
verbdelen . 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
ärProcess
substantivdelen . Om du vill filtrera på substantivet använder du substantivparametern. I följande exempel returneras alla cmdletar som har substantiv som börjar med bokstavenU
.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ärProcessName
börjar medp
.Get-Process | Where-Object {$_.ProcessName -like "p*"}
Cmdleten
Get-Process
returnerar en samling processobjekt. Filtrera svaret genom att skicka utdata tillWhere-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örWhere-Object
att matcha processer som börjar med bokstavenp
.
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.