c0smic 12 Geschrieben 12. September 2019 Melden Teilen Geschrieben 12. September 2019 Hallo zusammen, ich versuche mich gerade, in Powershell einzulesen, bin also noch ziemlich frisch im Thema. Gegeben ist eine CSV-Datei mit Benutzernamen. Bei diesen Benutzern soll geprüft werden, ob das Flag "PasswordNeverExpires" auf True oder False steht. Folgendes Script funktioniert zwar, ignoriert aber vollkommen meine CSV und führt die Abfrage über die komplette AD aus und gibt mir auch nicht den Wert True/False zurück: Import-Csv -Path "c:\temp\usernames.csv" Search-ADAccount -PasswordNeverExpires | FT samaccountName,ObjectClass -A Was mache ich hier falsch? Bzw. gibt es eine bessere Methode? Als Endergebnis hätte ich gerne eine CSV mit den Usern und einer weiteren Spalte PasswordNeverExpires True oder False. Vielen Dank schon mal für eure Hilfe! Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 12. September 2019 Melden Teilen Geschrieben 12. September 2019 (bearbeitet) Ohne ObjectClass -A funktioniert bei mir auf der PS die Ausgabe korrekt. Allerdings importiere ich kein CSV. bearbeitet 12. September 2019 von Sunny61 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 12. September 2019 Melden Teilen Geschrieben 12. September 2019 Lerne die Powershell Grundlagen. Woher soll Search-ad account wissen, welche User du abfragen willst? Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 12. September 2019 Melden Teilen Geschrieben 12. September 2019 Moin, von der Logik her ist es ziemlich einfach, warum es nicht funktioniert: Dein Skript macht was völlig anderes, als du willst. Zeile 1 importiert eine CSV-Datei, macht aber nichts damit. Zeile 2 durchsucht das AD nach Konten, bei denen "PasswordNeverExpires" zutrifft. Das Ergebnis wird dann in einer Tabelle ausgegeben, die die Spalten SAM-Name und Objektklasse enthält. Also bekommst du alle AD-User mit festem Kennwort zurück mit der Angabe, dass es sich um User handelt. Mit der CSV-Datei hat das nichts zu tun. Wenn du in der PowerShell noch nicht firm bist, dann arbeite lieber erst mal mit einfacheren Beispielen. Gruß, Nils Zitieren Link zu diesem Kommentar
testperson 1.707 Geschrieben 12. September 2019 Melden Teilen Geschrieben 12. September 2019 Hi, die CSV "ins Leere" importieren dürfte auch nicht hilfreich sein. ;) Des Weiteren wirst du deine Aufgabe vermutlich auch nicht mit "Search-ADAccount" lösen können bzw. dürfte es einfachere Wege geben. Daher: Import-CSV (in eine Variable): https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/import-csv?view=powershell-6 ForEach (zum zeilenweise Durcharbeiten der CSV): https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_foreach?view=powershell-6 Get-ADUser (um "PasswordNeverExpires" je User auszulesen): https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-aduser?view=win10-ps Gruß Jan Zitieren Link zu diesem Kommentar
manuel-r 2 Geschrieben 12. September 2019 Melden Teilen Geschrieben 12. September 2019 vor 1 Stunde schrieb c0smic: ich versuche mich gerade, in Powershell einzulesen, bin also noch ziemlich frisch im Thema. Import-Csv -Path "c:\temp\usernames.csv" Search-ADAccount -PasswordNeverExpires | FT samaccountName,ObjectClass -A Dein Problem ist nicht powershell-spezifisch. Egal in welcher Sprache gilt: Wenn du A mit B vergleichen willst solltest du das auch irgendwie programmieren. Manuel Zitieren Link zu diesem Kommentar
c0smic 12 Geschrieben 12. September 2019 Autor Melden Teilen Geschrieben 12. September 2019 Äh... ja. Danke für Eure Hilfe! Die Techdocs hatte ich schon gefunden, schlau draus geworden bin ich nicht, sonst hätte ich nicht hier gefragt. Immerhin weiß ich jetzt, wieso es nicht geht. Zitieren Link zu diesem Kommentar
c0smic 12 Geschrieben 12. September 2019 Autor Melden Teilen Geschrieben 12. September 2019 So... bin ne ganze Ecke weiter, aber leider hänge ich jetzt wieder fest. Mein Script sieht nun folgendermaßen aus: Import-Csv -Path "c:\temp\ps\usernames.csv" | ForEach-Object { Get-ADUser -filter "samAccountName -like '*$($_.user)*'" -Properties PasswordNeverExpires} | FL samaccountname, PasswordNeverExpires Die CSV wird gelesen, Output sieht auch gut aus, allerdings macht die Schleife nach dem ersten Eintrag nicht weiter. Eine Fehlermeldung gibt es allerdings auch nicht... Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 12. September 2019 Melden Teilen Geschrieben 12. September 2019 Moin, der übliche Weg ist, dass du eine CSV-Datei in eine Objektvariable importierst. Diese kannst du dann mit ForEach auswerten. https://ss64.com/ps/import-csv.html Dein Kommando dürfte die ganze CSV als ein Objekt behandeln, wodurch eben nur ein Durchlauf der Schleife stattfindet, nicht einer pro Zeile. Gruß, Nils 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.