Zum Inhalt springen
  • 0

Script für Gruppenmitgliedschaften im AD


Maniska

Frage

Hallo zusammen,

ich bin gerade dabei ein total vermülltes AD auszumisteten in dem wohl noch nie etwas gelöscht wurde, und brauch mal wieder Hilfe bei einem Script.

Was ich möchte:

  • Auslesen aller deaktivierter Userkonten im AD
  • Vor-/Nachname (wenn gesetzt), die SID des Objektes und die letzte Anmeldung
  • die Gruppenmitgliedschaften der besagten Konten

Was ich habe:

Get-ADUser -filter  {(Enabled -eq $false)} -properties GivenName,Surname,objectSid,lastLogonTimestamp -SearchBase "DC=contoso,DC=local" -SearchScope Subtree | ForEach {
 „“ ; $_.SamAccountName ; „—“ ; Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName } > C:\Gruppen.txt

Was fehlt:

Aktuell bekomme ich es nur hin, dass er mir eine einzelne Datei mit allen Infos ablegt. Ich hätte aber gerne eine Datei pro User, mit dem SamAccountName als Dateiname. Da klemmt es aber irgendwie, das bekomme ich nicht hin.

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

6 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
Get-ADUser -filter  {(Enabled -eq $false)} -properties GivenName,Surname,objectSid,lastLogonTimestamp -SearchBase "DC=contoso,DC=local" -SearchScope Subtree | ForEach {
 „“ ; $_.SamAccountName ; „—“ ; Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName | out-file "C:\Temp\gruppen_$($_.SamAccountName).txt"}

Ich hab das mal getestet. Dir wird dann eine Textdatei mit dem Namen "Gruppen_SamAccountName" erzeugt und dort stehen die Berechtigungen drin. 

Ich bin auch direkt so frei und nutze das auch bei uns :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
Get-ADUser -filter  {(Enabled -eq $false)} -SearchBase "DC=contoso,DC=local" -SearchScope Subtree | ForEach {
 „“ ; $_.SamAccountName ; „—“ ; Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName | out-file "C:\Temp\gruppen\_$($_.SamAccountName).txt"}

So, mal angepasst und jetzt schriebt er auch kein "Gruppen_" mehr davor, sondern in den Ordner  Gruppen ;)

Allerdings will ich die Attribute "GivenName", "Surname", "objectSid" und "lastLogonTimestamp" auch in der Datei haben...

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
Gast Sledgeheammer

Servus,

Wenn es noch relevant ist...

geht sicherlich auch kürzer aber das ist mein Way2Go xD

 

$UserObject = [ordered] @{
    "GivenName" = ""
    "Surname" = ""
    "objectSid" = ""
    "lastLogonTimestamp" = ""
}
$UserTable = @()
$users = Get-ADUser -Properties * -ldapFilter "(useraccountcontrol=514)" -SearchBase "OU=Users,DC=login,DC=contoso,DC=com" | select GivenName,Surname,objectSid,lastLogonTimestamp,SamAccountName

foreach ($user in $users) {
    $path = "C:\Temp\export\" + $user.SamAccountName + ".csv"
    
    $UserObject."GivenName" = $user.GivenName
    $UserObject."Surname" = $user.Surname
    $UserObject."objectSid" = $user.ObjectSid
    $UserObject."lastLogonTimestamp" = $user.lastLogonTimestamp
    
    $UserRecord = New-Object PSObject -Property $UserObject
    $UserTable = $UserRecord

    $UserTable | Export-Csv -Path $path -NoTypeInformation
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Ahhh Sorry,

Ich hab das mit den Gruppen übersehen. Das macht die Sache bisschen schwieriger. Aber nun hier bitte:

$UserObject = [ordered] @{
    "GivenName" = ""
    "Surname" = ""
    "objectSid" = ""
    "lastLogonTimestamp" = ""
    "memberOf" = ""
}
$UserTable = @()

$users = Get-ADUser -Properties * -ldapFilter "(useraccountcontrol=514)" -SearchBase "OU=user,DC=login,DC=cortoso,DC=de"

foreach ($user in $users) {
    $UserObject.Clear()
    $path = "C:\Temp\export\" + $user.SamAccountName + ".csv"

    $UserObject."GivenName" = $user.GivenName
    $UserObject."Surname" = $user.Surname
    $UserObject."objectSid" = $user.ObjectSid
    $UserObject."lastLogonTimestamp" = $user.lastLogonTimestamp
    Get-ADPrincipalGroupMembership $user.SamAccountName | select name | % {$UserObject."memberOf" += $_.Name + ", "}
    
    $UserRecord = New-Object PSObject -Property $UserObject
    $UserTable = $UserRecord

    $UserTable | Export-Csv -Path $path -NoTypeInformation
}

Kann jemand den Beitrag oben löschen? Ich war da nicht angemeldet 😕

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...