63 lines
1.5 KiB
PowerShell
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)
|
|
}
|