none
Powershell AD mehrere Dateien gleichzeitig speichern Get.ADGroupMember RRS feed

  • Frage

  • Hallo,

    ich habe folgendes Problem, ich möchte gerne alle Gruppenmitglieder einer bestimmten Gruppe auslesen. Diese Gruppe gibt es von der Schreibweise mehrmals z.B. IB1-Intel-RWCEMF und IB1-Intel-RW

    Ich möchte nun gerne wenn ich IB1-Intel eingebe das mir von den Gruppen wo IB1-Intel vorkommt mir die Mitglieder anzeigt und in eine .txt Datei abspeichert. Ist dies möglich?

    Jetziges Script:

    $Gruppe = Read-Host "Gruppe eingeben"
    Get-ADGroupMember -Identity $Gruppe | Select-Object SamAccountName,Name | Format-Table -autosize >C:\Auswertung\$Gruppe-Zugriffsrecht.txt

    Dienstag, 17. Juni 2014 05:41

Antworten

  • Moin!

    Du weißt schon, dass das Zeichen "*" nicht im Dateinamen vorkommen darf? Öffne doch mal den folgenden Link und klick auf "Welche Zeichen sind in einem Dateinamen nicht zulässig?"

    http://windows.microsoft.com/de-de/windows/file-names-extensions-faq#1TC=windows-7

    Vielleicht funktionier folgender Code (ungetestet)

    $SuchGruppe = Read-Host
    
    $Gruppen = Get-AdGroup -Filter { Name -like $SuchGruppe }
    
    ForEach ($Gruppe in $Gruppen){
    
    $Gruppe.Name | Get-AdGroupMember | Select @{Expression={$Gruppe.Name};Label="Gruppenname"}, SamAccountName
    
    }

    Grüße

    MichaMS

    • Als Antwort markiert Moobo Dienstag, 17. Juni 2014 10:22
    Dienstag, 17. Juni 2014 09:43
  • Moin!

    Die Ausgabe ist dadurch bedingt, dass der Schleifendurchlauf jeweils für eine Gruppe durchgeführt wird. Wenn du alle Ergebnisse in einer Datei haben möchtest, musst du die Ausgabe also an die Datei einhängen. Mit

    >C:\Auswertung\Zugriffsrechte.txt

    überschreibst du aber immer die Inhalte der Textdatei. Also in deinem Fall einfach die Ausgabe anhängen. Z.B. durch:

    >> C:\Auswertung\Zugriffsrechte.txt
    
    

    oder

    Out-File $Dateiname -Append:$true

    So als Grundlage sei dir folgende Seite empfohlen: http://www.powershellpraxis.de/

    Grüße

    MichaMS

    • Als Antwort markiert Moobo Donnerstag, 19. Juni 2014 09:59
    Dienstag, 17. Juni 2014 11:18

