Tag 2 · Block 1: Vergleichen, Filtern, Entscheiden, Wiederholen
- Lege
$a = 5und$b = 10an. Gib die Ergebnisse (True/False) für-eq,-ne,-lt,-geaus. - Welche Ergebnisse liefern
"PowerShell" -like "*shell","PowerShell" -like "power*"und"PowerShell" -cmatch "^power"? Begründe. - Prüfe, ob
3in@(1, 2, 3, 4)enthalten ist, einmal mit-containsund einmal mit-in. - Prüfe mit einem einzigen Ausdruck, ob
$agrößer als 3 und kleiner als 8 ist.
Lösung anzeigen
$a = 5; $b = 10$a -eq $b; $a -ne $b; $a -lt $b; $a -ge $b
"PowerShell" -like "*shell" # True (Groß-/Kleinschreibung egal)"PowerShell" -like "power*" # True"PowerShell" -cmatch "^power" # False (c = case-sensitive: "P" ≠ "p")
@(1, 2, 3, 4) -contains 3 # Sammlung links3 -in @(1, 2, 3, 4) # Element links
($a -gt 3) -and ($a -lt 8)Im Ordner C:\Kurs\Daten\Logs liegen Logdateien.
- Zeige alle Dateien an, die größer als 10 KB sind (Eigenschaft
Length, EinheitKB). - Zeige alle Dateien, die in den letzten 7 Tagen geändert wurden (Eigenschaft
LastWriteTime, Tipp:(Get-Date).AddDays(-7)). - Sortiere die Dateien nach Größe absteigend und gib nur
Name,LengthundLastWriteTimefür die drei größten aus. - Wie groß sind alle Dateien zusammen? Tipp:
Measure-Object -Property Length -Sum.
Lösung anzeigen
Get-ChildItem C:\Kurs\Daten\Logs | Where-Object { $_.Length -gt 10KB }
Get-ChildItem C:\Kurs\Daten\Logs | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }
Get-ChildItem C:\Kurs\Daten\Logs | Sort-Object Length -Descending | Select-Object -First 3 -Property Name, Length, LastWriteTime
Get-ChildItem C:\Kurs\Daten\Logs | Measure-Object -Property Length -Sum- Lege
$temperatur = 15an. Gib aus: über 25 → „Es ist heiß.“, von 15 bis 25 → „Angenehm.”, sonst → „Kühl.” Teste mit 10, 15, 25 und 30. - Prüfe, ob der Dienst
Spoolerläuft:(Get-Service -Name Spooler).Status. Gib „Druckdienst läuft” oder „Druckdienst steht” aus. - Prüfe mit
Test-Path, obC:\Kurs\Daten\Mitarbeiter.csvexistiert, und gib einen passenden Satz aus.
Lösung anzeigen
$temperatur = 15if ($temperatur -gt 25) { "Es ist heiß." }elseif ($temperatur -ge 15) { "Angenehm." }else { "Kühl." }
if ((Get-Service -Name Spooler).Status -eq 'Running') { "Druckdienst läuft" }else { "Druckdienst steht" }
if (Test-Path C:\Kurs\Daten\Mitarbeiter.csv) { "Datei ist da." } else { "Datei fehlt." }Beim elseif genügt -ge 15: Der Zweig wird nur erreicht, wenn der erste nicht zutraf (also nicht größer als 25).
- Lege
$datei = "bericht_2026.csv"an. Gib mitswitch -Wildcardaus:*.txt→ „Textdatei”,*.csv→ „CSV-Datei”, sonst „Unbekannt”. Teste mit weiteren Dateinamen. - Schreibe einen
switch, der aus einer Zahl1bis3den Wochentag Montag, Dienstag, Mittwoch macht, und bei jeder anderen Zahl „außerhalb” ausgibt.
Lösung anzeigen
$datei = "bericht_2026.csv"switch -Wildcard ($datei) { "*.txt" { "Textdatei" } "*.csv" { "CSV-Datei" } default { "Unbekannt" }}
$zahl = 2switch ($zahl) { 1 { "Montag" } 2 { "Dienstag" } 3 { "Mittwoch" } default { "außerhalb" }}Anders als in vielen Sprachen prüft switch in PowerShell alle passenden Zweige. Mit break brichst du nach dem ersten Treffer ab, wenn das gewollt ist.
- Erstelle mit
1..5ein Array und gib mitforeachfür jedes Element „Aktuelle Zahl: X” aus. - Mache dasselbe mit einer
for-Schleife. - Mache dasselbe mit einer
while-Schleife. - Gib mit
foreachdie Namen aller Dateien inC:\Kurs\Daten\Logsaus, aber nur von denen, die größer als 5 KB sind.
Lösung anzeigen
$zahlen = 1..5foreach ($z in $zahlen) { "Aktuelle Zahl: $z" }
for ($i = 0; $i -lt $zahlen.Count; $i++) { "Aktuelle Zahl: $($zahlen[$i])" }
$i = 0while ($i -lt $zahlen.Count) { "Aktuelle Zahl: $($zahlen[$i])" $i++}
foreach ($datei in Get-ChildItem C:\Kurs\Daten\Logs) { if ($datei.Length -gt 5KB) { $datei.Name }}Gegeben ist $staedte = @("Berlin", "München", "Hamburg", "Köln", "Leipzig").
Gehe mit foreach durch das Array und gib aus:
- bei Berlin: „Hauptstadt gefunden!”
- bei Städten, die mit „L” beginnen: „Stadt mit L: Name”
- sonst: „Andere Stadt: Name”
Bonus: Zähle in einer Variable mit, wie viele Städte „Andere” waren, und gib die Anzahl am Ende aus.
Lösung anzeigen
$staedte = @("Berlin", "München", "Hamburg", "Köln", "Leipzig")$andere = 0
foreach ($stadt in $staedte) { if ($stadt -eq "Berlin") { "Hauptstadt gefunden!" } elseif ($stadt -like "L*") { "Stadt mit L: $stadt" } else { "Andere Stadt: $stadt" $andere++ }}"Andere Städte: $andere"