2 Pluspunkte 0 Minuspunkte

Hallo zusammen.

Ich habe ein Problem mit einer Switch-Case Anweisung in Powershell

function foo {

    param (
        [bool] $Switch
    )

    'Hello'

    if($Switch -eq $true) {
        "[DEBUG] Switch value: " + $Switch
    }

    switch($Switch) {

        $true {
            'beautiful'
        }

        $false {
            'ugly'
        }

        default {
            'colorful'
        }

    }

    'World'

}

foo -Switch $true

Als Ergebnis kommt das.

start
[DEBUG] Switch value: True
Der Wert "System.Array+SZArrayEnumerator" kann nicht in den Typ "System.Boolean" konvertiert werden. Boolesche Parameter akzeptieren nur boolesche Werte oder Zahlen wie
"$True", "$False", "1" oder "0".
In C:\Users\dani\Desktop\test.ps1:10 Zeichen:9
+         "[DEBUG] Switch value: " + $Switch
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullyQualifiedErrorId : RuntimeException
 
end

Ich verstehe nicht ganz was das bedeuten soll oder wie ich den Fehler beheben kann. Für Hilfe wäre ich sehr dankbar.

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Die Variable $Switch ist eine sogenannte automatic variable wie auch $True oder $False u.s.w. Automatische Variablen in PowerShell sind vordefinierte Variablennamen, die vom System oder der PowerShell Engine verwendet werden. Daher sollten solche Namen für eigene Variablen vermieden werden, um mögliche Konflikte zu verhindern. Wenn du die Variable $Switch in z.B $MySwitch änderst sollte es eigentlich funktionieren.

von (706 Punkte)