none
Access multidimensional Array RRS feed

  • Frage

  • Hi,

    I need some support regarding Array access..

    I get a json output from a REST API:

    $RoleList = (Invoke-WebRequest -SkipCertificateCheck -Uri $RestApiRole -Method GET -WebSession $sv |

    ConvertFrom-Json |

    select -expand objects |

    Select name, members)

    This Array now has two rows: 

    1.) names of the role (String)

    2.) members of this role (List of strings)

    I get the output:

    for ($j=0; $j -lt $RoleList.length; $j++){

        $RoleList[$j]   

    }

    @{name=Administrator; members=System.Object[]; role=}

    @{name=Database Administrator; members=; role=}

    @{name=Data Proxy User; members=; role=}

    @{name=Incident Administrator; members=; role=}

    @{name=NetFlow Provider; members=; role=}

    @{name=Network Administrator; members=; role=}

    @{name=Network Security Administrator; members=; role=}

    @{name=Operator; members=; role=}

    @{name=PCI Compliance Auditor; members=; role=}

    @{name=Report Administrator; members=; role=}

    @{name=Security Analyst; members=System.Object[]; role=}

    @{name=Security Policy Administrator; members=; role=}

    @{name=System Events Monitor; members=; role=}

    @{name=Unix Administrator; members=; role=}

    @{name=User; members=; role=}

    @{name=Windows Administrator; members=; role=}

    I also can get the members list, but it is a list from @{name=Administrator; members=System.Object[]; role=} & @{name=Security Analyst; members=System.Object[]; role=} without an reference to the name.

    for ($j=0; $j -lt $RoleList.members.length; $j++){

        $RoleList.members[$j]   

    }

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/103

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/1

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/121

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/113

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/114

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/107

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/108

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/109

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/102

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/126

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/131

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/132

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/133

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/129

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/130

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/135

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/134

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/136

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/137

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/138

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/139

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/140

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/141

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/142

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/143

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/145

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/144

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/146

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/147

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/148

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/149

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/117

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/118

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/151

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/124

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/120

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/115

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/119

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/122

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/127

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/152

    https://9.20.40.136:8443/SentinelRESTServices/objects/user/153


    Any suggestions how I can get an output of the name with the connected members?

    Regards,

    Ulrich


    Donnerstag, 19. Dezember 2019 12:19

Antworten

  • Moin,

    1. das ist ein deutsches Forum. Hier in EN zu schreiben, ist vergeudete Liebesmüh :-)

    2. bitte Code als Code posten (2. Button von rechts im Editor)

    3. Was möchtest Du genau am Ende haben? Wenn Du in der äußeren Schleife so etwas wie 

    "{0} : {1}" -f $RoleList[$j].name, ($RoleList[$j].members -join ",")

    sagst, bekommst Du ja eine Liste der User mit dem Rollennamen vorangestellt...

    EDIT: Und zum Titel Deins Posts dies: Ein Array aus Objekten ist NICHT ein multidimensionales Array, denn die Properties eines Objektes sind in ihrer Gesamtheit ja kein Array, sondern ein Wörterbuch!


    Evgenij Smirnov

    http://evgenij.smirnov.de


    Donnerstag, 19. Dezember 2019 12:54
  • ConvertFrom-Json |

    select -expand objects |

    Select name, members)


    Mit diesen beiden Selects machst Du das JSON-Objekt kaputt, danach bleibt nichts übrig, das sich objektorientiert sinnvoll weiterverarbeiten läßt. ym2c :-)

    Ansonsten Punkt 3 von Evgenij.


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Donnerstag, 19. Dezember 2019 13:42

Alle Antworten

  • Moin,

    1. das ist ein deutsches Forum. Hier in EN zu schreiben, ist vergeudete Liebesmüh :-)

    2. bitte Code als Code posten (2. Button von rechts im Editor)

    3. Was möchtest Du genau am Ende haben? Wenn Du in der äußeren Schleife so etwas wie 

    "{0} : {1}" -f $RoleList[$j].name, ($RoleList[$j].members -join ",")

    sagst, bekommst Du ja eine Liste der User mit dem Rollennamen vorangestellt...

    EDIT: Und zum Titel Deins Posts dies: Ein Array aus Objekten ist NICHT ein multidimensionales Array, denn die Properties eines Objektes sind in ihrer Gesamtheit ja kein Array, sondern ein Wörterbuch!


    Evgenij Smirnov

    http://evgenij.smirnov.de


    Donnerstag, 19. Dezember 2019 12:54
  • ConvertFrom-Json |

    select -expand objects |

    Select name, members)


    Mit diesen beiden Selects machst Du das JSON-Objekt kaputt, danach bleibt nichts übrig, das sich objektorientiert sinnvoll weiterverarbeiten läßt. ym2c :-)

    Ansonsten Punkt 3 von Evgenij.


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Donnerstag, 19. Dezember 2019 13:42