gweep76
Goto Top

PowerShell Abfrage AD - Last Login + Gruppen

Hallo,

Vielleicht kann mir jemand weiter helfen. Da ich die PowerShell bisher kaum gebraucht habe, die letzten Jahre als Linux SysAdmin unterwegs war, stehe ich gerade etwas an. Google hat mir bisher auch irgendwie nicht weitergeholfen.

Es geht um folgendes:
Ich habe ein Script erstellt indem ich in AD eine Abfrage einer CN mache in der User eingetragen sind (-GetADGroupMember). Das leite ich weiter zu Get-ADUser wo ich nach allen User suche die sich länger als 180 Tage nicht angemeldet haben und das gebe ich in eine csv Datei aus.
Wenn ich die Gruppe ändere, also die CN, dann habe ich immer die gleichen Ergebnisse was für mich klar bedeutet, er ignoriert mein -GetADGroupMember. Ich verstehe nur leider nicht warum, weil er es durchführt aber keine Fehlermeldung gibt.

Get-ADGroupMember -Identity "CNGRUPPENNAME"| Get-ADUser | Where-Object {$_.name -eq "*" -and $_.Enabled -like $true} |Search-ADAccount -AccountInactive -UsersOnly -TimeSpan 180.00:00:00 |  
Where {$_.Enabled -eq "True"} |  
sort -property LastLogonDate -desc | Export-Csv .\test\CNGRUPPENNAME,csv -NoTypeInformation

Hat jemand einen Tipp für mich wo ich den Fehler habe oder eine Idee wo ich nach weiteren Informationen suchen kann? Auf MS habe ich nicht viel zu -GetADGroupMember gefunden und in den beiden Büchern die ich habe, steht auch nicht sonderlich viel dazu drin. Ich vermute mal einfach es ist ein Denkfehler Meinerseits.

Danke euch schon mal für eure Hilfe!

Content-Key: 666912

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

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: SlainteMhath
SlainteMhath 20.05.2021 um 09:27:33 Uhr
Goto Top
Moin,

dein "Search-ADAccount" macht in der Pipe keinen Sinn, ...

Vorschlag:
Get-ADGroupMember -Identity "CNGRUPPENNAME"| Get-ADUser | Where-Object {$_.Enabled -eq $true}  |  
sort -property LastLogonDate -desc | Export-Csv .\test\CNGRUPPENNAME,csv -NoTypeInformation
-oder-
Search-ADAccount -AccountInactive -UsersOnly -TimeSpan 180.00:00:00 | Where-Object {$_.Enabled -eq $true} | sort -property LastLogonDate -desc | Export-Csv .\test\CNGRUPPENNAME,csv -NoTypeInformation

lg,
Slainte
Mitglied: gweep76
gweep76 20.05.2021 um 09:58:45 Uhr
Goto Top
Hallo Slainte,

Danke für die Antwort und Hilfe.

Dein letzterer Vorschlag ist das was auch in meinem Script rauskommt, die File Größe ist ident. Der obere Vorschlag bringt mir die User der Gruppe, was schon ein Schritt weiter ist.

Ich muss jetzt entweder beim ersten noch rausfinden wie ich die Spalte des LoginTimeStamp bzw. Lastlogin dazu bekomme, dann kann ich auch selbst in Excel per Hand alle anderen rauschlöschen oder ich krieg eben beides kombiniert, sprich die Ausgabe der Gruppe plus die User die sich die letzten 180 Tage nicht angemeldet haben (was natürlich optimal wäre).

Irgendwie wird das ja sicher gehen, aber ich nehme an da wirds jetzt komplizierter. Mit Variablen usw.?

LG,
gweep
Mitglied: Fabezz
Fabezz 20.05.2021 um 10:05:22 Uhr
Goto Top
Hi,
wenn nicht unbedingt Powershell verwendet werden soll gibt's auch ein Tool für.

http://www.cjwdev.co.uk/Software/ADTidy/Info.html

Gruß
Mitglied: 148121
Lösung 148121 20.05.2021 aktualisiert um 10:23:15 Uhr
Goto Top
Moin.
$members = Get-ADGroupMember 'GRUPPE'  
Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate,Enabled | ?{$_.LastLogonDate -lt (get-date).AddDays(-180) -and $_.SamAccountName -in $members.SamAccountName} | select Name,SamAccountName,LastLogonDate | export-csv .\test\GRUPPENNAME.csv -Delimiter ";" -NoType -Encoding UTF8  
oder als weitere Variante stattdessen mit Search-ADAccount
$members = Get-ADGroupMember 'GRUPPE'  
Search-ADAccount -AccountInactive -UsersOnly -TimeSpan 180.00:00:00 | ?{$_.Enabled -and $_.SamAccountName -in $members.SamAccountName} | select Name,SamAccountName,LastLogonDate | export-csv .\test\GRUPPENNAME.csv -Delimiter ";" -NoType -Encoding UTF8  
Viele Wege führen nach Rom face-smile.

Gruß w.
Mitglied: gweep76
gweep76 20.05.2021 um 10:39:58 Uhr
Goto Top
Herzlichen Dank, das funktioniert. Ich kriege entsprechend die User raus.

Eine Frage habe ich noch dazu. Beim Filter wird ja LastLogonDate verwendet, er exportiert dabei aber kein Datum. Woran liegt das? Ich sehe im CSV nur Nachname, Vorname bzw. Vorname.Nachname.
Mitglied: gweep76
gweep76 20.05.2021 um 10:44:05 Uhr
Goto Top
OK ... liegt daran das TimeSpan und LastLogonDate zwei verschiedene Dinge sind. Bei manchen User steht es dann dabei.


Danke für alles!!!
Mitglied: 148121
Lösung 148121 20.05.2021 aktualisiert um 10:46:31 Uhr
Goto Top
Zitat von @gweep76:

OK ... liegt daran das TimeSpan und LastLogonDate zwei verschiedene Dinge sind. Bei manchen User steht es dann dabei.
Nee, liegt daran das LastLogonDate und LastLogonTimeStamp bei mehreren DCs unterschiedlich aktualisiert/synchronisiert werden:
https://www.active-directory-faq.de/2021/01/lastlogon-vs-lastlogontimest ...