Ich habe eine Reihe von Remote-Maschinen, deren temporäre Verzeichnisse voll werden. (Die Selenium/webdriver Gitterfernbedienungen sind). Ich habe ein Powershell-Skript, das die zu bereinigenden Dateien und Verzeichnisse identifiziert. Der Befehl im Einsatz sieht wie folgt aus etwas (ohne Komplexität der verschiedenen Maschinen und Verzeichnisse):Bereinigen Sie das temporäre Verzeichnis eines Remote-Rechners: Wie identifiziere ich Dateien, die gerade verwendet werden? (Powershell)
gci $env:TEMP -Recurse| Remove-Item -ErrorAction Continue -Recurse
Das Problem ist, dass dies viel zu lange dauert, wenn einige Dateien in Gebrauch sind. Lokal könnte ich mich der Ausgabe von Handles anschließen (das Parsing wäre etwas hässlich), aber das wäre auf einem entfernten Rechner komplizierter. Unter anderem würde ich überprüfen müssen, ob WinRM korrekt konfiguriert wurde, Handles im Pfad usw.
Gibt es einen einfacheren Weg zu identifizieren, dass eine Datei verwendet wird? Idealerweise einer, der über Powershell (einschließlich .NET) gefiltert werden kann. Ich kenne eine Reihe anderer Skriptsprachen (Ruby, Python, Perl).
Gute Frage. Ich weiß nicht, was ich tun soll. Als ich ein Skript zur Bereinigung des temporären Verzeichnisses erstellt habe, habe ich beschlossen, Dateien zu entfernen, die bestimmten Kriterien entsprechen: Der Name entspricht einer bekannten Menge von Mustern (* .tmp usw.), sie sind mehr als eine Woche alt und ein paar andere Dinge. – Cheeso