scritch
Goto Top

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.

Content-Key: 394272

Url: https://administrator.de/contentid/394272

Printed on: April 24, 2024 at 16:04 o'clock

Member: Pjordorf
Pjordorf Nov 30, 2018 at 16:13:38 (UTC)
Goto Top
Hallo,

Zitat von @scritch:
ich kann in dem Zustand nichts damit anfangen
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
Member: emeriks
emeriks Nov 30, 2018 updated at 16:38:21 (UTC)
Goto Top
Hi,
eigentlich eine Frage der Logik.
Wenn Du nur
Get-ADGroupMember NameDeinerGruppe
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
Get-ADGroup -Filter {name -like "standortfilter*"}  
viele Gruppen geliefert bekommst, und Du diese Ausgabe sofort mit
Get-ADGroup -Filter {name -like "standortfilter*"} | Get-ADGroupMember  
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:
Get-ADGroup -Filter {name -like "standortfilter*"} | %{$GroupName = $_.Name;  Get-ADGroupMember $_ | %{Write-Host "$GroupName  $_.Name" }}  

Vielleicht geht es sogar noch einfacher.

E.
Mitglied: 137846
137846 Nov 30, 2018, updated at Dec 05, 2018 at 15:33:04 (UTC)
Goto Top
AD User auslesen und in Datei mit Logo abspeichern
Usw.
Als Einzeiler
Get-ADGroup -Filter {name -like "standortfilter*"} -PipelineVariable Group | %{Get-ADGroupMember $_.SAMAccountName -Recursive | %{[pscustomobject]@{Gruppe=$group.Name;Member=$_.Name}}}  
Gruß A.
Member: Daemmerung
Daemmerung Nov 30, 2018 at 20:04:53 (UTC)
Goto Top
Vielleicht meinst du sowas hier. Ist übersichtlich und kannst du flexibel verwenden. Du kannst die Ausgabe auch als CSV-Datei exportieren.
$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
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. face-smile

Grüße und viel Erfolg
Member: agowa338
agowa338 Dec 01, 2018 at 00:38:48 (UTC)
Goto Top
`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.
Member: scritch
scritch Dec 05, 2018 at 15:25:33 (UTC)
Goto Top
Hallo Leute. Entschuldigt die späte Rückmeldung und danke für eure Tipps.

@toniho: Das Script wirft leider nur Fehler aus. Der Inhalt ist nur zur Hälfte für mich nachvollziehbar. Könntest du je Zeile bitte kurze Kommentare
hinzufügen?

@emirks: Auch wenn du bereits etwas kommentiert hast, ist für mich nicht alles logisch aus deiner Codezeile. Sie macht im Prinzip das was sie soll, aber ich würde das auch gerne verstehen. Sie gibt mit den Namen der Benutzer auch noch einige andere Infos mit aus, das sollte bitte auch so unterbunden werden, damit nur der Name ausgegeben wird. Was muss ich dafür an dem Code ändern?
Member: emeriks
emeriks Dec 05, 2018 at 15:32:13 (UTC)
Goto Top
Zitat von @scritch:
Sie gibt mit den Namen der Benutzer auch noch einige andere Infos mit aus,
Nein, gibt sie nicht. Da hast Du falsch abgeschrieben.
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)" }}  
Member: Daemmerung
Daemmerung Dec 06, 2018 at 18:15:01 (UTC)
Goto Top
@toniho: Das Script wirft leider nur Fehler aus. Der Inhalt ist nur zur Hälfte für mich nachvollziehbar. Könntest du je Zeile bitte kurze Kommentare
Ich melde mich morgen bei dir und werde dir das Script nochmal Zeile für Zeile kommentieren.