Я делал сценарий PowerShell для более быстрого закрытия заблокированных файлов на большом файловом сервере Windows Server 2008 R2 (в этот момент было открыто более 2500 файлов, а пиковый час был примерно 3-4 часа назад), и я бы выбирать между net files
или openfiles
. Итак, я пошел с openfiles
как новее и может дать полный путь к файлу (net files
это тоже можно сделать, но вам нужно запросить каждый идентификатор).
У меня были проблемы: некоторые файлы не закрывались. Я проверил сетевые файлы, и все в порядке ... Итак, я начал приглядываться, и вот (отрывок) то, что я нашел:
C:\> net files
ID Path User name # Locks
-------------------------------------------------------------------------------
3221368833 G:\Users\... SomeUser 3
2550215683 G:\Users\... SomeUser 3
3422797829 G:\Users\... SomeUser 0
805310474 F:\Recursos\... SomeUser 3
335585292 G:\Users\SomeUser\My Documents SomeUser 0
4026636306 G:\Users\SomeUser\Desktop SomeUser 0
2684396568 G:\Users\... SomeUser 0
2952839192 G:\Users\...\EXCEL\SomeFolder2016 SomeUser 0
4160993304 G:\Users\... SomeUser 0
1610613364 F:\Recursos\Suministros SomeUser 0
The command completed successfully.
C:\> openfiles /query /v
Files opened remotely via local share points:
---------------------------------------------
Hostname ID Accessed By Type #Locks Open Mode Open File (Path\executable)
=============== ======== ==================== ========== ========== =============== ============================================================================
MyServer 32213688 SomeUser Windows 3 Write + Read G:\Users\SomeUser\My Documents\[SomePath].XLS
MyServer 25502156 SomeUser Windows 3 Write + Read G:\Users\SomeUser\My Documents\[SomePath].xls
MyServer 34227978 SomeUser Windows 0 Write + Read G:\Users\SomeUser\My Documents\[SomePath].xls
MyServer 80531047 SomeUser Windows 3 Write + Read F:\Recursos\Suministros\[SomePath].xls
MyServer 33558529 SomeUser Windows 0 Read G:\Users\SomeUser\My Documents
MyServer 40266363 SomeUser Windows 0 Read G:\Users\SomeUser\Desktop
MyServer 26843965 SomeUser Windows 0 Write + Read G:\Users\SomeUser\My Documents\[SomePath].XLS
MyServer 29528391 SomeUser Windows 0 Read G:\Users\SomeUser\My Documents\EXCEL\SomeFolder2016
MyServer 41609933 SomeUser Windows 0 Write + Read G:\Users\SomeUser\My Documents\[SomePath].XLS
MyServer 16106133 SomeUser Windows 0 Read F:\Recursos\Suministros
Погодите, идентификаторы разные ... Черт, нет, openfiles
ID усечены !!
Итак, очевидно, что для самого сценария я на данный момент собираюсь net files
, получить идентификаторы, запросить каждый отдельный идентификатор, чтобы получить полный путь, и оттуда я могу повторно использовать остальную часть скрипта.
Но ради моего рассудка: это ошибка? Особенность? Windows Server 2008 R2 не нова, и я не смог найти ни одной ссылки на это, не говоря уже об исправлении!
Итак, три года спустя я нашел ответ и решение или обходной путь: это ошибка вывода по умолчанию openfiles
, который table
. Если указать параметры /FO CSV
или /FO List
, Идентификаторы полные.