Kuddel071089 9 Geschrieben 24. August 2016 Melden Teilen Geschrieben 24. August 2016 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? Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 24. August 2016 Melden Teilen Geschrieben 24. August 2016 (bearbeitet) 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 24. August 2016 von NilsK Zitieren Link zu diesem Kommentar
Beste Lösung Kuddel071089 9 Geschrieben 24. August 2016 Autor Beste Lösung Melden Teilen Geschrieben 24. August 2016 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.