fabgg6
Goto Top

Nachfragen beim Löschen lokaler Kopien von Benutzerverzeichnissen unterbinden

Hallo Admins,

wir haben in unserer Schule eine Domäne mit W2008r2-Server mit 80 Clients unter Windows 7 (32/64) bzw. 8.1u1 (64). In unseren Kabinetten melden sich mit der Zeit sehr viele Nutzer (einige Hundert) an jedem Rechner an. Die Anmeldung dauert zwischen 20 und 60 s, je nachdem, wie viel im Profilverzeichnis gespeichert ist. Mit den Home-Verzeichnissen wird hingegen nur verlinkt. Die Schüler sollen ihre Programme individuell konfigurieren können.

Nun muss ich von Zeit zu Zeit Benutzer löschen, die die Schule abgeschlossen haben oder wenn auf der Festplatte C: der Platz knapp wird. Auf dem DC ist dies natürlich kein Problem. Die lokalen Kopien der Profilverzeichnisse in C:\Users hingegen lösche ich an jedem Rechner gruppenweise. Allerdings kommen (auf den 32-Bit-Systemen) in vielen Fällen Nachfragen, dass eine Freigabe anschließend nicht mehr funktionieren würde und ob ich wirklich löschen wolle. Dadurch muss ich quasi den gesamten Löschvorgang begleitend daneben sitzen und bis zu 100 Mal pro Rechner bestätigen. Ich habe mich sowohl als lokaler als auch als Domänenadmin angemeldet.

Gibt es eine Möglichkeit, das Löschen ohne die Nachfragen zu erledigen und wenn ja, wie könnte ich das machen? Ich habe schon eine ganze Weile im Netz und hier gesucht, aber leider nicht das Passende gefunden.

Vielen Dank fürs Nachdenken, GG.

Content-ID: 275068

Url: https://administrator.de/contentid/275068

Printed on: October 9, 2024 at 15:10 o'clock

emeriks
Solution emeriks Jun 19, 2015, updated at Jul 08, 2015 at 19:12:05 (UTC)
Goto Top
Hi,
z.B. mit Robocopy.
  1. leeren Ordner erstellen, z.B. C:\Leer
  2. Eingabeaufforderung "als Administrator ausführen"
  3. Befehl ausführen: (z.B. um "C:\Benutzer\Meier" zu löschen)
robocopy C:\Leer C:\Benutzer\Meier /MIR /B /R:0 /W:0
rd C:\Benutzer\Meier

E.
fabgg6
fabgg6 Jun 19, 2015 at 19:52:35 (UTC)
Goto Top
Ja, das hatte ich schon vor Jahren eingesetzt, um Ordner mit Dateien mit ungültigen Dateinamen zu löschen. Dieses Verfahren würde aber beim Löschen von 250 Nutzerverzeichnissen noch viiiiiiiel länger dauern. Nicht praktikabel also.

Danke und Gruß, GG.
114757
Solution 114757 Jun 19, 2015, updated at Jun 22, 2015 at 10:42:55 (UTC)
Goto Top
Moin,
Dieses Verfahren würde aber beim Löschen von 250 Nutzerverzeichnissen noch viiiiiiiel länger dauern
hmm... versteh ich nicht, wieso soll das lange dauern? Du klöppelst hoffentlich die Namen der Verzeichnisse nicht manuell da rein, dann würde ich das verstehen face-wink, das es länger dauert, aber normal macht man das ja über eine Schleife. Was willst du also besser haben ?

Powershell wäre ebenfalls eine Option:
$userdirs=@("user1","user2","user3")  
$userdirs | %{remove-item "c:\Users\$_" -recurse -force }  
Gruß jodel32
fabgg6
fabgg6 Jun 20, 2015 updated at 07:41:18 (UTC)
Goto Top
Hallo jodel32,

ich muss ja nicht alle User löschen. Lehrer und Schüler, die noch an der Schule sind, sollen bleiben. Gleichzeitig hat sich nicht jeder User an jedem PC angemeldet. Ich müsste also pro PC eine individuelle Liste erstellen. Die Jahrgänge fangen bei uns aber mit einer bestimmten Zeichenfolge an. Kann ich da auch Jokerzeichen verwenden? Dann müsste ich nur noch einige wenige User pro PC zusätzlich löschen.

Etwa:

remove-item c:\users\06* -recurse
remove-item c:\users\07* -recurse
remove-item c:\users\08* -recurse -exclude c:\users\08-

Kann ich das dann auch in eine Batch-Datei schreiben und diese in der Powershell als Administrator aufrufen?

Gruß, GG.
114757
Solution 114757 Jun 20, 2015, updated at Jun 22, 2015 at 10:43:03 (UTC)
Goto Top
Zitat von @fabgg6:

