3 Stimmen

Wie in PowerShell den Rückgabewert einer Funktion herabstufen?

Ich habe schon eine Weile ein interessantes Problem. Sagen wir, ich habe die Funktion

function GetAllFiles($creds, $fld){
   $newFiles = New-Object "system.collections.generic.list[string]"
   ... andere Dinge, die Einträge hinzufügen
   return $newFiles
}

Auf der Aufrufseite, wenn ich ausführe

$files = GetAllFiles $creds $fld
$files.Remove("EinVorhandenerEintrag")

bekomme ich

dir-ls.ps1:Method invocation failed because [System.Object[]] doesn't contain a meth od named 'Remove'.

Wenn ich $newFiles.GetType() mache

IsPublic IsSerial Name                                     BaseType                
-------- -------- ----                                     --------                
True     True     Object[]                                 System.Array 

Wie kann ich es wieder zu "system.collections.generic.list[string]" machen?

Danke

2voto

mjolinor Punkte 63365

Dieser Objekttyp hat keine "remove"-Methode. Ich glaube, du schaust dir die Elemente an:

$files | gm wird dir die Elemente des ersten Elements des Arrays zeigen (der Pipeline wird das Array entrollen, und du landest bei gm des ersten Elements.

gm -InputObject $files wird dir die Elemente des Arrays anzeigen, und "remove" ist nicht unter den Methoden dieses Objekttyps.

Versuche dies in deiner Rückgabeanweisung und schau, ob es das Array intakt hält, anstatt es bei der Rückgabe zu entrollen.

Rückgabe ,$newFiles

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X