2012-04-03 17 views
1

我有一些遠程機器的臨時目錄已滿。 (Selenium/webdriver網格遙控器)。我有一個PowerShell腳本來標識需要清理的文件和目錄。在使用該命令看起來像這樣(不包括各種機器和目錄的複雜性):清理遠程機器的臨時目錄:如何識別正在使用的文件? (Powershell)

gci $env:TEMP -Recurse| Remove-Item -ErrorAction Continue -Recurse 

的問題是,這需要時間太長時,一些文件正在使用中。在本地,我可以加入句柄的輸出(解析會有點難看),但是在遠程機器上這會更復雜。除此之外,我需要驗證WinRM配置是否正確,句柄是否在路徑中等。

是否有更簡單的方法來識別文件正在使用?理想情況下,可以通過Powershell(包括.NET)進行過濾。我熟悉各種其他腳本語言(ruby,python,perl)。

+1

好問題。我不知道如何去做你所要求的。當我構建一個腳本來清理臨時目錄時,我決定刪除符合特定條件的文件:名稱符合已知的一組模式(* .tmp等),它們已超過1周,並且其他一些事情。 – Cheeso 2012-04-04 21:30:20

回答

2

我發現上市打開的文件的最佳工具是SysInternals tool handle.exe例如爲:

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

片段很聰明(不太合適,我會調整它並重新發布。)。這需要在遠程機器上執行,但可能沒有其他辦法。 – Precipitous 2012-04-06 05:01:03

+2

handle.exe的輸出是文本,所以我們回到解析文本輸出。根據handle.exe的版本,輸出格式可能會有所不同。我需要Ping SysInternals人員提供一個選項以CSV格式輸出。 – 2012-04-06 05:12:00

+0

張貼在SysInternals論壇,以防其他人想要打開 - http://forum.sysinternals.com/topic27806_post134498.html#134498 – 2012-04-06 05:22:38

相關問題