Zum Hauptinhalt springen

Tag 9: Kontrollstrukturen

1 Kontrollstrukturen​

1.1 For Each Schleife​

$processlist = Get-Service
foreach ($process in $processlist) {
Write-Host $process.name " "
$process.status
}

1.2 If Else Bedingung​

[int]$a = Read-Host "Geben Sie eine Zahl ein:"
if ($a -ge 0) {
Write-Host "$a ist positiv"
}
else {
Write-Host "$a ist negativ" -Foregroundcolor Red
}

1.3 Switch Bedingung​

[int]$a = Read-Host "Geben Sie eine Zahl
zwischen von 1 bis 10 ein:"
switch ($a) {
1 { Write-Host "Eins" }
2 { Write-Host "Zwei" }
3 { Write-Host "Drei" }
4 { Write-Host "Vier" }
5 { Write-Host "FĂĽnf" }
6 { Write-Host "Sechs" }
7 { Write-Host "Sieben" }
8 { Write-Host "Acht" }
9 { Write-Host "Neun" }
10 { Write-Host "Zehn" }
default {
Write-Host "UngĂĽltige Zahl"
}
}

2 Aufgabe Parameter und Verzögerung​

2.1 Einführaufgabe​

param (
# Parameter help description
[Parameter(Mandatory = $true)]
[int]
$num,
# Parameter help description
[Parameter(Mandatory = $true)]
[int]
$delay
)

for ($i = 0; $i -le $num; $i++) {
Start-Sleep -Milliseconds $delay
Write-Host $i
}

2.2 Aufgabe 1​

# Author: Valentino Panico
# Datum: 25.04.2022
# Version: 1.0
# Funktionsbeschreibung: Ordner mit Namen von Lernenden erstellen
# Parameter: [1] CSV File mit Namen der Lernenden | [2] Pfad fĂĽr Ordererstellung
# ---

# parameter definieren
param (
# csv file mit namen der lernenden
[Parameter(Mandatory=$true)]
[string]
$lernende,
# pfad fĂĽr ordner erstellung
[Parameter(Mandatory=$true)]
[string]
$ordner
)

# ordner löschen falls existiert
if (Test-Path $ordner -PathType leaf)
{
Remove-Item $ordner
}

# csv import
$csvImport = Import-Csv $lernende -Delimiter ";"
$csvImport | ForEach-Object {

# name einlesen und Sonderzeichen ersetzen
$name = ($_.Name -ireplace 'ä', 'ae' -ireplace 'ö', 'oe' -ireplace 'ü', 'ue' -ireplace 'é', 'e')

# Vorname einlesen und Sonderzeichen ersetzen
$vorname = ($_.Vorname -ireplace 'ä', 'ae' -ireplace 'ö', 'oe' -ireplace 'ü', 'ue' -ireplace 'é', 'e')

# vorname unterteilen und nur ersten nutzen
$splitUpVorname = $vorname -split "\s"
$vorname = $splitUpVorname[0]

# vorname und nachname zusammensetzen
$fullName = $vorname + "." + $name

# ordner erstellen
New-Item -ItemType Directory -Path $ordner -name "$fullName"
}

2.3 Aufgabe 2​

# Author: Valentino Panico
# Datum: 25.04.2022
# Version: 1.0
# Funktionsbeschreibung: Abfrage von Schweizer Ortschaften
# Parameter: [1] CSV mit Orten
# ---

# parameter definieren
param (
# pfad zum csv
[Parameter(Mandatory = $true)]
[string]
$ort
)

Write-Host "Willkommen zur Schweizer Ortsabfrage."

$hashtableOrtKanton = @{}

# csv daten importieren und in hashtable einsetzen
$csvImport = Import-Csv $ort -Delimiter ";"
$csvImport | ForEach-Object {
# ort einlesen
$ort = $_.ORTNAME

# kanton und plz einlesen
$kanton = $_.KT + " " + $_.PLZ

# ĂĽberprĂĽfen ob key in hashtable existiert,
# wenn ja -> value hinzufĂĽgen zu key,
# wenn nein, key erstellen und value zuordnen
if ($hashtableOrtKanton.ContainsKey($ort)) {
$hashtableOrtKanton[$ort] += ", " + $kanton
}
else {
$hashtableOrtKanton[$ort] = $kanton
}
}

# solange eingabe nicht exit
while ($inputOrt -ne "exit") {
# eingabe einlesen und in variable speichern
$inputOrt = Read-Host "Geben Sie einen Ort ein"

# wenn eingabe exit ist, programm beenden
if ($inputOrt -eq "exit") {
exit
}

# ĂĽberprĂĽfen ob key in hashtable existiert,
# wenn ja -> value ausgeben,
# wenn nein -> fehlermeldung ausgeben
if ($hashtableOrtKanton.ContainsKey($inputOrt)) {
$hashtableOrtKanton.$inputOrt
}
else {
Write-Host "Ort existiert nicht!"
}
}

2.4 Aufgabe 3​

# Author: Valentino Panico
# Datum: 25.04.2022
# Version: 1.0
# Funktionsbeschreibung: Alle Exe Dateien in einem Verzeichnis ausgeben, mit Version und Grösse
# Parameter: [1] Pfad der Exe Dateien
# ---

# parameter definieren
param (
# pfad der exe dateien
[Parameter(Mandatory = $true)]
[string]
$path
)

Get-ChildItem $path *.exe | Select-Object Name, @{N="Groesse in Bytes";E={$_.Length}}, @{N="Version";E={$_.VersionInfo.ProductVersion}}