Diverse simple aber oft genutzte Basics zur Scriptsprache Powershell:
Vergleichsoperatoren:
1 2 3 4 5 | -eq # gleich (=) -ne # ungleich (<>) -lt # kleiner (<) -le # kleiner gleich (<=) -gt # größer (>) -ge # größer oder gleich (>=) |
Sonstge Operatoren:
1 2 3 | -like (oder -notlike) # der Suchstring kann * bzw. ? enthalten -match (oder -notmatch) # verarbeitet auch RegEx, ohne RegEx entspricht er -like -contains (oder -notcontains) # Suche in Arrays |
Kommentare:
1 2 | # Kommentar in einer Zeile <# Kommentar Block #> |
Einfache Ein- und Ausgabe:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #Bildschirm löschen und Verschiedene Bildschirmausgabemöglichkeiten Clear-Host Write-Debug "Debug Text 1" Write-Warning "Überlege Dir Deine zahl genau" Write-Error "Irgendwas ist schief gelaufen!!" #Einlesen von Daten $Wert = Read-Host " Eingabe : " Write-Host " Eingabe in nachfolgender Zeile : " $Wert = Read-Host #Unterschied zwischen ' (Single Quote) und " (Double Quote) $Wert1 = '1234' $Wert2 = "$Wert1 1234" Write-Host 'Die Zahlen: $Wert1 und $Wert2' Write-Host "Die Zahlen: $Wert1 und $Wert2" #Ausgabe einer Bunten Zeile Write-Host "Bitte" -NoNewline Write-Host " Anzahl" -ForegroundColor Cyan -NoNewline Write-Host " eingeben: " -NoNewline $Wert = Read-Host |
Einige verschiedene Basic Kommandos (if, switch, for, while, do, ForEach, Where-Object, Write-Progress)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | # IF Prüfung if ($Wert -eq 1) { # Do Something } elseif ($Wert -ne 2) { # Do Something else { # Do Something } # Switch Auswahl switch ($Input) { 1 {"Nummer 1"} 2 {"Nummer 2"} Default {"alles andere"} } # FOR Schleife for ($i=1; $i -le 10; $i++) {$i,"`n"} # DO Schleife $i = 1; do { $i; $i++; } until ($i -gt 10) # WHILE Schleife $i = 1; while ($i -le 10) { $i; $i++; } # Break und Continue for ($i=1; $i -le 20; $i++) { if ($i -eq 5) { write-host -ForegroundColor "Yellow" "Number" $i,"is Cool"; continue }; if ($i -eq 15) { "Abbruch"; break } Write-Host $i; } # ForEach-Object Verarbeitung (vier Varianten) $Res = Get-Process $Res | ForEach-Object -Begin {Get-Date} -Process {$_.ProcessName} -End {Get-Date} $Res | ForEach-Object {Write-Host $_.ProcessName} $Res | %{Write-Host $_.ProcessName} foreach($Erg in $Res) {$Erg.ProcessName} # Where-Object Verarbeitung (zwei Varianten) Get-Service | Where-Object {$_.Status -eq "Stopped"} Get-Service | ?{$_.Status -eq "Stopped"} # Progressbar Anzeigen for ($i = 1; $i -le 100; $i++ ) { Write-Progress -Activity "Looping" -Status "Counting" -PercentComplete $i; Write-Host $i; Start-Sleep -Milliseconds 15; } |
Wenn Scripte zur Ausführung bestimmte Voraussetzungen benötigen, lassen sich diese zu Beginn einer Scriptdatei definieren:
1 2 3 4 5 6 7 | # Wenn eine nachfolgende Voraussetzung nicht erfüllt wird, # Wir mit einem entsprechenden Hinweis abgebrochen #REQUIRES -version 3.0 # Benötigt angegebene Powershell Version #REQUIRES -RunAsAdministrator # PowerShell Sitzung benötigt erhöhte Rechte #REQUIRES -Modules "NetAdapter" # Benötigt benanntes Modul #REQUIRES -Modules @{ModuleName="NetAdapter";ModuleVersion="2.0.0.0"} # Benötigt Modul in bestimmer Version |
Zur Ermittlung der Powershell Version wird folgende Variable genutzt
1 | $PSVersionTable |
Sauberer Code (siehe auch about_Comment_Based_Help):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #REQUIRES -version 2 function TestFunktion { param( [String]$ParaName1, [Int32]$ParaName2 ) <# .SYNOPSIS A brief description of the function or script. This keyword can be used only once in each topic. .DESCRIPTION A detailed description of the function or script. This keyword can be used only once in each topic. .PARAMETER The description of a parameter. You can include a Parameter keyword for each parameter in the function or script syntax. .NOTES File : xxxx.ps1 Author : you Prerequisite : PowerShell v2+, Module Z, Y .LINK Link of source http://ps.script.intern/powershell5 .EXAMPLE Example 1 .EXAMPLE Example 2 #> Write-Host "DoSomeThing" } Get-Help TestFunktion -Full |
Quellen:
– https://docs.microsoft.com/en-us/powershell/module/powershellget/ – Microsoft PowerShell
– https://ss64.com/ps/ – Kommandozeilenreferenz ss64 für PowerShell