Benutzer mit den meisten Antworten
Userliste gegen AD matchen und EIgenschaften auslesen

Frage
-
Hallo,
ich habe eine Liste (csv) mit etwa 2400 Usern mit dem LogonName (Pre Windows 2000).
Die Applikation, die diese Liste ausgibt, hat vom AD für diese User irgendwann mal einen sperrvermerk bekommen.
Nun haben wir festgestellt, dass dies passiert, wenn: Ein der account gelockt ist, der User deaktiviert wurde, der User gelöscht wurde usw.)
Gibt es eine Möglichkeit diese Liste automatisiert gegen das AD zu matchen und die User Account Options abzufragen.
Nach dem Motto Nimm den Usernamen, frage die User account Options ab, trage sie in die Liste ein.
Nächster Username.
Sprich, am Ende will ich in der Liste stehen haben:
User xy - Account gelockt
User ab - nicht vorhanden
User cd - User deaktiviert
Danke
Gruß
RomHam
Roman Hambsch IS Operations and VIP Support
Antworten
-
Moin,
das mit dem Array habe ich nur gemacht, weil die Zustände "deaktiviert" und "gesperrt" theoretisch gleichzeitig vorkommen können, und dann gäbe es noch z.B. "abgefaufen", was vielleicht auch mit den anderen kombinierbar wäre. Und das Ding mit dem Join verbindet die einzelnen Werte des Array mit Komma zu einem String. Steht da nur ein Wert, gibt es natürlich auch kein Komma ;-)
Die möglichen Werte im obigen Skript sind daher:
OK
nicht vorhanden
deaktiviert
gesperrt
deaktiviert,gesperrt
Das Ausrufezeichen ist die logische Verneinung, also praktisch -not .
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (in German) -> http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
- Bearbeitet Evgenij Smirnov Montag, 17. Oktober 2016 15:23
- Als Antwort markiert Mihaela ParedesMicrosoft contingent staff, Moderator Freitag, 28. Oktober 2016 12:15
-
Moin,
so auf die Schnelle:
$users = Get-Content "c:\sys\liste.txt" foreach ($user in $users) { $aduser = Get-ADUser -Properties LockedOut, Enabled -Filter {SamAccountName -eq $user} $status = @() if ($aduser) { if (!($aduser.Enabled)) { $status += "deaktiviert"} if ($aduser.LockedOut) { $status += "gesperrt"} } else { $status += "nicht vorhanden" } if ($status.Count -eq 0) { $status = "OK" } Write-Host "$user : $($status -join ",")" }
Kann man natürlich unendlich verfeinern ;-)
Und wenn Du noch mit 2008R2 arbeitest, vorher noch Import-Module ActiveDirectory nicht vergessen ;-)
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (in German) -> http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
- Als Antwort markiert Mihaela ParedesMicrosoft contingent staff, Moderator Freitag, 28. Oktober 2016 12:15
Alle Antworten
-
Moin,
so auf die Schnelle:
$users = Get-Content "c:\sys\liste.txt" foreach ($user in $users) { $aduser = Get-ADUser -Properties LockedOut, Enabled -Filter {SamAccountName -eq $user} $status = @() if ($aduser) { if (!($aduser.Enabled)) { $status += "deaktiviert"} if ($aduser.LockedOut) { $status += "gesperrt"} } else { $status += "nicht vorhanden" } if ($status.Count -eq 0) { $status = "OK" } Write-Host "$user : $($status -join ",")" }
Kann man natürlich unendlich verfeinern ;-)
Und wenn Du noch mit 2008R2 arbeitest, vorher noch Import-Module ActiveDirectory nicht vergessen ;-)
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (in German) -> http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
- Als Antwort markiert Mihaela ParedesMicrosoft contingent staff, Moderator Freitag, 28. Oktober 2016 12:15
-
Hi Evgenij,
ich beschäftige mich auch mit Powershell...daher möchte ich es gerne komplett verstehen
Kannst du mir zu deinem Script kurz die Schritte erklären?
Mir sind die Punkte klar...ich habe sie mal für mich kommentiert
# Hier die alten Daten $users = Get-Content "c:\sys\liste.txt" #Schleife..ist klar foreach ($user in $users) { #Vergleiche den aktuellen User=$Item über den SAMAccountname $aduser = Get-ADUser -Properties LockedOut, Enabled -Filter {SamAccountName -eq $user}
Aber dann.Du deklarierst ein Array um die Daten zu erfassen.Richtig?
$status = @()
Übergibst den Daten,je nach Status, einen " angehängten Wert"
if ($aduser) { if (!($aduser.Enabled)) { $status += "deaktiviert"} if ($aduser.LockedOut) { $status += "gesperrt"} } else { $status += "nicht vorhanden"
Wenn kein Zustand zutrifft Status mit "OK" überschrieben/gefüllt ?
if ($status.Count -eq 0) { $status = "OK" }
Da sich die Write-Host Anzeige am Ende der Schleife befindet gibt sie jeden einzelnen "Zustand" des $Array aus.
Also ....deaktiviert, gesperrt oder OK
Write-Host "$user : $($status -join ",")" }
Hab ich das so richtig interpretiert?
Wenn ja, ist mir nicht klar, was am Ende der Schleife im Array steht (Klar, das könnte ich testen aber ich frag es jetzt einfach mal).
Steht dann nur der letzte "Userzustand" in der Variable $Status oder alle Durchlaufenden?
Get-Alias liefert mir keine Antwort für "!" | get-help ! leider auch nicht .....wie hier
if (!($aduser.Enabled)) { $status += "deaktiviert"}
Was bedeutet es?
Gruß Toni! Wenn Dir meine Antwort hilft, markiere sie bitte als Antwort! Vielen Dank!
- Bearbeitet tonibert Montag, 17. Oktober 2016 15:07
-
Moin,
das mit dem Array habe ich nur gemacht, weil die Zustände "deaktiviert" und "gesperrt" theoretisch gleichzeitig vorkommen können, und dann gäbe es noch z.B. "abgefaufen", was vielleicht auch mit den anderen kombinierbar wäre. Und das Ding mit dem Join verbindet die einzelnen Werte des Array mit Komma zu einem String. Steht da nur ein Wert, gibt es natürlich auch kein Komma ;-)
Die möglichen Werte im obigen Skript sind daher:
OK
nicht vorhanden
deaktiviert
gesperrt
deaktiviert,gesperrt
Das Ausrufezeichen ist die logische Verneinung, also praktisch -not .
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (in German) -> http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
- Bearbeitet Evgenij Smirnov Montag, 17. Oktober 2016 15:23
- Als Antwort markiert Mihaela ParedesMicrosoft contingent staff, Moderator Freitag, 28. Oktober 2016 12:15