none
AD Gruppen per Befehl in CSV exportieren.. RRS feed

  • Frage

  • Hallo zusammen,

    ich brauche für migration der Gruppen in eine neue Domäne einer Powershellabfrage mit der ich alle Gruppen mit "Mitglieder - Gruppen" exportieren kann. Dabei möchte ich erstmal haben welche Gruppen zu eine Gruppe gehören.

    Wie kann ich dann die Gruppen aus eine Gruppe exportieren und als eine CSV speichern?

    Sinn davon:

    - User Profilen sind neu (daher sind für mich die User uninteresannt)

    - Es gibt Rollengruppen die anderen Gruppen beinhalten - genau die möchte ich in eine CSV ausgeben..

    Und hier habe ich mein Problem :( alle Shell abfragen beziehen sich auf die User die Mitglieder eine Gruppen sind.

    Fragen:

    - wie würde so ein Befehl aussehen?

    - kann ich damit auch mehrere Gruppen gleichzeitig abfragen (es sind ca. 60 Gruppen). Die beinhalten in sich weiteren Gruppen.

    Hat jemand eine Idee?

    Vielen Dank

    Andy

    Dienstag, 21. Februar 2017 10:05

Antworten

  • Hallo,

    prinzipiell bin ich der Meinung von Sandro, hier ist aber ein Ansatz, den man auch mal diskutieren kann:

    $groups= Get-ADGroup -Filter *
    
    
    $allmember = foreach($group in $groups){
    $memberof = Get-ADPrincipalGroupMembership -Identity $group
    if($memberof){
    
    $memberof | %{ [pscustomobject]@{
                        'Gruppe'= $group.name
                        'MemberOf' = $_.name
                   } #pscostomobject
    
                   }#%memberof
                   }#if memberof
    }#foreach group in groups
    
    $allmember | Export-Csv -Path C:\test\member.csv -Delimiter ";" -NoTypeInformation
    

    grüße Andy


    Dienstag, 21. Februar 2017 11:53
  • Hallo Andy,

    wie hier schon oft geschrieben wurde, ist das hier kein Script-Shop. Wie weit hast Du denn schon versucht Evgenijs Vorschlag um einen CSV-Export zu erweitern? Poste bitte Dein Script und wenn Du irgendwo scheiterst helfen Dir die Scripting-Gurus hier gern nach eigenem Ermessen weiter.

    Fertige Scripte zum Download findest Du hier:

    https://gallery.technet.microsoft.com/scriptcenter/


    Freundliche Grüße

    Sandro
    MCSA: Windows Server 2012
    Fachinformatiker Fachrichtung Systemintegration (IHK, 07/2013)



    Dienstag, 21. Februar 2017 11:16
  • Moin,

    das ginge natürlich alles, doch ist das beschriebene Format natürlich nicht in CSV umzusetzen - da muss jede Zeile einen kompletten Datensatz enthalten.

    Hier als CSV:

    $out_file = 'c:\temp\groups.csv'
    'ParentGroup,MemberGroup' | Out-File $out_file
    foreach ($group in Get-ADGroup -Filter *) {
        $group | Get-ADGroupMember | where {$_.objectClass -eq 'group'} | foreach { 
            "`"$($group.Name)`",`"$($_.Name)`"" | Out-File $out_file -Append 
        }
    }


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    Dienstag, 21. Februar 2017 11:17

Alle Antworten

  • Moin,

    quick and dirty, ohne das jetzt testen oder optimieren zu können:

    foreach ($group in Get-ADGroup -Filter *) { $group | Get-ADGroupMember | where {$_.objectClass -eq 'group'} | foreach { "$($group.Name)--> $($_.name)"}}


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    Dienstag, 21. Februar 2017 10:36
  • Hallo Herr Smirnov,

    vielen Dank für die Abfrage. Wie kann ich das Ergebnis dann als CSV speichern? Geht das auch in Format (oder in spalten):

    1. Gruppe die Angefagt wird:

    1.1 Gruppe 1

    1.2 Gruppe 2

    1.3 etc

    2. Gruppe die... und so weiter..?

    Vielen Dank

    Andy

    Dienstag, 21. Februar 2017 11:06
  • Hallo Andy,

    wie hier schon oft geschrieben wurde, ist das hier kein Script-Shop. Wie weit hast Du denn schon versucht Evgenijs Vorschlag um einen CSV-Export zu erweitern? Poste bitte Dein Script und wenn Du irgendwo scheiterst helfen Dir die Scripting-Gurus hier gern nach eigenem Ermessen weiter.

    Fertige Scripte zum Download findest Du hier:

    https://gallery.technet.microsoft.com/scriptcenter/


    Freundliche Grüße

    Sandro
    MCSA: Windows Server 2012
    Fachinformatiker Fachrichtung Systemintegration (IHK, 07/2013)



    Dienstag, 21. Februar 2017 11:16
  • Moin,

    das ginge natürlich alles, doch ist das beschriebene Format natürlich nicht in CSV umzusetzen - da muss jede Zeile einen kompletten Datensatz enthalten.

    Hier als CSV:

    $out_file = 'c:\temp\groups.csv'
    'ParentGroup,MemberGroup' | Out-File $out_file
    foreach ($group in Get-ADGroup -Filter *) {
        $group | Get-ADGroupMember | where {$_.objectClass -eq 'group'} | foreach { 
            "`"$($group.Name)`",`"$($_.Name)`"" | Out-File $out_file -Append 
        }
    }


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    Dienstag, 21. Februar 2017 11:17
  • Hallo,

    prinzipiell bin ich der Meinung von Sandro, hier ist aber ein Ansatz, den man auch mal diskutieren kann:

    $groups= Get-ADGroup -Filter *
    
    
    $allmember = foreach($group in $groups){
    $memberof = Get-ADPrincipalGroupMembership -Identity $group
    if($memberof){
    
    $memberof | %{ [pscustomobject]@{
                        'Gruppe'= $group.name
                        'MemberOf' = $_.name
                   } #pscostomobject
    
                   }#%memberof
                   }#if memberof
    }#foreach group in groups
    
    $allmember | Export-Csv -Path C:\test\member.csv -Delimiter ";" -NoTypeInformation
    

    grüße Andy


    Dienstag, 21. Februar 2017 11:53
  • Guten Morgen,

    der Script scheint zu laufen, aber bei bestimmten Punkt bricht der immer ab. Woran kann es liegen?

    Gruß, Andy

    Mittwoch, 22. Februar 2017 10:48
  • Hallo Andreas,

    vielen Dank für dein Beitrag. Kriege hier aber estmal nur die Info raus:

    Habe ich etwas falsch gemacht?

    Gruß, Andy

    Mittwoch, 22. Februar 2017 10:50