Kuddel071089 9 Geschrieben 18. März 2016 Melden Teilen Geschrieben 18. März 2016 Hallo zusammen, ich bin gerade dabei eine Asuwertung alle Mitglieder von bestimmten Verzeichnissen zu erstellen. Die Auflistung aller Mitglieder funtkioniert auch. Jetzt möchte ich am Ende der Datei noch den Verzeichnisverantwortlichen anfügen, der bei uns in der Berechtogungsgruppe im Attribut "info" geplfegt wird. Dazu habe ich mir also ein Schleife erstellt: Get-ADGroup $gruppe.SamAccountName -Properties * | Select @{Expression={$gruppe.SamAccountName};Label="Verzeichnissname (ohne -RW)"}, @{Expression={$gruppe.info};Label="Verantwortlicher"} | Out-File "$outputFile" -Append } } Damit der Endanwender diese Auswertung auch versteht, wurde aus SammAccountName "Verzeichnissname (ohne -RW)" als Tabellenkopf. Jetzt möchte ich gern aus info "Verantwortlicher" machen. Funt auch, nur leider werden die Werte aus den info Feldern nicht exportiert. So funkitoniert es, ist aber ein wenig unschön Get-ADGroup $gruppe.SamAccountName -Properties * | Select @{Expression={$gruppe.SamAccountName};Label="Verzeichnissname (ohne -RW)"}, info | Out-File "$outputFile" -Append } } Ich hoffe jmd hat eine Idee für mich. Danke schon einmal Ich habe es jetzt hinbekommen, 2 Spalten um zu benennen. ForEach ($Gruppe in $Gruppen){ if($gruppe.SamAccountName -like "*-RW"){ #Get-ADGroup $gruppe.Name -Properties * | Select @{Expression={$gruppe.SamAccountName};Label="Verzeichnissname (ohne -RW)"}, @{Expression={$gruppe.info};Label="Verantwortlicher"} | Out-File "$outputFile" -Append Get-ADGroup $gruppe.Name -Properties * | Format-Table Name, @{ Label="Verzeichnisname (ohne -RW)" Expression={(Get-ADGroup $gruppe.Name -Properties SamAccountName | Select $($_.SamAccountName))} }, @{ Label="Verantwortlicher" Expression={(Get-ADGroup $gruppe.SamAccountName -Properties info | Select $($_.info))} } | Out-File "$outputFile" -Append } } Leider habe ich jetzt noch 2 Probleme: 1.Damit dies Ausgabe funktioniert muss ich zwingend eine 3 Spalte mit ausgeben, wie zb SName. Lasse ich diese Weg, werden die anderen Spalten nicht gefüllt. 2.Wenn die Spalten gefüllt sind, sind da mehr als die gewünschten Attribute eingetragen: Beispiel des Verantwortlichen: @{Mustermann, Max=Microsoft.ActiveDirectory.M... Eingeltich soll in der Spalter Verantwortlicher nur der Eintrag aus dem Infofeld stehen "Maustermann, Max" Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 18. März 2016 Melden Teilen Geschrieben 18. März 2016 Hallo, Ich benutze in solchen Fällen gerne das PSObject etwa so (ungetestet) Foreach ($gruppe in $gruppen) { [PsObject]$OutPut = "" | Select-Object Verzeichnisname_ohne_RW,Verantwortlicher,LetzterZugriff $OutPut.Verzeichnisname_ohne_RW = $($gruppe.SamAccountName) $OutPut.Verantwortlicher = $($gruppe.info) $OutPut.LetzterZugriff = $($gruppe.LastAccessTime) $AllOutPut += $OutPut }#Foreach $AllOutPut | Format-Table * -auto Damit hat man ein flexibles und übersichtliches Array in der Hand. Bei Bedarf kann man ja die Table noch anpassen (width, etc)https://technet.microsoft.com/de-de/library/ee692794.aspx Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 18. März 2016 Autor Melden Teilen Geschrieben 18. März 2016 (bearbeitet) Hallo, Ich benutze in solchen Fällen gerne das PSObject etwa so (ungetestet) Foreach ($gruppe in $gruppen) { [PsObject]$OutPut = "" | Select-Object Verzeichnisname_ohne_RW,Verantwortlicher,LetzterZugriff $OutPut.Verzeichnisname_ohne_RW = $($gruppe.SamAccountName) $OutPut.Verantwortlicher = $($gruppe.info) $OutPut.LetzterZugriff = $($gruppe.LastAccessTime) $AllOutPut += $OutPut }#Foreach $AllOutPut | Format-Table * -auto Damit hat man ein flexibles und übersichtliches Array in der Hand. Bei Bedarf kann man ja die Table noch anpassen (width, etc) https://technet.microsoft.com/de-de/library/ee692794.aspx Ich habe es fast 1:1 übernommen. Ich hab einen Filter nach *-RW (Schreibrechtegruppen) hinzugefügt, sonst wird der Verantworliche ja doppel für -R und -RW aufgeführt Die Spalte "Letzter Zugriff" benötige ich nicht. Der Output geht mit in meine txt Datei Foreach ($gruppe in $gruppen) { if($gruppe.SamAccountName -like "*-RW"){ [PsObject]$OutPut = "" | Select-Object Verzeichnisname_ohne_RW,Verantwortlicher $OutPut.Verzeichnisname_ohne_RW = $($gruppe.SamAccountName) $OutPut.Verantwortlicher = $($gruppe.info) $OutPut | Format-Table * | Out-File "$outputFile" -Append }} Funktioniert jetzt wie es soll. Probieren geht über studieren ^^ Wenn man jetzt noch irgendwie das -RW am Ende der Gruppennamen entfernen kann und die erste Spalte somit direkt Verzeichnisnamen nennen kann, wäre ich wunschlos glücklich. Aber vielen Dank schon einmal :-) #freu bearbeitet 18. März 2016 von Kuddel071089 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 19. März 2016 Melden Teilen Geschrieben 19. März 2016 du machst bei jedem Schleifendurchlauf einen neuen Filezugriff mit Öffnen und Schließen. Bei relativ wenigen Gruppen ist es kaum merkbar, aber bei vielen Schleifendurchläufen wird es Performance kosten. Da ist es besser erst alle Daten in ein Object zwischenzuspeichern ($AllOutPut += $OutPut) und am Ende alle Einträge $AllOutPut zusammen in einem einzigen Vorgang abzuspeichern. $AllOutPut | Format-Table * -auto | Out-File "$outputFile" auch $AllOutPut | export-csv oder $AllOutPut | export-clixml sind so einfach durchführbar Zitieren Link zu diesem Kommentar
Beste Lösung Kuddel071089 9 Geschrieben 19. März 2016 Autor Beste Lösung Melden Teilen Geschrieben 19. März 2016 Die Abfrage funktioniert (siehe oben). Das entfernen der Endungen habe ich jetzt auch hinbekommen (http://www.mcseboard.de/topic/206707-powershell-letzten-zeichen-abschneiden/) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.