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
}
}