PowerShell är en ram för automatisering av uppgifter och konfigurationshantering som utvecklats av Microsoft, och består av en kommandoradsgränssnitt och ett tillhörande skriptspråk. Ursprungligen riktad mot systemadministratörer, erbjuder PowerShell ett kraftfullt gränssnitt för att automatisera uppgifter och hantera systemkonfigurationer med hjälp av skript och cmdlets (lätta kommandon). Under åren har PowerShell vuxit i kapabilitet och har utvecklats avsevärt, med betoning på sin integration med .NET-ramverket och möjligheten till plattformsoberoende användning med PowerShell Core.
PowerShell introducerades först 2006 som "Monad", främst för att förbättra systemadministrationen på Windows. Det skapade en bro mellan användare och de underliggande systemprocesserna, med fokus på kommandorads-skriptning. Dess design påverkades av Unix-skal, med betoning på objektorienterad programmering genom .NET-ramverkets kapabiliteter.
Med lanseringen av Windows Management Framework (WMF) 3.0 2012 blev PowerShell mer robust, med nya funktioner som arbetsflöden och moduler. Ankomsten av PowerShell Core (version 6) 2016 markerade en betydande milstolpe, eftersom det var utformat för att köras på macOS och Linux, vilket breddade dess räckvidd bortom Windows-ekosystemet.
I dagsläget fortsätter PowerShell att utvecklas med en öppen källkod-modell, vilket möjliggör bidrag från utvecklare runt om i världen. De senaste versionerna har införlivat avancerade funktioner, vilket gör det relevant inte bara för systemadministration utan också för bredare skript- och automatiseringsuppgifter över olika plattformar. Dess relation med .NET har blivit djupare, vilket etablerar det som ett kraftfullt skriptverktyg för utvecklare i olika miljöer.
PowerShell-kommandon, kända som cmdlets, följer en verb-substantiv namngivningskonvention.
Get-Process
PowerShell stöder pipelining, vilket gör att utdata från en cmdlet kan användas som indata till en annan.
Get-Process | Where-Object { $_.CPU -gt 100 }
Variabler i PowerShell föregås av $
och kan hålla en mängd olika datatyper.
$greeting = "Hej, världen!"
PowerShell stöder natively arrayer och hash-tabeller för enkel datamanipulation.
$array = @(1, 2, 3)
$hash = @{"nyckel" = "värde"}
Du kan definiera återanvändbara funktioner i PowerShell.
function Greet {
param($name)
"Hej, $name!"
}
Felhantering i PowerShell kan hanteras med hjälp av try/catch-block.
try {
Get-Process -Name "nonexistent"
} catch {
Write-Host "Ett fel inträffade: $_"
}
PowerShell-skript sparas med en .ps1
-tillägg och kan köras direkt.
# myscript.ps1
Write-Host "Kör mitt PowerShell-skript"
PowerShell behandlar data som objekt, vilket gör det enkelt att komma åt och manipulera egenskaper.
$process = Get-Process -Name "powershell"
$process.Id
PowerShell tillåter dig att paketera och distribuera funktioner som moduler.
Import-Module MyModule
PowerShell stöder fjärråtkomst, vilket möjliggör körning av kommandon på fjärrmaskiner.
Enter-PSSession -ComputerName Server01
PowerShell körs på .NET-körningstiden, vilket underlättar körningen av PowerShell-skript och cmdlets på ett mycket effektivt sätt.
Flera IDE:er och redigerare stöder PowerShell-utveckling, inklusive:
För att skapa ett PowerShell-skript kan utvecklare skriva sin kod i valfri textredigerare och spara den med en .ps1
-tillägg. Projekt kan inkludera flera skript och moduler, organiserade i mappar.
PowerShell används i stor utsträckning inom olika sektorer för:
PowerShell har relationer med olika programmeringsspråk:
PowerShell-skript kan översättas till språk som stöder automatisering och skriptuppgifter, som Python eller Bash. Även om det inte finns några direkta verktyg för käll-till-käll-översättning, kan manuell konvertering innebära att man skriver om cmdlets till motsvarande kommandon eller funktioner i målspråket.
Befintliga verktyg för käll-till-käll-översättning inkluderar: