Ihre $x
Variable enthält ein Array. Wenn Sie ein Array an eine Funktion übergeben, übergibt die Pipeline die Array- Instanz nicht an die Funktion. Er übergibt die Elemente des Arrays einzeln in den Funktionsblock process
.
Get-Member
zeigt Ihnen tatsächlich die Mitglieder der Zeichenfolge 'c'
- das letzte Element im Array - und nicht die Mitglieder des Arrays. (Beachten Sie, dass die Ausgabe in Ihrem Screenshot mit beginnt TypeName: System.String
.)
Wenn Sie die Mitglieder für $x
(das Array) selbst anzeigen möchten, übergeben Sie sie Get-Member
mit dem -InputObject
Parameter, anstatt ihn einzupipsen.
$X='a','b','c'; gm -InputObject $x
Dann sehen Sie, dass Ihr $x
Typ ist System.Object[]
und keine Remove
Methode enthält. (Sie können keine Elemente entfernen, da dies die Länge des Arrays ändern würde und Arrays in .NET eine feste Länge haben.)