Powershell Basics

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

Schreibe einen Kommentar