Ausgabe von Powershell durcheinander
Hallo Leute. Ich wollte mir eine Auflistung aller AD-Gruppen meines Standortes und dessen Member ausgeben lassen. Leider ist die Ausgabe nicht wirklich sortiert, sprich, ich kann in dem Zustand nichts damit anfangen. Habe ich etwas verkehrt gemacht? Ich nutze diesen Befehl:
Get-ADGroup -Filter {name -like "standortfilter*"} | Get-ADGroupMember | Select Name
Ich bekomme eine Ausgabe mit den Mitarbeitern und den Gruppen, aber wie gesagt, es ist alles durcheinander und die Mitarbeiter nicht den Gruppen zugeordnet, wo sie eigentlich reing ehören.
Get-ADGroup -Filter {name -like "standortfilter*"} | Get-ADGroupMember | Select Name
Ich bekomme eine Ausgabe mit den Mitarbeitern und den Gruppen, aber wie gesagt, es ist alles durcheinander und die Mitarbeiter nicht den Gruppen zugeordnet, wo sie eigentlich reing ehören.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 394272
Url: https://administrator.de/contentid/394272
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
Wie genau sollen wir uns dein Chaos genau vorstellen? Taiuchen dort Chinesische Schriftzeichen auf oder was? Entweder die Ausgabe hier (in Code Tags) reinstellen oder du nutzt Bilder.
Gruß,
Peter
Wie genau sollen wir uns dein Chaos genau vorstellen? Taiuchen dort Chinesische Schriftzeichen auf oder was? Entweder die Ausgabe hier (in Code Tags) reinstellen oder du nutzt Bilder.
die Mitarbeiter nicht den Gruppen zugeordnet, wo sie eigentlich reing ehören.
Dann mach mal eine Aufstellung für uns damit wir wiseen welcher Mitarbeiter in welche Gruppe gehört.Gruß,
Peter
Hi,
eigentlich eine Frage der Logik.
Wenn Du nur
ausführst, dann bekommst Du die einzelnen Mitglieder geliefert. Diese Information nützt Dir aber nur etwas im Zusammenhang mit dem Wissen, welche Gruppe Du abgefragt hast. Sonst ist sie wertlos.
Wenn Du jetzt mit
viele Gruppen geliefert bekommst, und Du diese Ausgabe sofort mit
an Get-ADGroupMember weitergibst, dann bekommst Du am Stück viele Gruppenmitglieder geliefert, ohne zu wissen, welches Mitglied noch zu welcher abgefragten Gruppe gehört.
Also musst Du Dir den Namen der Gruppe zwischendurch merken und die Ausgabe von Get-ADGroupMember zusammen mit dem Gruppennamen verarbeiten. Das könnte z.B. so aussehen:
Vielleicht geht es sogar noch einfacher.
E.
eigentlich eine Frage der Logik.
Wenn Du nur
Get-ADGroupMember NameDeinerGruppe
Wenn Du jetzt mit
Get-ADGroup -Filter {name -like "standortfilter*"}
Get-ADGroup -Filter {name -like "standortfilter*"} | Get-ADGroupMember
Also musst Du Dir den Namen der Gruppe zwischendurch merken und die Ausgabe von Get-ADGroupMember zusammen mit dem Gruppennamen verarbeiten. Das könnte z.B. so aussehen:
Get-ADGroup -Filter {name -like "standortfilter*"} | %{$GroupName = $_.Name; Get-ADGroupMember $_ | %{Write-Host "$GroupName $_.Name" }}
Vielleicht geht es sogar noch einfacher.
E.
AD User auslesen und in Datei mit Logo abspeichern
Usw.
Als Einzeiler
Gruß A.
Usw.
Als Einzeiler
Get-ADGroup -Filter {name -like "standortfilter*"} -PipelineVariable Group | %{Get-ADGroupMember $_.SAMAccountName -Recursive | %{[pscustomobject]@{Gruppe=$group.Name;Member=$_.Name}}}
Vielleicht meinst du sowas hier. Ist übersichtlich und kannst du flexibel verwenden. Du kannst die Ausgabe auch als CSV-Datei exportieren.
Da ich gerade nicht am Arbeitsplatz sitze, konnte ich es nicht testen, sollte aber soweit funktionieren. Du könntest höchstens einen Syntaxfehler bekommen, was ich aber nicht vermute. Melde dich, wenn es Probleme gibt.
Darfst du frei verwenden.
Grüße und viel Erfolg
$group_filter = "*Standard*";
$groups = Get-ADGroup -filter { Name -LIKE $group_filter } | Sort-Object Name
$hash = @{};
$objects = @();
Foreach($group IN $groups)
{
$group_name = $group.Name
$group_dn = $group.DistinguishedName
$group_members = Get-ADGroupMember -identity $group_dn | Sort-Object Name
Foreach($member IN $group_members)
{
$member_dn = $member.DistinguishedName
$member_name = $member.Name
$hash = @{
Group_Name=($group_name);
Group_Member=($member_name);
Group_Member_DN=($member_dn);
}
$objects += New-Object PSObject -properties $hash
}
}
$objects | Sort-Object Group_Name
Darfst du frei verwenden.
Grüße und viel Erfolg
`Group-Object ...` und `Sort-Object ...` hast du bereits versucht?
Und hier noch zwei gute Anleitungen zum Umgang mit PowerShell. Das wirst du in Zukunft vermutlich noch viel öfter brauchen^^
https://programminghistorian.org/en/lessons/intro-to-powershell
https://docs.microsoft.com/en-us/powershell/scripting/getting-started/ge ...
http://www.powershelltutorial.net/home/Introduction-to-Powershell
Außerdem würde ich dir empfehlen, gleich mit PowerShell Core/6 anzufangen. Es gab einige breaking changes zwischen 5.1 und 6. Außerdem erlaubt PowerShell Core mehrere installationen in verschiedenen Versionen, wodurch es nicht dazu kommt, dass du auf z. B. Exchange Servern nicht aktualisieren kannst ohne die Management Shell zu killen bzw. Out of support zu sein.
Und hier noch zwei gute Anleitungen zum Umgang mit PowerShell. Das wirst du in Zukunft vermutlich noch viel öfter brauchen^^
https://programminghistorian.org/en/lessons/intro-to-powershell
https://docs.microsoft.com/en-us/powershell/scripting/getting-started/ge ...
http://www.powershelltutorial.net/home/Introduction-to-Powershell
Außerdem würde ich dir empfehlen, gleich mit PowerShell Core/6 anzufangen. Es gab einige breaking changes zwischen 5.1 und 6. Außerdem erlaubt PowerShell Core mehrere installationen in verschiedenen Versionen, wodurch es nicht dazu kommt, dass du auf z. B. Exchange Servern nicht aktualisieren kannst ohne die Management Shell zu killen bzw. Out of support zu sein.
Nein, gibt sie nicht. Da hast Du falsch abgeschrieben.
Kann sein, dass es besser ist, am Ende "$_.Name" nochmal in Klammern zu setzen: "$($_.Name)"
Kann sein, dass es besser ist, am Ende "$_.Name" nochmal in Klammern zu setzen: "$($_.Name)"
Get-ADGroup -Filter {name -like "standortfilter*"} | %{$GroupName = $_.Name; Get-ADGroupMember $_ | %{Write-Host "$GroupName $($_.Name)" }}