Jump to content

PS: Infos von Groupmembers abfragen


Go to solution Solved by Kuddel071089,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Hallo zusammen,

 

ich bin gerade dabei eine Auswertung per Powershell zu erstellen.

 

Dazu möchte ich die Mitglieder diverser Gruppen auflisten und dann dazu noch ein paar Infos der einzelnen User, wie z.B. Enabled oder Ablaufdatum.

 

Meine erste Abfrage ist daher:

 

$vmadmins = Get-ADGroupMember VMware-Administratoren | Sort | Select SamAccountName

 

Jetzt möchte ich mir noch ein Paar Infos zu den Usern holen:

 

foreach($vmadmin in $vmadmins){

Get-ADUser $vmadmin.SamAccountName -Properties * | Select Enabled, @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} | Sort
}

 

Ich glaube das Problem ist beim Speichern in der Variable, da die User einfach in dieser Form abgespeichert werden:

 

Admin-XYZ Admin-ZXY Admin-123 Admin-321

 

Kann mir jemand bei meinem Problem helfen?

Link to comment

Moin,

 

in der PowerShell arbeitest du mit Objekten. Die meisten Cmdlets erwarten auch Objekte, daher solltest du ihnen keine einzelnen Attribute übergeben. In der ersten Zeile also das "Select sAMAccountName" weglassen.

Außerdem solltest du in deiner Schleife die Objekte noch filtern. Gruppen können nicht nur User als Mitglieder haben, sondern auch andere Gruppen. Da dein Kommando dann nur User auflösen kann, darfst du auch nur User übergeben.

Und das zweite Sortieren ist unnütz, es gibt an der Stelle nur ein Objekt, also nichts zu sortieren.

 

Dieser Code sollte erreichen, was du willst:

$vmadmins = Get-ADGroupMember 'VMware-Administratoren' | Sort SamAccountName
foreach($vmadmin in $vmadmins){
  if ($vmadmin.objectClass -eq 'user') {
    Get-ADUser $vmadmin -Properties * | Select sAMAccountName, Enabled, @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
  }
}

Gruß, Nils

Edited by NilsK
Link to comment
  • Solution

Moin,

 

in der PowerShell arbeitest du mit Objekten. Die meisten Cmdlets erwarten auch Objekte, daher solltest du ihnen keine einzelnen Attribute übergeben. In der ersten Zeile also das "Select sAMAccountName" weglassen.

Außerdem solltest du in deiner Schleife die Objekte noch filtern. Gruppen können nicht nur User als Mitglieder haben, sondern auch andere Gruppen. Da dein Kommando dann nur User auflösen kann, darfst du auch nur User übergeben.

Und das zweite Sortieren ist unnütz, es gibt an der Stelle nur ein Objekt, also nichts zu sortieren.

 

Dieser Code sollte erreichen, was du willst:

$vmadmins = Get-ADGroupMember 'VMware-Administratoren' | Sort SamAccountName
foreach($vmadmin in $vmadmins){
  if ($vmadmin.objectClass -eq 'user') {
    Get-ADUser $vmadmin -Properties * | Select sAMAccountName, Enabled, @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
  }
}

Gruß, Nils

 

Moin Nils,

 

ich habe es jetzt per CSV-Export hinbekommen. Es werden nur User (danke für deinen Hinweis) in eine CSV geschrieben. welche am Ende wieder gelöscht wird

Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...