Hallo jodel32,

ich muss ja nicht alle User löschen. Lehrer und Schüler, die noch an der Schule sind, sollen bleiben.
Schon klar, das macht ja nichts, wenn es ein Verzeichnis nicht gibt wird es einfach übersprungen.
Gleichzeitig hat sich nicht jeder User an jedem PC angemeldet. Ich müsste also pro PC eine individuelle Liste erstellen.
Nein musst du nicht, Grund siehe oben ...
Die Jahrgänge fangen bei uns aber mit einer bestimmten Zeichenfolge an. Kann ich da auch Jokerzeichen verwenden?
Ja
remove-item 'c:\users\06*' -recurse -Force -EA SilentlyContinue  
Kann ich das dann auch in eine Batch-Datei schreiben und diese in der Powershell als Administrator aufrufen?
Ja
Batch als Admin starten und dann
Powershell.exe -Executionpolicy ByPass -File ".\deinScript.ps1"  
fabgg6
fabgg6 Jun 20, 2015 updated at 09:02:26 (UTC)
Goto Top
Hallo jodel32,

nur damit ich das richtig verstehe. Ich starte cmd als Administrator und rufe meine batch-Datei auf (oder die batch-Datei gleich als Administrator). In dieser Datei steht

Powershell.exe -Executionpolicy ByPass -File "C:\meinScript.ps1"

und weiter nichts.

In der meinScript.ps1 steht dann

remove-item 'c:\users\06*' -force -recurse -EA SilentlyContinue
remove-item 'c:\users\07*' -force -recurse -EA SilentlyContinue
remove-item 'c:\users\08*' -force -recurse -exclude 'c:\users\08-*' -EA SilentlyContinue

Damit werden alle Benutzerordner ohne Nachfrage gelöscht, die beispielsweise dem Muster 08a-017 entsprechen, aber nicht 08-35.

Ist das korrekt?

Gruß, GG.

Mit dem Parameter -force werden auch schreibgeschützte und versteckte Dateien gelöscht.
Mit dem Parameter -recurse werden rekursiv auch alle Unterverzeichnisse einbezogen.
Der Parameter -EA steht für ErrorAction. Mit SilentlyContinue wird ohne Ausgabe fortgesetzt.
Mit dem Parameter -exclude werden Objekte ausgenommen, welche die nachfolgenden Kriterien erfüllen.
Analog gibt es auch einen Parameter -include.
114757
Solution 114757 Jun 20, 2015, updated at Jun 22, 2015 at 10:43:06 (UTC)
Goto Top
s.o. Und bitte Anführungszeichen um die Pfade setzen und -Force Und -EA Parameter setzen !
Lesen bildet: https://technet.microsoft.com/de-de/library/hh849765(v=wps.620).aspx
fabgg6
fabgg6 Jun 20, 2015 updated at 08:52:28 (UTC)
Goto Top
Danke jodel32,

die Anführungsstriche und die Parameter habe ich oben nachgetragen. Da dies alles neu für mich ist (ich bin kein ausgebildeter Administrator sondern pflege das Netzwerk der Schule so nebenbei), habe ich natürlich alles nachgelesen. Wenn man von der Existenz bestimmter Möglichkeiten aber nichts weiß, hilft nur Nachfragen.

Ist die Reihenfolge der Parameter egal?


Und die Variante von emerics? Ich rufe als Administrator meine batch C:\eraseuserdir.bat auf, in der steht

md C:\Leer
for /L %%i IN (1 1 499) do robocopy C:\Leer C:\Benutzer\06-%%i /MIR /B /R:0 /W:0
for /L %%i IN (1 1 499) do rd C:\Benutzer\06-%%i

Geht das so? Könnte ich beides am Montag ausprobieren.

Gruß, GG.
114757
Solution 114757 Jun 20, 2015, updated at Jun 22, 2015 at 10:43:10 (UTC)
Goto Top
Zitat von @fabgg6:
Wenn man von der Existenz bestimmter Möglichkeiten aber nichts weiß, hilft nur Nachfragen.
Oder sich schlau lesen face-smile Futter gibt's zu Powershell im Web ja genug. Wie immer bei was neuem ..
Ist die Reihenfolge der Parameter egal?
ja, der Pfad sollte aber an erster Stelle stehen wenn man ihm nicht ein -Path voranstellt.

Könnte ich beides am Montag ausprobieren.
Dann mach das.

Happy Weekend
jodel
bastla
Solution bastla Jun 20, 2015, updated at Jun 22, 2015 at 10:43:13 (UTC)
Goto Top
Hallo fabgg6!

