2012-04-03 3 views
1

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).

+1

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

Antwort

2

Das beste Werkzeug, das ich für die Auflistung geöffnete Dateien gefunden habe, ist die SysInternals tool handle.exe z.B .:

$openFiles = @(handle $env:TEMP | Foreach {($_ -split ": ")[3]} | Select -Unique) 
+0

Das Snippet ist clever (funktioniert nicht ganz, tho. Ich werde es zwicken und neu posten). Dies würde eine Ausführung auf dem entfernten Rechner erfordern, aber es gibt möglicherweise keinen anderen Weg. – Precipitous

+2

Die Ausgabe von handle.exe ist Text, also sind wir wieder bei der Analyse der Textausgabe. Abhängig von der Version von handle.exe kann das Ausgabeformat abweichen. Ich muss die Leute von SysInternals anpingen, um eine Option zur Ausgabe im CSV-Format zur Verfügung zu stellen. –

+0

Posted on SysInternals forum für den Fall, dass jemand anderes möchte in - http://forum.sysinternals.com/topic27806_post134498.html#134498 –

Verwandte Themen