Ich habe ein Array von benutzerdefinierten Objekte:Update-Objektarray über mehrere Iterationen
$report = @()
foreach ($person in $mylist)
{
$objPerson = New-Object System.Object
$objPerson | Add-Member -MemberType NoteProperty -Name Name -Value $person.Name
$objPerson | Add-Member -MemberType NoteProperty -Name EmployeeID
$objPerson | Add-Member -MemberType NoteProperty -Name PhoneNumber
$report += $objPerson
}
Bitte beachte, dass ich keine Werte für die letzten beiden Eigenschaften festgelegt haben. Der Grund, warum ich das getan habe, ist, weil ich versuche, eine Matrix zu erstellen, in der ich leicht sehen kann, wo diese Leerstellen sind (obwohl ich sie einfach auf = setzen könnte, wenn ich muss).
Dann möchte ich ein zweites Dataset durchlaufen und diese Werte in diesem Array aktualisieren, bevor ich den endgültigen Bericht exportiert habe. Z.B. (Das Bit ist so ziemlich Pseudo-Code wie ich keine Ahnung, wie es zu tun:
$phonelist = Import-Csv .\phonelist.csv
foreach ($entry in $phonelist)
{
$name = $entry.Name
if ($report.Contains(Name))
{
# update the PhoneNumber property of that specific object in the array with
# another value pulled out of this second CSV
}
else
{
# Create a new object and add it to the report - don't worry I've already got
# a function for this
}
}
Ich bin für dieses letzte Stück Erraten ich wahrscheinlich mein brauche if-Anweisung einen Index zurück, und dann diesen Index verwenden, um update das Objekt, aber ich bin ziemlich verloren in diesem Stadium.
Aus Gründen der Klarheit ist dies ein vereinfachtes Beispiel.Danach muss ich eine zweite Datei mit den Mitarbeiter-IDs gehen, und in Wirklichkeit habe ich etwa 10 Eigenschaften, die Alle Daten müssen aus verschiedenen Datenquellen aktualisiert werden, und die Datenquellen enthalten unterschiedliche Personenlisten, jedoch mit einigen Überlappungen, so dass es mehrere Iterationen gibt.
Wie mache ich das?
Bitte siehe hinzugefügt Detail in Frage. Ich denke immer noch, das wird funktionieren, ich werde es ausprobieren und Sie wissen lassen. Aber in der Zwischenzeit, wenn Sie denken, dass es einen besseren Weg gibt, es angesichts der zusätzlichen Details zu tun, lassen Sie es mich bitte wissen. –
Ich würde den gleichen Ansatz für alle Daten verwenden. Wählen Sie ein eindeutiges Attribut aus, das als Suchschlüssel dienen kann. Laden Sie alle zusätzlichen Daten in Hashtabellen, indem Sie das eindeutige Attribut als Schlüssel verwenden. Generieren Sie Ihren Bericht und füllen Sie die Eigenschaften über Hashtabellen, während Sie sie generieren. Je nachdem, wie Ihre tatsächlichen Daten aussehen, ist ein gewisses Maß an Mischen und Anpassen erforderlich. Dies ist jedoch der allgemeine Ansatz. –