none
Zusätzliches Objekt-Value wird nicht vollständig ausgegeben RRS feed

  • Frage

  • Hallo Zusammen,

    ich möchte von bestimmten Gruppen im AD, den Namen,Info(da steht der File-Pfad drin), Members sammeln und ausgeben

    Folgendes habe ich zusammen-gescriptet: 

    $BERGroups = Get-ADGroup -Filter * -Properties * -SearchBase "OU=Groups_DFS,OU=DE,OU=COMPANY,DC=test,DC=local"
    
    $BERList = foreach ($BERGroup in $BERGroups){
    	
    	Get-ADGroup -Identity $BERGroup -Properties * |select info, name, GroupMembers |ForEach-Object {
    		[Array]$_.GroupMembers = Get-ADGroup $BERGroup -Properties members |select -ExpandProperty members | foreach {Get-ADObject $_ |select -ExpandProperty name}
    		$_
    	
    }
    
    }
    
    $BERList |select GroupMembers

    da ich von den Members nicht den DN haben möchte, habe ich ein neuen Value "GroupMembers" für das Objekt erstellt und befüllt. Wenn ich mir nun "$BERList" ausgeben lasse, funktioniert erstmal alles aber bei allen Gruppen, die mehrere Members enthält wird es immer so abgekürzt.

    {Prüg, Astrid, Born, Heike, Jahn, Doeco, Schmid, Jens...}  

    Dies möchte ich natürlich nicht haben. Doch wie kann ich das verhinden. Anschließend möchte ich dies auch in eine .CSV exportieren aber da steht dann bei denn Members mit mehr als ein Wert nur noch "System.Object[]" drin. :-/

    Kann jemand helfen? Oder ist mein Ansatz völlig falsch und es gibt einen besseren?
    Habe auch schon mit

    |Format-Table -Wrap -AutoSize

    rumprobiert aber leider ohne Erfolg

    VG, Thomas



    • Bearbeitet Digiflex Mittwoch, 28. November 2012 14:29
    Mittwoch, 28. November 2012 14:27

Antworten

  • Hier die Lösung..ist einfach nur eine etwas abgewandelte Form von deinem Script, Peter. Nicht sonderlich performant aber es funzt!! =)

    $BERGroups = Get-ADGroup -Filter * -Properties info -SearchBase "OU=Groups_DFS,OU=DE,OU=COMPANY,DC=test,DC=local"
    
    $BERList = foreach ($BERGroup in $BERGroups){
        Get-ADGroupMember $BERGroup | ForEach-Object {
            $Member = $_
        
            Switch ($Member.objectClass) {
                'user'  {$Member | Get-ADUser | Select-Object @{Name='Gruppe';Expression={$BERGroup.name}},@{Name='Info';Expression={$BERGroup.Info}},Name,@{Name='Type';Expression={'User'}}}
                'group' {$Member | Get-ADGroup -Properties info | Select-Object @{Name='Gruppe';Expression={$BERGroup.name}},@{Name='Info';Expression={$BERGroup.Info}},Name,@{Name='Type';Expression={'Group'}}}
            }
         }
    } 
    
    $BERList| Export-Csv "C:\Temp\BERFileAccesslist.csv" -NoTypeInformation 

    Danke für die Unterstützung!!! Immer wieder super und lehrreich hier! :)

    VG, Thomas


    • Bearbeitet Digiflex Donnerstag, 29. November 2012 16:45
    • Als Antwort markiert Digiflex Donnerstag, 29. November 2012 16:46
    Donnerstag, 29. November 2012 16:45

