Vad är Windows PowerShell Scripting?
Snabblänkar
⭐ Översikt över PowerShell-skript
⭐ Cmdlets i detalj
⭐ PowerShell-parametrar förklaras
⭐ Skapa en pipeline
⭐ Spara Pipeline som ett PS1-skript
⭐ PowerShell finns även på Linux och macOS
Viktiga lärdomar
PowerShell är ett mångsidigt och kraftfullt skriptspråk som är utformat för att underlätta automatisering av olika databehandlingsprocesser, Det ger användarna ett effektivt sätt att effektivisera sina arbetsflöden genom att de kan utföra kommandon och åtgärder i en enhetlig miljö.
Powershell-kommandon, så kallade cmdlets, har var och en en unik funktion. Med kommandot “Get-Command” kan man se alla tillgängliga cmdlets.
PowerShell kan användas i en mängd olika operativsystem, inklusive Windows, macOS och Linux.
PowerShell är ett mångsidigt skriptspråk som är särskilt utformat för att automatisera olika datoruppgifter på ett enkelt, effektivt och tillförlitligt sätt i Windows-baserade system. Lär dig hur du utnyttjar dess funktioner genom att skapa anpassade skript som är skräddarsydda för att uppfylla dina specifika krav.
Översikt över PowerShell-skript
För att kunna börja skapa grundläggande PowerShell-skript i ett Windows-operativsystem är det viktigt att förstå tre grundläggande begrepp:
⭐ Cmdlets: kommandon med en funktion.
Parametrar används för att ange specifika detaljer för exekvering av Cmdlets eller kommandon, inklusive deras syfte, tidpunkt, plats och metodik. Dessa parametrar ger viktig vägledning för att utföra uppgifter på ett kontrollerat och exakt sätt.
Pipeline är en kraftfull funktion i PowerShell som gör att du kan skicka utdata från ett kommando eller en funktion som indata till ett annat, vilket skapar en kedjeliknande struktur. Genom att använda den här funktionen kan du enkelt bygga komplexa skriptuppgifter genom att koppla samman flera kommandon, vilket möjliggör effektiv automatisering och strömlinjeformade arbetsflöden.
Genom att använda alla tre komponenterna är det möjligt att skapa användarvänliga skript som effektiviserar olika processer genom automatisering.
I det här exemplet illustrerar vi hur flera PowerShell-cmdlets integreras för att uppnå ett specifikt mål. Sekvensen av dessa kommandon kallas för en “pipeline”, där varje enskilt kommando bearbetar data och skickar dem vidare till nästa tills det önskade resultatet har uppnåtts.Detta tillvägagångssätt gör det möjligt för användare att utföra komplexa operationer med större effektivitet genom att effektivisera sitt arbetsflöde och minska manuella ingrepp.
För att utföra denna sekvens av åtgärder med PowerShell kan man använda ett kommando som liknar följande:
Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
| Place-Object Bowl
Cmdlets i detalj
PowerShell är utrustad med en uppsättning inbyggda kommandon som gör det möjligt för användare att manipulera systemobjekt och utföra många operationer. Dessa kärnkommandon i PowerShell kallas för Cmdlets.
PowerShell använder en specifik typ av kommando som kallas cmdlets, som är kompakta och utför en enda funktion med hjälp av .dll-tillägget. Dessa små programmeringsenheter har den fördelaktiga egenskapen att de är kortfattat kompilerade, vilket gör att de kan utföras snabbare än mer omfattande funktioner.
PowerShell erbjuder en omfattande uppsättning kommandon med många olika funktioner. Det är inte nödvändigt att behärska alla kommandon, utan det rekommenderas att man börjar med att skaffa sig grundläggande kunskaper och sedan successivt utökar dem under hela sin skripterfarenhet. För att läsa kommandona i CLI (Command Line Interface) som för närvarande är installerade på ditt system, utför följande instruktion:
Get-Command
När man läser resultaten kan man se att de följer ett mönster av verb-noun-konstruktion. Ett sådant arrangemang underlättar förståelsen av funktionen hos en viss Cmdlet.
Powershell innehåller flera inbyggda cmdlets för att utföra olika uppgifter. Kommandot Get-Command returnerar en matris med alla tillgängliga kommandon i Powershell. På samma sätt hämtar kommandot Get-Process information om de processer som körs på systemet. Med cmdletten Copy-Item kan användare dessutom överföra en eller flera filer från en plats till en annan angiven målmapp.
Kommandoradsverktygen åtföljs av omfattande dokumentation som innehåller illustrativa exempel, detaljerade användningsriktlinjer och djupgående förklaringar av deras funktioner.
Om du vill ha mer information om en viss Cmdlet och dess användning kan du utföra följande kommando som ger dig omfattande information:
Get-Help <name-of-cmdlet>
PowerShell-parametrar förklaras
PowerShell-kommandon kan utföras med varierande grad av specificitet genom användning av parametrar. Dessa parametrar ger större kontroll över exekveringen av Cmdlets och funktioner genom att ange faktorer som mål, tidpunkt, plats och metodik.
Ett exempel på detta är att få en lista över aktiva processer i ett operativsystem genom att använda kommandot “Get-Process.
För att få fram en viss process med hjälp av kommandoradsparametrar kan man använda attributet “Name” tillsammans med kommandot “Get-Process”. För att hämta alla instanser av programmet Slack kan användaren t.ex. ange följande kommando:mathematicaGet-Process -Name " Slack
Get-Process -Name Slack
När kommandot har utförts visas en lista över processer med etiketten “slack”.
Vissa variabler har en egenskap som kallas “positionalitet”, vilket innebär att deras beteckning som antingen obligatorisk eller valfri bestäms av sammanhanget snarare än av en uttrycklig etikett. Till exempel, när kommandot Get-Process -Name Slack
anropas, resulterar utelämnandet av parameterns titel i att den inkluderas som positionell, vilket gör att den kan förstås inom det givna sammanhanget utan att behöva en specifik etikett. På samma sätt, när kommandot Get-Process Slack
utförs, gör avsaknaden av specifikation för parametern den också positionell, vilket gör att den kan förstås mot bakgrund av de omgivande omständigheterna utan att kräva en formaliserad identifierare.
Varje Commandlet har sin egen uppsättning acceptabla inparametrar, som kan visas genom att använda kommandot Get-Help och navigera till avsnittet Syntax för den specifika Commandlet.
Get-Help Get-Process
Du kommer att få se en rad tillgängliga metoder för att utföra det angivna kommandot, som omfattar olika parametrar och alternativ.
I det här fallet kan Get-Process-cmdleten acceptera en mängd inparametrar, inklusive men inte begränsat till bland annat Name, Id, ComputerName, Module och FileVersionInfo. Dessa parametrar representerar de olika attribut som kan användas tillsammans med Get-Process-cmdlet för att hämta information om processer som körs på ett datorsystem.
Symbol
|
Namn
|
Betydelse
-|-|-
|
Blank
|
Parameter accepterar inte indata
-
|
Bindestreck
|
|
Bindestreck
|
Anger parameternamn
<>
|
Vinkelparentes
|
Platshållare för text
[]
|
Parentes
|
En parameter som kan ha flera värden, ofta kallad variabel eller fält, är ett element som kan ändras under körningen av ett program och kan påverka dess resultat eller beteende.
{}
|
Klammer
|
Parameter accepterar en uppsättning värden
Vissa parametrar anger de förväntade indatatyperna, inklusive strängar, heltal, booleska tecken och datum. För att illustrera detta kan du titta på följande kodavsnitt:
Get-Process [[-Name] <string[]>]
Parametern Name kan acceptera flera strängvärden, medan den ovan nämnda begränsningen begränsar den till att endast acceptera ett enda värde.
Get-Process -Id <int[]>
Parametern “Id” är utformad för att acceptera ett eller flera heltalsvärden, som kan användas för olika ändamål i programmeringsapplikationer.
För att ytterligare förfina sökningen efter processer och få en mer exakt resultatuppsättning kan man använda parametern “ID” i PowerShell-kommandot “Get-Process”. Denna parameter kräver att ett heltalsvärde anges, vilket specificeras av dess syntax. Genom att inkludera denna parameter i kommandot kan användarna hitta en mer exakt process i listan över tillgängliga alternativ.
Get-Process -Id 3016
Därefter kommer du att observera en enda instans inom uppräkningen:
Skapa en pipeline
PowerShell behandlar information som enheter, vilka är organiserade via en serie kommandon eller funktioner som är sammankopplade med hjälp av en rörsymbol (|). Att välja ut lämpliga kommandon och ordna dem på ett sammanhängande sätt med hjälp av pipeline spelar en avgörande roll för att skapa ett effektivt skript.
Här är ett exempel på hur du kan skapa ett enkelt skript som sorterar och visar de 5 största filerna i en viss katalog baserat på deras storlek, med Python:pythonimport osimport shutildef get_largest_files(directory):# Hämta listan över alla filer i katalogenfile_list = os.listdir(directory)# Sortera listan efter filstorlek (i bytes)sorted_by_size = sorted(file_list, key=os. path.getsize, reverse=True)# Ge endast de första n elementen i den sorterade listanpath.getsize, reverse=True)# Returnera endast de första n elementen i den sorterade listanreturn sorted_by_size[:5]# Exempel på användning:directory = ‘/path/to/your/folder/’top_
Man kan använda en pipelinekonfiguration i PowerShell som uppvisar en viss struktur för att utföra den här uppgiften. Den nämnda pipelinen består av olika komponenter som arbetar tillsammans för att uppnå önskat resultat.
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Spara pipeline som ett PS1-skript
För att säkerställa effektivitet och enkel åtkomst kanske du vill spara din operativa pipeline genom att konvertera den till en PowerShell Script-fil (.ps1) för framtida användning. Detta eliminerar behovet av upprepad manuell inmatning varje gång pipelinen används.
En enkel metod för att skapa en PowerShell Script (PS1)-fil är att klistra in det önskade skriptet direkt i en textredigerare, t.ex. Notepad, och sedan spara det med filändelsen “.ps1”.
Om du vill använda ett PS1-skript i PowerShell utför du kommandot ./ScriptName.ps1
följt av ett kolon.
För att lösa eventuella behörighetsproblem som kan uppstå när du kör ditt skript rekommenderas att du kör PowerShell med administratörsbehörighet. Detta kan åstadkommas genom att initiera en upphöjd PowerShell-session och sedan fortsätta att köra ditt skript inom denna kontext.
Grattis, du kan nu skapa PowerShell PS1-skript.
## PowerShell finns även på Linux och macOS
PowerShell har utvecklats till ett mycket eftertraktat skriptspråk för nybörjare tack vare det användarvänliga gränssnittet och de omfattande funktionerna. Tidigare var det exklusivt för Windows ekosystem, men de senaste uppdateringarna har gjort det möjligt att använda PowerShell på olika plattformar som macOS och flera Linux-distributioner. Denna expansion förbättrar PowerShells mångsidighet ytterligare, vilket gör det möjligt för användare att sömlöst överföra sina färdigheter mellan olika operativsystem.