Eigentlich sollten ja Profile inkl der Registry-Einträge gelöscht werden - dafür gäbe es zB delprof2 (kann auch mit Wildcards umgehen und ist für eine Schule kostenlos) ...

Grüße
bastla
fabgg6
fabgg6 Jun 20, 2015 updated at 11:21:20 (UTC)
Goto Top
Hallo jodel,

nochmals danke. Aber: Wenn man nicht weiß, dass es etwas gibt, kann man auch mit Lesen nichts ausrichten, da man dann ja das Falsche liest. face-wink

Ich habe gerade remove-item 'd:\test\*' -exclude 'd:\test\adm*' probiert. Dort hatte ich mehrere Verzeichnisse eingerichtet. Davon begannen 3 mit adm. Der Befehl hat aber ALLE Verzeichnisse gelöscht. Dabei war es übrigens egal, ob man die Pfade ohne Anführungsstriche, mit Apostrophen oder mit Anführungsstrichen geschrieben hat. Zudem kam eine Fehlermeldung, als ich noch ein Verzeichnis d:\test\öffentlich drin hatte und auch dieses nicht gelöscht werden sollte. Das gibt es aber auf jedem Rechner. Es handelt sich dabei sicherlich um ein Alias für public. Profilordner mit Umlauten können aber demnach nicht vom Löschen ausgeschlossen werden.

Aber wenn der Befehl den exclude-Teil ignoriert, ...? Was habe ich falsch gemacht?

Gruß, GG.
fabgg6
fabgg6 Jun 20, 2015 updated at 12:37:44 (UTC)
Goto Top
Hallo bastla,

die entsprechenden Registry-Einträge lösche ich natürlich ebenfalls. Danke für den Tipp mit delprof2. Ich werde es mir gleich anschauen.

Gruß, GG.

Edit1: Wenn es funktioniert, wird es meine Probleme mit einem Schlag beseitigen, auch das der überlangen Dateinamen. Herzlichen Dank.

Edit2: Vermutlich greift es auf die Powershell-Befehle zurück. face-smile
Ich hoffe, es klappt am Montag.
114757
Solution 114757 Jun 20, 2015, updated at Jun 22, 2015 at 10:43:22 (UTC)
Goto Top
Zitat von @fabgg6:
Ich habe gerade remove-item 'd:\test\*' -exclude 'd:\test\adm*' probiert. Dort hatte ich mehrere Verzeichnisse
eingerichtet. Davon begannen 3 mit adm. Der Befehl hat aber ALLE Verzeichnisse gelöscht. Dabei war es übrigens egal, ob
man die Pfade ohne Anführungsstriche, mit Apostrophen oder mit Anführungsstrichen geschrieben hat.
Du darfst bei Exclude nicht den Pfad mit angeben !
remove-item 'c:\users\08*'  -exclude '08-*' -force -recurse -EA SilentlyContinue
Aber für Profile würde ich doch auch zu DelProf2 greifen das umgeht einige Fallstricke mit Owner etc, was ich hier noch nicht erwähnt habe.

Gruß jodel32
fabgg6
fabgg6 Jun 21, 2015 updated at 07:13:13 (UTC)
Goto Top
Danke.

Ja, ich werde delprof2 auf jeden Fall als ertses ausprobieren. Schön finde ich dabei auch, dass Standardprofile unangetastet bleiben. Sonst könnte man versehentlich versteckte Systemprofile löschen. Ich weiß nicht, welche Konsequenzen dies hätte.

Gruß, GG.

Edit: Ich hab's gerade probiert

remove-item d:\test\* -exclude 08-*,all*,default*,admin* -force -recurse

funktioniert. Man sollte aber vielleicht besser mit -include arbeiten, damit man nicht versehentlich Systemprofile löscht. Auf der Seite zu delprof2 werden ja die Profile "All Users", "Default User", "LocalService" und "NetworkService" explizit genannt.
fabgg6
fabgg6 Jun 22, 2015 updated at 19:47:59 (UTC)
Goto Top
Hallo,

es hat recht gut geklappt. DelProf2 löscht nicht nur die Benutzerordner sondern auch gleich die Profil-Einträge aus der Registry. Nur wenige Einträge auf drei Rechnern waren noch verblieben, die ich händisch gelöscht habe, genauso wie ein einzelner Benutzerordner auf einem Rechner. Da habe ich schon ein paar Stunden einsparen können, was mir auch in der Zukunft (praktisch jährlich) zugute kommen sollte.

Da das mit dem delprof2 so gut geklappt hat, kamen die anderen beiden Varianten nur bei meinem heimischen Rechner zum Testeinsatz. Sie hätten wohl auch beide funktioniert.

Danke nochmals, GG.