Alle Antworten

  • Hallo Thomas!

    Die Attribute info und GroupMembers kommen mir etwas seltsam vor!

    Normaler weise heißt das Attribut für die Mitglieder einer Gruppe Members und nicht GroupMembers !

    Gib mal folgendes ein damit du siehst was dir eine Gruppe überhaupt liefert:

    Get-ADGroup 'GruppenNameHierEingeben' -Properties * | select *

    Ich bekommen dann die Attribute die ich weiterverwenden kann:
    CanonicalName
    CN
    Created
    createTimeStamp
    Deleted
    Description
    DisplayName
    DistinguishedName
    dSCorePropagationData
    GroupCategory
    GroupScope
    groupType
    HomePage
    instanceType
    isDeleted
    LastKnownParent
    ManagedBy
    member
    MemberOf
    Members
    Modified
    modifyTimeStamp
    Name
    nTSecurityDescriptor
    ObjectCategory
    ObjectClass
    ObjectGUID
    objectSid
    ProtectedFromAccidentalDeletion
    SamAccountName
    sAMAccountType
    sDRightsEffective
    SID
    SIDHistory
    uSNChanged
    uSNCreated
    whenChanged
    whenCreated
    PropertyNames


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Mittwoch, 28. November 2012 16:29
  • So ?
    $BERGroups = Get-ADGroup -Filter * -SearchBase "OU=Groups_DFS,OU=DE,OU=COMPANY,DC=test,DC=local"
    
    foreach ($BERGroup in $BERGroups){
        
        Get-ADGroupMember $BERGroup | where { $_.objectClass -like 'user' } | Get-ADUser | Select-Object @{Name='Gruppe';Expression={$BERGroup.name}},Name,Surname,GivenName
    
    	
    } # <- zum exportieren das Kommentarzeichen löschnen ;-) | Export-Csv '\\Pfad\zur\csv\datei.csv' -NoTypeInformation 


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    Mittwoch, 28. November 2012 16:53
  • Hi Peter,

    ich versteh das nicht, ich sehe dein Kommentar wieder erst heute früh , obwohl du schon vor 17 Std. geantwortet hast..irgengendwas scheint hier faul zu sein :-/

    Back to the topic..

    Du hast völlig recht..Groupmembers gibt es nicht..dieses wurde selbst erstellt. Durch den

    | select info, name, GroupMembers

    werden die bereits bekannten Attribute genommen sowie eine leere "Attributhülle" "GroupMembers" erstellt. Dies wird dann im zweiten Schritt gefüllt.

    [Array]$_.GroupMembers = Get-ADGroup $BERGroup -Properties members |select -ExpandProperty members | foreach {Get-ADObject $_ |select -ExpandProperty name}

    Das bereits exestierende Attribut "Members" gibt mir zwar alle Members an aber eben in einem Format (DN), das ich nicht möchte. Daher habe ich den Weg versucht, den ich hier angegeben habe :)

    Ich versuche nun mal deinen Vorschlag, der mir vom lesen schon gefällt.

    VG, Thomas

    PS:

    Die Attribute info und GroupMembers kommen mir etwas seltsam vor!

    Mit dem Befehl

    Get-ADGroup -Properties * -Filter * -SearchBase "OU=Groups_DFS,OU=DE,OU=COMPANY,DC=test,DC=local" |select info


    bekomme ich das Attribut "Info". Wenn man im Ad eine Gruppe öffnet, ist dies das Notizfeld.


    • Bearbeitet Digiflex Donnerstag, 29. November 2012 11:03
    Donnerstag, 29. November 2012 10:36
  • Also..erste Eindruck ist Klasse. Zwei Themen habe ich dennoch:

    • Weitere Gruppen-Attribut mitnehmen, ich bräuchte hier noch das Attribut "Info" . Kann man das ergänzen..Mir fehlt gerade die Syntax dafür. :-/
    @{Name='Gruppe';Expression={$BERGroup.name}},

    sowas funktioniert leider nicht

    Select-Object @{Name='Gruppe';Expression={$BERGroup.name},Name='Pfad';Expression={$BERGroup.info}},Name,Surname,GivenName

    • Wenn Gruppen in den Gruppen berechtigt sind, dann sollten die auch mit Namen angezeigt werden. Das hätte ich dann so gelöst. Schaut auch gut aus.
        Get-ADGroupMember $BERGroup | Get-ADObject | Select-Object @{Name='Gruppe';Expression={$BERGroup.name}},Name
    

    VG, Thomas



    • Bearbeitet Digiflex Donnerstag, 29. November 2012 10:52
    Donnerstag, 29. November 2012 10:49
  • Die Frage ist was willst du damit erreichen?
    Wenn in einer Gruppe wieder Gruppen sind dann sind in diesen Gruppen wahrscheinlich wieder User (indirekte User)!
    Willst du alle User einer Gruppe haben die direkt und indirekt in einer Gruppe sind oder willst du die Gruppe einfach nur Dokumentieren? z.B. damit du Sie wieder befüllen kannst falls sie mal geleert wurde?

    Schau dir mal in ruhe die Attribute einer Gruppe oben an!
    Meinst du mit info das Attribut Description?

    So ?

    $BERGroups = Get-ADGroup -Filter * -SearchBase "OU=Groups_DFS,OU=DE,OU=COMPANY,DC=test,DC=local"
    
    foreach ($BERGroup in $BERGroups){
        Get-ADGroupMember $BERGroup | ForEach-Object {
            $Member = $_
        
            Switch ($Member.objectClass) {
                'user'  {$Member | Get-ADUser | Select-Object @{Name='Gruppe';Expression={$BERGroup.name}},Name,Surname,GivenName,@{Name='Type';Expression={'User'}},@{Name='Info';Expression={$_.Description}}}
                'group' {$Member | Get-ADGroup | Select-Object @{Name='Gruppe';Expression={$BERGroup.name}},Name,Surname,GivenName,@{Name='Type';Expression={'Group'}},@{Name='Info';Expression={$_.Description}}}
            }
         }
    } # <- zum exportieren das Kommentarzeichen löschen ;-) | Export-Csv '\\Pfad\zur\csv\datei.csv' -NoTypeInformation 


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    Donnerstag, 29. November 2012 11:50
  • Die Gruppen in "OU=Groups_DFS,OU=DE,OU=COMPANY,DC=test,DC=local" (ca. 20 stck) sind im Filesystem berechtigt. Ich möchte jetzt nur wissen welche Gruppen/ User auf diesen Files nun berechtigt sind. Die Auswertung soll nicht rekursiv erfolgen. 

    Bezüglich des Info Attributs. Dies wird dir in der Shell nur angezeigt , wenn es befüllt ist. Schau's dir mal an ist wirklich so. Einfach mal eine Gruppe nehmen und in dem Notesfeld (unter den GroupScops etc) was eintragen und dann nochmal alle Attribute in der Shell abfragen. Dann siehst du auch ein Info Attribut ;)


    • Bearbeitet Digiflex Donnerstag, 29. November 2012 13:15
    Donnerstag, 29. November 2012 13:10
  • Sorry meine Frage... Welche Shell meinst du denn ? Die PowerShell in der Konsole ?

    Das Feld Info ist definitiv das Attribut Description!?
    Siehe hier:
    http://www.dacomsys.de/2012/08/mit-powershell-spezielle-ad-attribute-aendern/


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Donnerstag, 29. November 2012 13:25
  • Jupp, ich meine die Powershell.

    In deinem Link wird sich aber auf User-Objekte bezogen und nicht auf Gruppen-Objekte.

    Schau mal hier:
    http://allcomputers.us/image/1111/Modify%20a%20Group%20Object%20General%20Properties%20and%20Modify%20a%20Group%20Object%20Scope_1.jpg

    Das Notes-Feld ist in der Powershell das "Info"-Attribut. Dies wird aber bei einem Get-ADGroup nur angezeigt, wenn es befüllt ist. Hoffe wir finden heute noch zusammen ^^

    In diesem Feld steht der physikalische Pfad drin (händig selber eingetragen!), wo die Gruppe berechtigt ist. Daher möchte ich dies mit auslesen.



    • Bearbeitet Digiflex Donnerstag, 29. November 2012 13:48
    Donnerstag, 29. November 2012 13:38
  • Auch hier vermute ich dass es das Attribut Description ist ! Da Notes (so heißt das in dem Bild) nur die englische Bedeutung von Anmerkung = Description ist!
    Ich habe hier weder bei Usern noch bei Gruppen irgendwo (Shell oder ISE) ein Attribut Info oder Notes !

    Sorry da kann ich dir nicht helfen!


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    Donnerstag, 29. November 2012 14:26

  • So ist es bei mir. Ist das Notes Feld leer, dann wird bei Get-AdGroup auch das Attribut Info nicht angezeigt.

    • Bearbeitet Digiflex Donnerstag, 29. November 2012 16:12
    Donnerstag, 29. November 2012 16:11
  • Hier die Lösung..ist einfach nur eine etwas abgewandelte Form von deinem Script, Peter. Nicht sonderlich performant aber es funzt!! =)

    $BERGroups = Get-ADGroup -Filter * -Properties info -SearchBase "OU=Groups_DFS,OU=DE,OU=COMPANY,DC=test,DC=local"
    
    $BERList = foreach ($BERGroup in $BERGroups){
        Get-ADGroupMember $BERGroup | ForEach-Object {
            $Member = $_
        
            Switch ($Member.objectClass) {
                'user'  {$Member | Get-ADUser | Select-Object @{Name='Gruppe';Expression={$BERGroup.name}},@{Name='Info';Expression={$BERGroup.Info}},Name,@{Name='Type';Expression={'User'}}}
                'group' {$Member | Get-ADGroup -Properties info | Select-Object @{Name='Gruppe';Expression={$BERGroup.name}},@{Name='Info';Expression={$BERGroup.Info}},Name,@{Name='Type';Expression={'Group'}}}
            }
         }
    } 
    
    $BERList| Export-Csv "C:\Temp\BERFileAccesslist.csv" -NoTypeInformation 

    Danke für die Unterstützung!!! Immer wieder super und lehrreich hier! :)

    VG, Thomas


    • Bearbeitet Digiflex Donnerstag, 29. November 2012 16:45
    • Als Antwort markiert Digiflex Donnerstag, 29. November 2012 16:46
    Donnerstag, 29. November 2012 16:45
  • Schön das du es noch hin gekriegelt hast ! ;-)
    Ich habe nun gelernt das es das Attribut Info wirklich gibt!

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Freitag, 30. November 2012 05:59