Benutzer mit den meisten Antworten
Ad User Auflistung

Frage
-
Hi Hi,
also ich komm mal wieder zu diesem Thema zurück. Ich hab noch einmal ausprobiert aber ich bekomme es einfach nicht hin.
Ich brauch eine Tabelle wo Der Username LastLogon und die Gruppenmitgliedschaften des Users in einer Tabelle stehen.
Username und LastLogon sind ja gar kein Problem. Hätte ich so gemacht:
Get-ADUser -filter 'name -like "XXXXXX"' -Properties * | ft Name, LastLogonDate
Ergebnis:
Name LastLogonDate
---- -------------
XXXXXXXXXX 22.01.2017 07:05:48Ich weis auch wie ich mir die Gruppen des Users anschauen kann:
Get-ADUser -filter 'name -like "XXXXXXX"' -Properties * | ForEach-Object { Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName } | Format-table SamAccountName
Ergebnis:
Es kommt eine Tabelle mit dem Header SamAccountName und den entsprechenden Gruppen untereinander.
SamAccountName
--------------
Domänen-Admins
Schema-Admins
Organisations-Admins
Domänen-BenutzerJetzt bräuchte ich nur eine Tabelle die mir beide Ergebnisse in einer Tabelle anzeigt. Könnt ihr helfen ?
Antworten
-
Hallo,
so ich habe jetzt das Script dass das Excel Modell von oben erzeugt auf die schnelle zusammengestutzt und deinen Bedürfnissen angepasst. Du musst dann nur noch das LastlogOnDate hinzufuegen.
Es liest eine CSV-Datei mit folgendem Inhalt ein
SamAccountName, Name
UsrA, User A
UsrB, User Busw. ein, ermittelt für die die Gruppen und gibt sie os aus wie du es gerne hättest.
param ( [Parameter( Mandatory=$true )] [ValidateScript({Test-Path $_})] [String]$Path ) $Users = Import-Csv $Path $UsersMemberOf = New-Object System.Collections.ArrayList foreach ($User in $Users) { try { $MemberOf = Get-ADUser -Identity $User.SamAccountName -properties MemberOf -ErrorAction Stop | Select-Object -ExpandProperty MemberOf | Sort-Object | ForEach-Object { $_.Split(',')[0].Replace('CN=','') } } catch { Write-Warning "Infos fuer [$($User.Name) / $($User.SamAccountName)] konnten nicht ermittelt werden! Bitte Angaben fuer dieses Konto ueberpruefen!" Continue } $UsersMemberObject = New-Object PSObject Add-Member -InputObject $UsersMemberObject -MemberType 'NoteProperty' -Name Name -Value "$($User.Name)" Add-Member -InputObject $UsersMemberObject -MemberType 'NoteProperty' -Name SamAccountName -Value "$($User.SamAccountName)" Add-Member -InputObject $UsersMemberObject -MemberType 'NoteProperty' -Name MemberOf -Value $MemberOf $Null = $UsersMemberof.Add($UsersMemberObject) } $Excel = New-Object -ComObject Excel.Application $Excel.Visible = $true $WorkBook = $Excel.Workbooks.add() $Sheet = $WorkBook.WorkSheets.Item(1) $Sheet.Cells.Item(1,1) = 'Name' $Sheet.Cells.Item(1,2) = 'SamAccountName' $L = 2 foreach ($User in $UsersMemberOf) { $Sheet.Cells.Item($L,1) = "$($User.Name)" $Sheet.Cells.Item($L,2) = "$($User.SamAccountName)" foreach ($Group in $User.MemberOf) { $Sheet.Cells.Item($L,3) = "$Group" $L++ } } $ReSize = $Sheet.UsedRange $Null = $ReSize.EntireColumn.AutoFit() $Null = $Sheet.Range("C2").Select() $Sheet.Application.ActiveWindow.FreezePanes = $true
Beste Gruesse
Man kann da noch optimieren, aber wie gesagt ich habe das jetzt schnell zusammen gebastelt.
brima
habe noch 4 Zeilen überflüssigen Code entfernt
- Bearbeitet brima Donnerstag, 26. Januar 2017 16:11
- Als Antwort vorgeschlagen SandroReiter Freitag, 27. Januar 2017 08:55
- Als Antwort markiert Yavor TanevMicrosoft contingent staff Donnerstag, 2. Februar 2017 13:57
Alle Antworten
-
Die Gruppenmitgliedschaften kannst Du mit der Eigenschaft "MemberOf" direkt mit Get-ADUser ermitteln. Oder Du kannst beide Abfragen mittels einer "berechneten Property" verbinden.
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Donnerstag, 26. Januar 2017 09:54
-
Hi ,
ja das stimmt memberof hab ich schon versucht bekomme es aber leider in der tabelle dann nicht richtig angezeigt.
so hätte ich es gerne angezeigt:
Name LastLogonDate Gruppenname Person1 Datum Gruppe1
Person2 Datum Gruppe1
- Bearbeitet HorterS Donnerstag, 26. Januar 2017 10:02 änderung
-
Sieht zwar auch nicht schön aus, aber vielleicht gefällt's Dir ja so:
Get-ADUser -filter "name -like 'XXX'" -Properties LastLogonDate,MemberOf | Format-Table -Property Name,LastLogonDate,@{Name='Mitgliedschaften';Expression={($_.MemberOf | ForEach-Object {(Get-ADGroup -Identity $_).Name}) -join ',' }} -AutoSize -Wrap
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join'' -
Hi,
vielen Dank für die schnelle Reaktion. Aber leider gefällt mir das beides noch nicht so ganz. Es ist eben einfach das Problem wenn ich die Tabelle mache wollen meine Kollegen genau in der Spalte memberof filtern können.
Sprich ich bräuchte die Mitgliedschaften schon einzeln augedröselt.
-
ich würde diese Tabelle erstellen und die Kollegen wollen dann in Excel nach der Gruppenmitgliedschaft filter um rauszufinden wer zum beispiel in der gruppe x ist und wer in der gruppe y ist usw.
Diese User haben keinen Powershell Zugriff und Berechtigung im AD.
-
Hmmm ... aber dann musst Du ja eher die AD-Gruppen auslesen und nicht die AD-User.
Lesenden Zugriff auf's AD hat normalerweise jeder. Also angucken können sich Deine Kollegen die Gruppen auch über die GUI.
Grüße - Best regards
PS:> (79,108,97,102|%{[char]$_})-join'' -
Hallo,
ich glaube er will so was.
Name LastLogonDate Gruppe1 Gruppe2 Gruppe3 ---- ------------- ------- ------- ------- UserA 22.01.2017 07:05:48 X UserB 21.01.2017 08:05:48 X X UserC 22.01.2017 09:25:12 X X
Im Prinzip einfach zu machen, du musst alle Gruppen ermitteln in denen die ausgewählten User sind, dann baust Du dir ein CustomObjekt mit Namen, LogonDate und all den Gruppen und erzeugst dann pro User einen Eintrag.
Dann kann man das ganze auch noch aus der PowerShell raus direkt in Excel aufbereiten ...
Ich könnte ja jetzt den fix und fertigen Code psten aber hier geht es nicht ums bestellen von Scripten.
Beste Gruesse
brima
- Bearbeitet brima Donnerstag, 26. Januar 2017 12:06
-
Hallo ist mir schon klar das ich hier kein Script bestelle. Hab ich auch nicht vor. Ich bekomme ja die Infos bereits aus der Powershell raus aber halt nicht zusammen in eine Tabelle.
Ich ich möchte eigentlich eine Spalte mit Gruppen wo aber für den Benutzer alle Gruppen in der er Mitglied ist angezeigt wird, jedoch ein Gruppenname pro Zelle.
Und das bekomme ich nicht hin.
-
-
Hi,
du willst also sowas?
Jap genau sowas hätte ich gerne:
Code für user daten wie name und lastlogon ist ja kein ding
Get-ADUser -filter 'name -like "XXXXXX"' -Properties * | ft Name, LastLogonDate
Code für die Gruppen
Get-ADUser -filter 'name -like "XXXXXXXX"' -Properties * | ForEach-Object { Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName } | Format-table SamAccountName
Nur wie bekomme ich das jetzt zusammen und dann noch in eine Tabelle ?
-
Nur wie bekomme ich das jetzt zusammen und dann noch in eine Tabelle ?
Daüfür bietet die PowerShell ab Werk kein CMDLet an, und deshalb musst du an der Stelle Hirnschmalz investieren und programmieren, dabei wird dir hier gerne geholfen, aber es geht nicht darum das man dir hier direkt einer fertige Lösung bringt.
Für das Zusammenspiel zwischen Excel und PowerShell findest du über eine Suchmaschine deiner Wahl mit Sicherheit Beipsiele, und dann probiertst Du mit den Erkenntnissen deine Tabelle zu befüllen und dabei helfen wir dir gerne.
Beste Gruesse
brima
-
Hallo,
so ich habe jetzt das Script dass das Excel Modell von oben erzeugt auf die schnelle zusammengestutzt und deinen Bedürfnissen angepasst. Du musst dann nur noch das LastlogOnDate hinzufuegen.
Es liest eine CSV-Datei mit folgendem Inhalt ein
SamAccountName, Name
UsrA, User A
UsrB, User Busw. ein, ermittelt für die die Gruppen und gibt sie os aus wie du es gerne hättest.
param ( [Parameter( Mandatory=$true )] [ValidateScript({Test-Path $_})] [String]$Path ) $Users = Import-Csv $Path $UsersMemberOf = New-Object System.Collections.ArrayList foreach ($User in $Users) { try { $MemberOf = Get-ADUser -Identity $User.SamAccountName -properties MemberOf -ErrorAction Stop | Select-Object -ExpandProperty MemberOf | Sort-Object | ForEach-Object { $_.Split(',')[0].Replace('CN=','') } } catch { Write-Warning "Infos fuer [$($User.Name) / $($User.SamAccountName)] konnten nicht ermittelt werden! Bitte Angaben fuer dieses Konto ueberpruefen!" Continue } $UsersMemberObject = New-Object PSObject Add-Member -InputObject $UsersMemberObject -MemberType 'NoteProperty' -Name Name -Value "$($User.Name)" Add-Member -InputObject $UsersMemberObject -MemberType 'NoteProperty' -Name SamAccountName -Value "$($User.SamAccountName)" Add-Member -InputObject $UsersMemberObject -MemberType 'NoteProperty' -Name MemberOf -Value $MemberOf $Null = $UsersMemberof.Add($UsersMemberObject) } $Excel = New-Object -ComObject Excel.Application $Excel.Visible = $true $WorkBook = $Excel.Workbooks.add() $Sheet = $WorkBook.WorkSheets.Item(1) $Sheet.Cells.Item(1,1) = 'Name' $Sheet.Cells.Item(1,2) = 'SamAccountName' $L = 2 foreach ($User in $UsersMemberOf) { $Sheet.Cells.Item($L,1) = "$($User.Name)" $Sheet.Cells.Item($L,2) = "$($User.SamAccountName)" foreach ($Group in $User.MemberOf) { $Sheet.Cells.Item($L,3) = "$Group" $L++ } } $ReSize = $Sheet.UsedRange $Null = $ReSize.EntireColumn.AutoFit() $Null = $Sheet.Range("C2").Select() $Sheet.Application.ActiveWindow.FreezePanes = $true
Beste Gruesse
Man kann da noch optimieren, aber wie gesagt ich habe das jetzt schnell zusammen gebastelt.
brima
habe noch 4 Zeilen überflüssigen Code entfernt
- Bearbeitet brima Donnerstag, 26. Januar 2017 16:11
- Als Antwort vorgeschlagen SandroReiter Freitag, 27. Januar 2017 08:55
- Als Antwort markiert Yavor TanevMicrosoft contingent staff Donnerstag, 2. Februar 2017 13:57