Marius1990 Geschrieben 24. Mai 2013 Geschrieben 24. Mai 2013 Hallo Ihr ich sitze gerade kopfzerbrechend an eine Aufgabe. Zugegebenermaßen stehe ich glaube ich auch etwas auf dem Schlauch. Folgende Situation: In unserem Betrieb hat ein AD-Benutzer zwei Servergespeicherte Ordner. Einen Ordner als Folderredirection (Eigene Dateien und Desktop) und einen Ordner um alles andere vom Profil zu speichern. Folglich steht der Benutzer "Marius" sowol in der AD als auch als Ordner auf 2 verschiedenen Servern Beim löschen eines Benutzers müssen also auch die 2 Ordner gelöscht werden. Ich möchte nun mit einem Powershell-Script herausfinden welche Benutzer diese Voraussetzungen nicht mehr erfüllen. (Benutzer in AD vorhanden aber keine Ordner mehr, oder Ordner noch vorhanden aber nicht mehr in der AD angelegt) Mit $auslesen= get-aduser -filter {name -like "*"} $benutzer= $auslesen | ForEach-Object {$_.Samaccountname} lasse ich mir die Benutzernamen der vorhandenen AD-Benutzer anzeigen Mit get-childitem -r -filter $_benutzer -path PFAD prüfe ich ob der Ordner auch tatsächlich auf dem Pfad liegt. (Da kann ich ja die ausgabe Verarbeiten) Allerdings fehlt mir gerade irgendwie der Hirnschmalz das ganze zusammen zu bringen. Anfangs würde das reichen: Wenn Benutzer in AD und als Ordner -> Dann nichts Wenn Benutzer in AD aber nicht als Ordner -> Dann in ne .txt schreiben Für Hilfe wäre ich dankbar, verkrieche mich aber auch nochmal um weiter zu denken :old Zitieren
Tiro Geschrieben 24. Mai 2013 Geschrieben 24. Mai 2013 if ((Test-Path -path Pfad\$_benutzer) -ne $True) { Schreib irgendwas in die Datei xyz } else { tue nichts } Damit kannst Du schon mal prüfen, ob der Ordner nicht existiert. Zitieren
Marius1990 Geschrieben 24. Mai 2013 Autor Geschrieben 24. Mai 2013 Habe meinen Denkfehler gefunden, danke $benutzer ist ja automatisch ein Array das ich durchlaufen kann. Mein Code sieht jetzt so aus (Pfade sind vereinfacht) import-module ActiveDirectory $date = get-date -uformat "%y%m%d l %H%M%S" $logfilename = "logfile_$date.txt" $auslesen= get-aduser -filter {name -like "*"} $benutzer= $auslesen | ForEach-Object {$_.Samaccountname} ##Start Ordnerüberprüfung 1 "Ordner1 fehlt:" | out-file "c:\$logfilename" "___________________" | out-file "c:\$logfilename" -append for($i=3; $i -lt $benutzer.length; $i++){ write-host "Prüfe Benutzer" $benutzer[$i] if (((get-childitem -r -filter $benutzer[$i] -path d:\) -notlike "?*") -and ((get-childitem -r -filter "$benutzer[$i].V2" -path d:\)-notlike "?*")) { $benutzer[$i] | out-file "c:\$logfilename" -append } else { } } "___________________" | out-file "c:\$logfilename" -append "ende" | out-file "c:\$logfilename" -append ##Ende Ordnerüberprüfung 1 Funktioniert auch so weit, außer die Bedingung mit dem .V2 Habe jetzt gesehen dass der Benutzernamen im Array $benutzer mit einem Leerzeichen am Schluss gespeichert wird. Hat einer ne Idee warum? mit -replace bekomm ich das nicht weg. und wenn das bleibt heißt es ja "benutzer .V2" und dass es den nicht gibt is ja logisch. Zitieren
Cometcola Geschrieben 25. Mai 2013 Geschrieben 25. Mai 2013 Moin, guck dir mal die Regulären Ausdrücke an, damit solltest du dein Problem mit dem Leerzeichen hinbekommen. https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.