Zum Hauptinhalt springen

Tag 10: Parameter und Verzögerung

1 Aufgabe Parameter und Verzögerung

1.1 Aufgabe 4

# Author: Valentino Panico
# Datum: 04.05.2022
# Version: 1.0
# Funktionsbeschreibung: Sortieren von Prozessen nach CPU-Zeit und mit Farbe ausgeben
# Parameter:
# ---

# variablen auf 0 setzen für anzahl zählen
$greenProcess = 0
$whiteProcess = 0
$redProcess = 0

# prozesse holen und sortieren
# kleiner 300 = gruener text
# zwischen 300 und 1000 = weisser text
# groesser 1000 = roter text
Get-Process | Sort-Object CPU | ForEach-Object {
if ($_.CPU -lt 300) {
Write-Host -ForegroundColor green $_.Name
$greenProcess += 1
}
elseif ($_.CPU -ge 300 -and $_.CPU -lt 1000) {
Write-Host -ForegroundColor white $_.Name
$whiteProcess += 1
}
else {
Write-Host -ForegroundColor red $_.Name
$redProcess += 1
}
}

# anzahl ausgeben
Write-Host "`n#####`n`nAnzahl gruene Prozesse:`t$greenProcess`nAnzahl weisse Prozesse:`t$whiteProcess`nAnzahl rote Prozesse:`t$redProcess"

1.2 Aufgabe 5

# Author: Valentino Panico
# Datum: 04.05.2022
# Version: 1.0
# Funktionsbeschreibung: Sortieren von Prozessen nach CPU-Zeit und mit Farbe ausgeben
# Parameter: [1] Pfad zum Verzeichnis, [2] Zu suchender Begriff, [3] Zu ersetzender Begriff
# ---

# parameter definieren
param (
# pfad zum verzeichnis
[Parameter(Mandatory = $true)]
[string]
$path,
# zu suchender begriff
[Parameter(Mandatory = $true)]
[string]
$search,
# zu ersetzender begriff
[Parameter(Mandatory = $true)]
[string]
$replace
)

# directory scannen und dateinamen speichern
$collection = Get-ChildItem $path | ForEach-Object { $_.Name }

# jede datei begriff ersetzen
foreach ($item in $collection) {
$file = $path + "\" + $item
(Get-Content $file) -replace "$search", "$replace" | Set-Content $file
}

1.3 Aufgabe 6

# Author: Valentino Panico
# Datum: 04.05.2022
# Version: 1.0
# Funktionsbeschreibung: CSV umschreiben für Import in istest.ch
# Parameter: [1] Pfad zur CSV-Datei, [2] Pfad zum Export-Ordner
# ---

# parameter definieren
param (
# pfad zur csv datei
[Parameter(Mandatory = $true)]
[string]
$pathCSV,
# pfad zum export ordner
[Parameter(Mandatory = $true)]
[string]
$pathExport
)

# csv importieren
$csv = Import-Csv $pathCSV -Delimiter ";"

$csv | ForEach-Object {
# klasse von jedem datensatz holen
$klasse = $_.Klasse

# klassenname splitten und nur erster teil nutzen
$splitKlasse = $klasse -split "\s"
$klasse = $splitKlasse[0]

# export pfad setzen
$exportPath = $pathExport + $klasse + ".csv"

# csv exportieren
$csv | Where-Object { $_.Klasse -eq $klasse } | Select-Object Name, Vorname, Benutzername, @{N = "Kennwort"; E = { $_.Benutzername } } | Export-Csv $exportPath -Delimiter ";" -NoTypeInformation
}

2 Aufgabe Funktionen

2.1 Aufgabe 1

# Author: Valentino Panico
# Datum: 02.05.2022
# Version: 1.0
# Funktionsbeschreibung: Celsius in Fahrenheit
# Parameter: [1] Celsius Eingabe
# ---

function celsiusToFahrenheit {
param (
# celsius eingabe
[Parameter(Mandatory = $true)]
[double]
$celsius
)

[double]$fahrenheit = ($celsius * 9) / 5 + 32

return $fahrenheit
}

2.2 Aufgabe 2

# Author: Valentino Panico
# Datum: 02.05.2022
# Version: 1.0
# Funktionsbeschreibung: Datum in einem Hashtable ausgeben
# Parameter:
# ---

function dateInHashtable {
# datum holen
$date = Get-Date

# hashtable erstellen
$dateHashtable = @{
"day" = $date.day
"month" = $date.month
"year" = $date.year
}

return $dateHashtable
}

2.3 Aufgabe 3

# Author: Valentino Panico
# Datum: 04.05.2022
# Version: 1.0
# Funktionsbeschreibung: Prozesse ausgeben, die sichbar sind
# Parameter: [1] Switch, Gridview
# ---

function visibleProcess {
param (
# true = gridview, false = terminal
[Parameter(Mandatory = $false)]
[switch]
$showGrid
)

# nur die prozesse ausgeben, die einen mainwindowtitle haben
# wenn showgrid gesetzt, als gridview ausgeben
# wenn nicht, in konsole
if ($showGrid -eq $true) {
Get-Process | Where-Object { $_.MainWindowTitle } | Select-Object Id, ProcessName | Out-GridView
}
else {
Get-Process | Where-Object { $_.MainWindowTitle } | Select-Object Id, ProcessName
}

}

2.4 Aufgabe 4

# Author: Valentino Panico
# Datum: 04.05.2022
# Version: 1.0
# Funktionsbeschreibung: Prozesse ausgeben, die sichbar sind
# Parameter: [1] Switch, Gridview
# ---

function getMonthDE {
param (
# mit hashtable
[Parameter(Mandatory = $false)]
[switch]
$asHashtable
)

[string]$dayofweek = (Get-Date).DayOfWeek

if ($asHashtable -eq $true) {
$dayofweekHashtable = @{
"Monday" = "Montag"
"Tuesday" = "Dienstag"
"Wednesday" = "Mittwoch"
"Thursday" = "Donnerstag"
"Friday" = "Freitag"
"Saturday" = "Samstag"
"Sunday" = "Sonntag"
}

if ($dayofweekHashtable.ContainsKey($dayofweek)) {
Write-Host "Aktueller Wochentag (Hashtable):" $dayofweekHashtable.$dayofweek
}
}
else {
switch ($dayofweek) {
"Monday" { $dayofweekDE = "Montag" }
"Tuesday" { $dayofweekDE = "Dienstag" }
"Wednesday" { $dayofweekDE = "Mittwoch" }
"Thursday" { $dayofweekDE = "Donnerstag" }
"Friday" { $dayofweekDE = "Freitag" }
"Saturday" { $dayofweekDE = "Samstag" }
"Sunday" { $dayofweekDE = "Sonntag" }
}

Write-Host "Aktueller Wochentag (Switch-Case):" $dayofweekDE
}
}