Alle Antworten

  • Moin!

    Ja, das ist möglich. Du kannst zum Beispiel über das CMDlet Get-AdGroup zunächst alle Gruppen mit dem gewünschten Namen suchen und anschließend für jede der gefundenen Gruppen ein Get-AdGroupMember durchführen.

    Get-AdGroup -Filter { Name -like "Suchbegriff*"} | ForEach-Object {Get-AdGroupMember -Identity $_.Name}

    Wobei "Suchbegriff" de Gruppennamen darstellt. Ich persönlich habe mir angewöhnt die gewünschten Daten anschließend in eine CSV-Datei zu exportieren und nicht in eine Text-Datei auszugeben.

    Viele Grüße

    MichaMS

    Dienstag, 17. Juni 2014 06:07
  • $Gruppe = Read-Host Get-AdGroup -Filter { Name -like $Gruppe} | ForEach-Object {Get-AdGroupMember -Identity $_.Name} | Select-Object SamAccountName, Name | Format-Table -AutoSize Write-Host $Gruppe


    Nun möchte ich gerne das ich das Ergebniss in eine csv oder txt abspeicher und mit der dazugehörigen Gruppe

    • Bearbeitet Moobo Dienstag, 17. Juni 2014 06:42
    Dienstag, 17. Juni 2014 06:36
  • Moin,

    häng doch einfach file  | out-file .\$gruppe.csv ran.

    Das erzeugt dann im aktuellen Verzeichnis eine Datei, die den Namen der Gruppe trägt, falls das genügt.

    Viele Grüße
    Olaf


    Dienstag, 17. Juni 2014 09:17
  • Leider bekomme ich eine Fehlermeldung:

    out-file : Der Vorgang kann nicht ausgeführt werden, weil der aufgelöste Platzhalterpfad "C:\Auswertung\IB1-Intel*.csv" keine Datei angibt.
    In Zeile:2 Zeichen:168
    + ... ble -AutoSize |out-file C:\Auswertung\$gruppe.csv
    +                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : OpenError: (C:\Auswertung\IB1-Intel*.csv:String) [Out-File], FileNotFoundException
        + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand

    Dienstag, 17. Juni 2014 09:23
  • Moin!

    Du weißt schon, dass das Zeichen "*" nicht im Dateinamen vorkommen darf? Öffne doch mal den folgenden Link und klick auf "Welche Zeichen sind in einem Dateinamen nicht zulässig?"

    http://windows.microsoft.com/de-de/windows/file-names-extensions-faq#1TC=windows-7

    Vielleicht funktionier folgender Code (ungetestet)

    $SuchGruppe = Read-Host
    
    $Gruppen = Get-AdGroup -Filter { Name -like $SuchGruppe }
    
    ForEach ($Gruppe in $Gruppen){
    
    $Gruppe.Name | Get-AdGroupMember | Select @{Expression={$Gruppe.Name};Label="Gruppenname"}, SamAccountName
    
    }

    Grüße

    MichaMS

    • Als Antwort markiert Moobo Dienstag, 17. Juni 2014 10:22
    Dienstag, 17. Juni 2014 09:43
  • Das klappt so wie ich es haben möchte danke.


    IB1-Intel*
    
    Gruppenname                                                                        SamAccountName                                                                   
    -----------                                                                        --------------                                                                   
    IB1-Intel-Doku-RF                                                                  Bohm                                                                             
    IB1-Intel-Doku-RWCEMF                                                              Kappel                                                                           
    IB1-Intel-Doku-RWCEMF                                                              Haagen                                                                           
    IB1-Intel-Doku-RWCEMF                                                              Kulinski                                                                         
    IB1-Intel-Doku-RWCEMF                                                              Kodlin                                                                           
    IB1-Intel-RWCEMF                                                                   Buehrig                                                                          
    IB1-Intel-RWCEMF                                                                   Kappel                                                                           
    IB1-Intel-RWCEMF                                                                   Haagen                                                                           
    IB1-Intel-RWCEMF                                                                   Raethke                                                                          
    IB1-Intel-RWCEMF                                                                   Bohm                                                                             
    IB1-Intel-RWCEMF                                                                   Kulinski                                                                         
    IB1-Intel-RWCEMF                                                                   Schuette-M                                                                       
    IB1-Intel-RWCEMF                                                                   IB1-Azubi                                                                        
    IB1-Intel-RWCEMF                                                                   Kodlin         

    so sieht es. Wenn ich dies in eine Datei speichern möchte also mit den Code:

    $SuchGruppe = Read-Host
    
    $Gruppen = Get-AdGroup -Filter { Name -like $SuchGruppe }
    
    ForEach ($Gruppe in $Gruppen){
    
    $Gruppe.Name | Get-AdGroupMember | Select @{Expression={$Gruppe.Name};Label="Gruppenname"}, SamAccountName | Format-Table -AutoSize >C:\Auswertung\Zugriffsrechte.txt
    
    }
    

    Sieht die Ausgabe in der .txt Datei nicht mehr so aus, da fehlen dann Daten.

    Gruppenname      SamAccountName
    -----------      --------------
    IB1-Intel-RWCEMF Buehrig       
    IB1-Intel-RWCEMF Kappel        
    IB1-Intel-RWCEMF Haagen        
    IB1-Intel-RWCEMF Raethke       
    IB1-Intel-RWCEMF Bohm          
    IB1-Intel-RWCEMF Kulinski      
    IB1-Intel-RWCEMF Schuette-M    
    IB1-Intel-RWCEMF IB1-Azubi     
    IB1-Intel-RWCEMF Kodlin        
    
    
    


    Dienstag, 17. Juni 2014 10:40
  • Moin!

    Die Ausgabe ist dadurch bedingt, dass der Schleifendurchlauf jeweils für eine Gruppe durchgeführt wird. Wenn du alle Ergebnisse in einer Datei haben möchtest, musst du die Ausgabe also an die Datei einhängen. Mit

    >C:\Auswertung\Zugriffsrechte.txt

    überschreibst du aber immer die Inhalte der Textdatei. Also in deinem Fall einfach die Ausgabe anhängen. Z.B. durch:

    >> C:\Auswertung\Zugriffsrechte.txt
    
    

    oder

    Out-File $Dateiname -Append:$true

    So als Grundlage sei dir folgende Seite empfohlen: http://www.powershellpraxis.de/

    Grüße

    MichaMS

    • Als Antwort markiert Moobo Donnerstag, 19. Juni 2014 09:59
    Dienstag, 17. Juni 2014 11:18