[PowerShell] Vergelijken van twee PsCustomObjects

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Hemmen
  • Registratie: December 2009
  • Laatst online: 24-02 19:33
Ik hoop dat ik het zo juist en helder uitleg. Volgens mij zit er ergens een denkfout in mijn script en heeft dat te maken met referenties naar objecten maar ik kom er niet uit: 8)7

Ik heb een twee $nsgList PsCustomObjects die ik met elkaar wil vergelijken. in dat object zitten Nsg objecten en dit Nsg object bevat een property "name" en tevens bevat dit object NsgRule objecten. Ik heb dus 3 objecten die in elkaar nesten.

Structuur van beide objecten zijn gelijk:

NsgList (PSCustomObject)
---Nsg (NsgObject)
------NsgName (NsgObject Parameter)
------Rules
---------NsgRule1 (NsgRule Object)
-------------Name (NsgRule Object Parameter)
---------NsgRule2 (NsgRule Object)
-------------Name (NsgRule Object Parameter)
Vervolgens wil ik met een loop door de 1e $NsgList lopen
code:
1
2
3
4
5
6
foreach ($nsg in $NsgList) {
    foreach ($rule in $nsg.rules) {
        $currentNsg = $ReconstructedNsgList | Where-Object { $_.name -eq $nsg.name }
        $currentRule = $currentNsg.rules | Where-Object { $_.name -eq $rule.name }
    }
}


Ik wil de naam van de 1e lijst vergelijken met die uit de 2e lijst. Maar $currentRule geeft waarden terug die alleen in de $NsgList voorkomen en niet in $ReconstructedNsgList ondanks dat ik de $ReconstructedNsgList als input gebruik op de 1 na laatste regel. Wat doe ik fout en hoe kan ik dit op een fatsoenlijke manier doen?

Met extra foreach loops kan ik het wel werkend krijgen maar dat lijkt me niet de meest elegante manier

Er zijn dus meerdere Nsg's in een NsgList en een Nsg kan meerdere NsgRules bevatten. Deze NsgRule namen zijn wel uniek binnen een Nsg maar een andere Nsg kan een rule met dezelfde naam bevatten.

Ik snap er geen aardappel van. ;(

[ Voor 6% gewijzigd door Hemmen op 28-10-2020 11:42 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Hemmen
  • Registratie: December 2009
  • Laatst online: 24-02 19:33
Het is opgelost. Ik had verderop in het script een regel gezet die een object van de ene lijst in de andere zette. Daarom zag ik ze terug komen.