Ich habe eine Funktion, die einen Enum-Wert als Parameter akzeptiert. Betrachten Sie zum Beispiel etwas wie:
%Vor%Nun, wenn ich es so aufrufe, ist alles in Ordnung:
%Vor%Aber wenn ich die Funktion rufe, die den Enum-Wert direkt weitergibt, bekomme ich einen ziemlich kryptischen Fehler:
%Vor%Was ist der Unterschied zwischen der Initialisierung einer Variablen mit dem Enum-Wert und der direkten Übergabe des Enum-Wertes?
Ja, das ist eine ziemlich verwirrende Fehlermeldung. Ich denke du würdest es besser mit einem Beispiel verstehen:
%Vor% Beachten Sie, dass es keine Anführungszeichen um C:\
gibt, weil eine implizit in eine Zeichenkette umgewandelt wird, und zwei, es ist nicht notwendig, einen Pfad einzuschließen, der keine Leerzeichen enthält, wenn Sie den Pfad als Parameter an einige übergeben Angerufener.
Lasst uns also zu Ihrer Funktion zurückkehren und sie leicht ändern:
%Vor%... und die Ausgabe:
%Vor% Siehst du, was dort passiert ist? PowerShell denkt, dass Sie eine Zeichenfolge anstelle eines Aufzählungswerts übergeben. Deshalb erhalten Sie Cannot convert value "[System.DayOfWeek]::Monday"
, da dies die Literalzeichenfolge ist, die übergeben wird.
Noch praktischer ist es, dass Strings in Enumerationswerte umgewandelt werden, wenn sie gültig sind:
%Vor%Tags und Links powershell enums