Назад | Перейти на главную страницу

net файлы против идентификаторов openfiles

Я делал сценарий 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, Идентификаторы полные.