我有许多临时目录已满的远程计算机。 (是Selenium / webdriver网格遥控器)。我有一个powershell脚本,用于标识需要清理的文件和目录。正在使用的命令看起来像这样(不包括各种机器和目录的复杂性):
gci $env:TEMP -Recurse| Remove-Item -ErrorAction Continue -Recurse
问题是当某些文件正在使用时,这需要太长时间。在本地,我可以加入句柄的输出(解析会有点难看),但在远程机器上会更复杂。除此之外,我需要验证WinRM配置是否正确,句柄是否在路径中等等。
是否有更简单的方法来识别文件正在使用?理想情况下,可以通过Powershell(包括.NET)进行过滤。我熟悉各种其他脚本语言(ruby,python,perl)。
答案 0 :(得分:2)
我找到的列出打开文件的最佳工具是SysInternals tool handle.exe,例如:
$openFiles = @(handle $env:TEMP | Foreach {($_ -split ": ")[3]} | Select -Unique)