Aufgaben-Python/courses/powershell/05_kontrollfluss_und_moderne_operatoren/musterloesung.ps1

63 lines
1.5 KiB
PowerShell

<#
.SYNOPSIS
PS 05: Kontrollfluss & Moderne PS7 Operatoren (Musterlösung)
#>
# 🎯 TEILZIEL 1 (TODO 1): Get-AccessDecision - Rollen & Status bewerten
function Get-AccessDecision {
param(
[string]$Role,
[bool]$IsActive
)
if (-not $IsActive) {
return "Denied"
}
switch ($Role) {
"Admin" { return "FullAccess" }
"Editor" { return "WriteAccess" }
"Viewer" { return "ReadOnly" }
default { return "Denied" }
}
}
# 🎯 TEILZIEL 2 (TODO 2): Get-ConfigWithFallback - 3-Stufen Null-Coalescing Kaskade
function Get-ConfigWithFallback {
param(
[string]$UserOverride,
[string]$EnvSetting,
[string]$DefaultSetting
)
if (-not [string]::IsNullOrEmpty($UserOverride)) {
return $UserOverride
}
if (-not [string]::IsNullOrEmpty($EnvSetting)) {
return $EnvSetting
}
return $DefaultSetting
}
# 🎯 TEILZIEL 3 (TODO 3): Classify-LogMessage - Log-Nachrichten klassifizieren
function Classify-LogMessage {
param(
[string]$Message
)
if ([string]::IsNullOrWhiteSpace($Message)) {
return "Unknown"
}
switch -Regex ($Message) {
'^ERR-\d+' { return "CriticalError" }
'^WARN-\d+' { return "Warning" }
'^OK-' { return "Success" }
default { return "Unknown" }
}
}
# 🎯 TEILZIEL 4 (TODO 4): Test-NetworkPort - Port-Bereich überprüfen
function Test-NetworkPort {
param(
[int]$Port
)
return ($Port -ge 1024 -and $Port -le 49151)
}