PowerShell is een taakautomatiserings- en configuratiebeheerkader ontwikkeld door Microsoft, bestaande uit een opdrachtregelinterface en een bijbehorende scripttaal. Oorspronkelijk gericht op systeembeheerders, biedt PowerShell een krachtige interface om taken te automatiseren en systeemconfiguraties te beheren met behulp van scripts en cmdlets (lichte opdrachten). In de loop der jaren is PowerShell in mogelijkheden gegroeid en heeft het zich aanzienlijk ontwikkeld, met de nadruk op de integratie met het .NET-framework en de mogelijkheid voor cross-platform gebruik met PowerShell Core.
PowerShell werd voor het eerst geïntroduceerd in 2006 als "Monad," voornamelijk om systeembeheer op Windows te verbeteren. Het creëerde een brug tussen gebruikers en de onderliggende systeemprocessen, met de focus op opdrachtregel-scripting. Het ontwerp was beïnvloed door Unix-shells, met een nadruk op objectgeoriënteerd programmeren via de mogelijkheden van het .NET-framework.
Met de release van Windows Management Framework (WMF) 3.0 in 2012 werd PowerShell robuuster, met de introductie van functies zoals workflows en modules. De komst van PowerShell Core (versie 6) in 2016 markeerde een belangrijke mijlpaal, omdat het was ontworpen om te draaien op macOS en Linux, waardoor het bereik verder werd vergroot dan het Windows-ecosysteem.
Op dit moment wordt PowerShell verder ontwikkeld met een open-source model, waardoor bijdragen van ontwikkelaars over de hele wereld mogelijk zijn. De nieuwste versies hebben geavanceerde functionaliteiten geïntegreerd, waardoor het relevant is, niet alleen voor systeembeheer, maar ook voor bredere scripting- en automatiseringstaken op verschillende platforms. De relatie met .NET is dieper geworden, waardoor het een krachtig scripttool is voor ontwikkelaars in verschillende omgevingen.
PowerShell-opdrachten, bekend als cmdlets, volgen een werkwoord-zelfstandig naamwoord naamgevingsconventie.
Get-Process
PowerShell ondersteunt pipelining, waardoor de uitvoer van de ene cmdlet als invoer voor een andere kan dienen.
Get-Process | Where-Object { $_.CPU -gt 100 }
Variabelen in PowerShell worden voorafgegaan door $
en kunnen een breed scala aan datatypes bevatten.
$greeting = "Hallo, Wereld!"
PowerShell ondersteunt van nature arrays en hash-tabellen voor gemakkelijke gegevensmanipulatie.
$array = @(1, 2, 3)
$hash = @{"sleutel" = "waarde"}
Je kunt herbruikbare functies in PowerShell definiëren.
function Greet {
param($name)
"Hallo, $name!"
}
Foutafhandeling in PowerShell kan worden beheerd met behulp van try/catch-blokken.
try {
Get-Process -Name "niet_bestaand"
} catch {
Write-Host "Er is een fout opgetreden: $_"
}
PowerShell-scripts worden opgeslagen met een .ps1
extensie en kunnen direct worden uitgevoerd.
# myscript.ps1
Write-Host "Voer mijn PowerShell-script uit"
PowerShell behandelt gegevens als objecten, waardoor het gemakkelijk is om eigenschappen te benaderen en te manipuleren.
$process = Get-Process -Name "powershell"
$process.Id
PowerShell stelt je in staat om functies te verpakken en te distribueren als modules.
Import-Module MyModule
PowerShell ondersteunt remoting, waardoor het uitvoeren van opdrachten op externe machines mogelijk is.
Enter-PSSession -ComputerName Server01
PowerShell draait op de .NET-runtime, die de uitvoering van PowerShell-scripts en cmdlets op een zeer efficiënte manier faciliteert.
Verschillende IDE's en editors ondersteunen PowerShell-ontwikkeling, waaronder:
Om een PowerShell-script te maken, kunnen ontwikkelaars hun code in elke teksteditor schrijven en deze opslaan met een .ps1
extensie. Projecten kunnen meerdere scripts en modules bevatten, georganiseerd in mappen.
PowerShell wordt op grote schaal gebruikt in verschillende sectoren voor:
PowerShell heeft relaties met verschillende programmeertalen:
PowerShell-scripts kunnen worden vertaald naar talen die automatisering en scriptingtaken ondersteunen, zoals Python of Bash. Hoewel er geen directe bron-naar-bron vertaaltools bestaan, kan handmatige conversie inhouden dat cmdlets worden herschreven naar equivalente opdrachten of functies in de doeltaal.
Bestaande bron-naar-bron vertaaltools zijn onder andere: