Batch, Editieren des Ergebisses einer Abfrage
Hallo Zusammen,
Habe eine Aufgabenstellung, bei der ich nicht recht weiß wie ich das lösen soll und ich habe Tante Google schon vielfach bemüht.
Erklärung.
Ich mache per Batch-Befehl eine Abfrage an den WSUS-Server, die mir ausgibt, welche Updatepackages nicht mehr genutzt werden.
Diese wird in einer Textdatei ausgegeben:
Das Ergebnis sieht so in etwa aus:
Von keinem der Updates im WSUS-Server wird auf die folgenden
Ordner verwiesen.
D:\WSUS\UpdateServicesPackages\10b50f93-4f4b-4926-bf3d-e8b329d1c4cb
D:\WSUS\UpdateServicesPackages\73f43f16-e77a-4adb-8803-e164c196c44b
D:\WSUS\UpdateServicesPackages\fe26213d-1606-4675-a503-0bc307ff84cb
Per find Befehl lasse ich mit alle Zeilen die den gültigen WSUS-Pfad enthalten ausgeben:
Das Ergebnis sieht dann so aus:
D:\WSUS\UpdateServicesPackages\10b50f93-4f4b-4926-bf3d-e8b329d1c4cb
D:\WSUS\UpdateServicesPackages\73f43f16-e77a-4adb-8803-e164c196c44b
D:\WSUS\UpdateServicesPackages\fe26213d-1606-4675-a503-0bc307ff84cb
Nun bräuchte ich ein Skript, welches mir dass mit jeweils vor die Zeile einen Befehl setzt.
Soll Ergebnis sollte dann so aussehen, damit ich per Task dann die Ordner löschen kann:
rmdir /s /q D:\WSUS\UpdateServicesPackages\10b50f93-4f4b-4926-bf3d-e8b329d1c4cb
rmdir /s /q D:\WSUS\UpdateServicesPackages\73f43f16-e77a-4adb-8803-e164c196c44b
rmdir /s /q D:\WSUS\UpdateServicesPackages\fe26213d-1606-4675-a503-0bc307ff84cb
Augenscheinlich nicht schwierig, aber ich weiß nicht, wie ich das so recht anstellen soll.
Viele werden fragen, warum macht er das überhaupt?
Na ja eine Patchmanagementlösung nutzt den WSUS zur Verteilung von Patches (Sehr effizient übrigens)
In der Anwendung kann man die Patches ablehnen wie auch im WSUS, nur bereinigt der WSUS diese nicht mehr benötigten Dateien nicht über die WSUS-Bereinigung.
Soviel zur Erklärung.
Habe eine Aufgabenstellung, bei der ich nicht recht weiß wie ich das lösen soll und ich habe Tante Google schon vielfach bemüht.
Erklärung.
Ich mache per Batch-Befehl eine Abfrage an den WSUS-Server, die mir ausgibt, welche Updatepackages nicht mehr genutzt werden.
Diese wird in einer Textdatei ausgegeben:
Das Ergebnis sieht so in etwa aus:
Von keinem der Updates im WSUS-Server wird auf die folgenden
Ordner verwiesen.
D:\WSUS\UpdateServicesPackages\10b50f93-4f4b-4926-bf3d-e8b329d1c4cb
D:\WSUS\UpdateServicesPackages\73f43f16-e77a-4adb-8803-e164c196c44b
D:\WSUS\UpdateServicesPackages\fe26213d-1606-4675-a503-0bc307ff84cb
Per find Befehl lasse ich mit alle Zeilen die den gültigen WSUS-Pfad enthalten ausgeben:
Das Ergebnis sieht dann so aus:
D:\WSUS\UpdateServicesPackages\10b50f93-4f4b-4926-bf3d-e8b329d1c4cb
D:\WSUS\UpdateServicesPackages\73f43f16-e77a-4adb-8803-e164c196c44b
D:\WSUS\UpdateServicesPackages\fe26213d-1606-4675-a503-0bc307ff84cb
Nun bräuchte ich ein Skript, welches mir dass mit jeweils vor die Zeile einen Befehl setzt.
Soll Ergebnis sollte dann so aussehen, damit ich per Task dann die Ordner löschen kann:
rmdir /s /q D:\WSUS\UpdateServicesPackages\10b50f93-4f4b-4926-bf3d-e8b329d1c4cb
rmdir /s /q D:\WSUS\UpdateServicesPackages\73f43f16-e77a-4adb-8803-e164c196c44b
rmdir /s /q D:\WSUS\UpdateServicesPackages\fe26213d-1606-4675-a503-0bc307ff84cb
Augenscheinlich nicht schwierig, aber ich weiß nicht, wie ich das so recht anstellen soll.
Viele werden fragen, warum macht er das überhaupt?
Na ja eine Patchmanagementlösung nutzt den WSUS zur Verteilung von Patches (Sehr effizient übrigens)
In der Anwendung kann man die Patches ablehnen wie auch im WSUS, nur bereinigt der WSUS diese nicht mehr benötigten Dateien nicht über die WSUS-Bereinigung.
Soviel zur Erklärung.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 278268
Url: https://administrator.de/contentid/278268
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
10 Kommentare
Neuester Kommentar
Wenn ich das richtig verstehe und du nur eine Bereinigung automatisiert durchführen möchtest, schau dir mal das an:
http://bent-blog.de/automatische-wsus-serverbereinigung-mit-tasks-und-s ...
Funktioniert bei mir sehr gut.
http://bent-blog.de/automatische-wsus-serverbereinigung-mit-tasks-und-s ...
Funktioniert bei mir sehr gut.
Moin,
Natürlich kann man auch die Ausgabe deines Findstr Befehls direkt einbauen ohne eine extra Texdatei zu nutzen, wenn du sie postest bauen wir sie dir oben ein.
Gruß grexit
@echo off
for /f "usebackq tokens=* delims=" %%a in ("C:\pfade.txt") DO @(
rmdir /s /q "%%a"
)
Gruß grexit
OK, here we go:
@echo off
for /f "tokens=* delims=" %%a in ('"C:\Program Files\Update Services\Tools\wsusutil.exe" listunreferencedpackagefolders ^| findstr /i /c:"D:\WSUS\UpdateServicesPackages"') DO @(
echo %date% - Loesche Verzeichnis "%%a">>"c:\cleanup.log"
rmdir /s /q "%%a"
)
Sorry den Parameter hatte ich doch glatt übersehen, ist gefixt...
Kann man das Ganze auch noch in eine Log schreiben mit > cleanup.log
s. oben. (Pfad zur Logdatei wie gewünscht noch anpassen)
Geht hier problemlos, und das ganze gehört in eine Batchdatei, direkt in der Shell geht der Befehl so nicht ohne Anpassung.
Ist ein simpler Aufruf bei einem Pfad mit Leerzeichen, gab hier damit noch nie Probleme.
Vermutlich hast du ihn einfach fehlerhaft kopiert ...
Ist ein simpler Aufruf bei einem Pfad mit Leerzeichen, gab hier damit noch nie Probleme.
Vermutlich hast du ihn einfach fehlerhaft kopiert ...