Zum Inhalt springen
  • 0

Script für Gruppenmitgliedschaften im AD


Frage

Geschrieben

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.

 

 

 

6 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
Geschrieben

Wäre es eine Option, die Dateierstellung in die for each zu packen und den Dateinamen dann entsprechend:

 

C:\Gruppen_$SamAccountName.txt

 

  • 0
Geschrieben
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

  • 0
Geschrieben
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...

  • 0
Gast Sledgeheammer
Geschrieben

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
}

 

  • 0
Geschrieben

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 😕

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...