Jump to content

PS: Infos von Groupmembers abfragen


Direkt zur Lösung Gelöst von Kuddel071089,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 zu diesem Kommentar

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

bearbeitet von NilsK
Link zu diesem Kommentar
  • Beste Lösung

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 zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

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

×
×
  • Neu erstellen...