ArrayList Abrollen

8

Powershell entrolling macht mich verrückt.

Ich habe den folgenden Code, um E-Mail-Adressen von einem Austauschempfänger abzurufen. Ich benutze die ArrayList, weil sie von vielen Leuten vorgeschlagen wird, wenn Sie Objekte aus dem Array entfernen wollen.

%Vor%

Der Wert von $ aliases ist am Ende der Funktion korrekt (d. h. enthält x E-Mail-Adressen und ist vom Typ ArrayList), aber nach der Rückgabe wird er zu System.Object [] und hat 2x Einträge. Es folgen x Int32's gefolgt von x Strings (d. H. {0, 1, bob @ here, bob @ there}). Warum passiert das und wie kann ich meine ArrayList intakt halten? Täusche ich mich für die Verwendung von ArrayList?

Aus Neugier, mit all den Fragen / Problemen, die sich aus dem Abrollen von PS ergeben, was ist der Zweck? Der große Vorteil von Powershell ist, dass Sie direkt mit Objekten arbeiten, anstatt mit ihren Textprojektionen. Leider weiß ich nie, mit welchem ​​Objekt ich arbeite - und selbst wenn ich es überprüfe, scheint es nicht mehr in Form zu bleiben als ein paar Zeilen Code.

- Bearbeiten Die Funktion wird als Teil eines PSObject

aufgerufen %Vor%     
bob 16.10.2012, 14:22
quelle

2 Antworten

6

Ein Teil des Problems besteht darin, wie das Array innerhalb der Funktion verwendet wird. Denken Sie daran, dass eine Funktion in PowerShell nichts zurückgibt . Es schreibt Objekte in die Pipeline. Daher ist die Rückgabe überflüssig, verursacht aber keine Probleme. Die Verwendung der Add -Funktion verursacht das Problem, weil Add returns der Index, zu dem der Wert hinzugefügt wurde und daher auch in die Pipeline schreibt.

%Vor%

Beachten Sie, wie groß die Zahl 8 ist. Was zu tun ist, ist das Unterdrücken des Schreibens dessen, was von der Funktion Add zurückgegeben wird. Es gibt ein paar Möglichkeiten, dies zu tun, aber hier ist eines:

%Vor%

Ich glaube nicht, dass die Verwendung von 'ArrayList' falsch ist, wenn Sie Elemente daraus entfernen möchten.

Was entrolling betrifft, so verdient das eine ganz andere Frage und wurde bereits angesprochen .

>.

    
Scott Saad 16.10.2012, 15:01
quelle
0

Wie gibst du $aliases zurück?

so?

%Vor%

Sie können diesen Weg versuchen:

%Vor%

nachdem Sie den Typ auf diese Weise kennen:

%Vor%     
CB. 16.10.2012 14:38
quelle

Tags und Links