Как посмотреть открытые файлы на сервере 2008
На общедоступном сетевом ресурсе могут возникать ошибки доступа к файлам. Причиной этому является некорректно завершенная сессия пользователя, ошибки в работе ПО или просто кто-то открыл файл и не закрывает его. В такой ситуации файл оказывается заблокированным и не доступен для работы другим пользователям.
Решить проблему доступа к файлу можно путем закрытия сеансов использующих этот файл. В этой статье я расскажу как определить кто открыл файл в сетевой папке и как закрыть это подключение.
Рассмотрим два способа:
- Через оснастку "Управление компьютером" консоли управления Windows;
- При помощи утилиты командной строки - Openfiles.
1 способ. Получаем список открытых файлов с помощью оснастки "Управление компьютером".
Для получения списка открытых файлов на файловом сервере воспользуемся оснасткой консоли "Управление компьютером". Для запуска оснастки нажимаем сочетание клавиш "Win + R" и набираем название оснастки "compmgmt.msc".
В иерархии оснастки переходим /Управление компьютером/Служебные программы/Общие папки/Открытые файлы.
В правой части оснастки появится список открытых файлов. Здесь можно увидеть имя пользователя открывшего файл, количество блокировок и режим доступа к файлу.
Закрываем файл. Чтобы закрыть сетевой файл открытый другим пользователем находим его в списке и в контекстном меню выбираем пункт "Закрыть открытый файл".
2 способ. Просмотр открытых файлов через командную строку утилитой Openfiles.
Утилита Openfiles дает нам более широкие возможности по поиску и закрытию заблокированных файлов.
C помощью openfiles можно просмотреть список открытых файлов на сервере удаленно. Для этого открываем командную и запускаем утилиту с параметрами.
где
/Query - показывает все открытые файлы,
/s - определяет имя удаленного компьютера.
В случае, когда необходимо указать логин и пароль пользователя для подключения к удаленному компьютеру, задаются параметры: /u - логин пользователя, /p - пароль пользователя.
По-умолчанию список файлов показан в формате таблицы, но есть параметры позволяющие изменить формат вывода:
/fo csv - выводит список в формате csv с разделителем запятая;
/fo list - показывает открытые файлы в формате списка;
/fo table - формат таблицы.
Определяем кто открыл сетевой файл.
Чтобы найти пользователя, который открыл и заблокировал нужный нам файл запускаем Openfiles с командой find.
в команде find указан параметр /i, чтобы поиск был регистронезависимым.
После того когда мы узнали имя пользо
Закрываем заблокированный сетевой файл.
Закрыть открытый файл можно по id сессии таким способом:
Закрыть все сетевые подключения к файлам и папкам, которые открыл пользователь BadUser:
Закрыть все файлы и директории открытые в режиме чтение/запись:
Закрыть все подключения к директории с именем "c:\myshare":
Чтобы сбросить все сессии на удаленном сервере FileServer, которые открыл пользователь domain\baduser, независимо от id сессии:
Администраторы файловых серверов Windows часто сталкиваются с необходимостью принудительного закрытия файлов, открытых пользователями. Такая задача возникает при одновременной работы с одним файлом нескольких пользователей. Часто при некорректной работе ПО или неправильном завершении сессии пользователем, файлы в сетевой папке оказываются открытыми и заблокированными, и остальные пользователи не могут вносить в него изменения. В этой статье мы покажем, как получить список открытых файлов на файловом сервере, узнать какие пользователи их используют, и способы сброса этих файловых сессий.
Вывести список открытых файлов на файловом сервере Windows
Список открытых пользователями файлов на файловом сервере Windows можно получить с помощью стандартной графической консоли Computer Management (Управление компьютером — compmgmt.msc ).
Запустите на файловом сервере консоль Computer Management (или подключитесь к нему удаленно консолью со своего компьютера) и перейдите в секцию System Tools -> Shared Folders -> Open files (Служебные программы -> Общие папки -> Открыты файлы). В правой части окна отображается список файлов сервера, открытых удаленно . Список содержит локальный путь к файлу, имя учетной записи пользователя, количество блокировок и режим, в котором открыт файл (Read или Write+Read).
Этот же список открытых файлов можно получит с помощью встроенной консольной утилиты Openfiles . Например, с помощью следующей команды можно получить id сессии, имя пользователя и полный локальный путь к открытому файлу:
Openfiles /Query /fo csv |more
При удаленном доступе пользователя к папке или файлу в сетевой папке (SMB) на сервере, для пользователя создается новая сессия, определяющая данное подключение. Управление подключениями пользователей осуществляется именно через эти идентификаторы сессий.
Эту же команду можно выполнить удаленно, например, нужен список открытых файлов на файловом сервере mskfs01:
Openfiles /Query /s mskfs01 /fo csv
У команды Openfiles есть еще одна интересная возможность просмотра списка локально открытых файлов. Для ее использования нужно включить опцию Maintain Objects List (Построение списка объектов) командой openfiles /local on и перезагрузить сервер. После этого в список начнут попадать файлы, открытые локальными процессами (этот режим желательно использовать только для отладки, т.к. может негативно сказаться на производительности сервера).
Как определить какой пользователь открыл файл
Чтобы определить пользователя, который открыл (заблокировал) файл cons.adm на сервере, выполните команду:
Openfiles /Query /s mskfs01 /fo csv | find /i "cons.adm"
Ключ /i используется, чтобы выполнялся регистронезависимый поиск
Естественно, можно указать только часть имени файла. К примеру, нам нужно узнать кто открыл xlsx файл, в имени которого есть строка farm, воспользуемся таким конвейером:
Openfiles /Query /s mskfs01 /fo csv | find /i "farm"| find /i "xlsx"
Можно, конечно найти файл и в графической консоли Computer Management, но это менее удобно (консоль не предусматривает возможность поиска).
Как закрыть открытый файл
Чтобы закрыть открытый файл, нужно найти его в списке файлов секции Open File и в контекстном меню выбрать пункт « Close Open File ».
Если на файловом сервере сотни открытых файлов, найти их в консоли будет непросто. Удобнее воспользоваться утилитой Openfiles . Как мы уже говорили, она возвращает ID сессии открытого файла. Именно по этому ID сессии, файл можно принудительно закрыть, сбросив подключение. Находим ID нужного файла:
Openfiles /Query /s mskfs01 /fo csv | find /i "farm"| find /i ".xlsx"
Отключаем от него пользователя по полученному идентфикатору:
Openfiles /Disconnect /s mskfs01 /ID 67109098
Как удаленно закрыть открытые файлы с помощью PowerShell
В Windows Server 2012 / Windows 8 в PowerShell появились командлеты для работы с шарами и файлами на SMB сервере. Данные командлеты можно использовать для удаленного сброса подключений к открытому файлу.
Список открытых файлов можно получить с помощью командлетов Get- SMBOpenFile , а закрыть файл (сбросить подключение) с помощью Close-SmbOpenFile .
Итак, подключаемся к удаленному серверу:
$sessn = New-CIMSession –Computername mskfs01
Находим и закрываем открытый файл pubs.docx одной командой:
Get-SMBOpenFile -CIMSession $sessn | where | Close-SMBOpenFile -CIMSession $sessn
Подтверждаем закрытие файла, нажав Y.
Чтобы убрать подтверждение принудительного закрытия файла на сервере, используйте ключ -Force
Эти же команды можно использовать, к примеру, чтобы закрыть все файлы, открытые некоторым пользователем (пользователь ушел домой и не освободил файлы). К примеру, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните
Get-SMBOpenFile -CIMSession $sessn | where |Close-SMBOpenFile -CIMSession $sessn
Команда OPENFILES используется для получения списка открытых файлов и папок в среде операционных систем Windows XP и старше. Возможно получение списка файлов, открытых удаленно с использованием сетевого доступа, или полного списка, включая файлы и папки, открытые локальными процессами. Кроме того, команда позволяет выполнить отключение сеансов удаленного открытия файлов или каталогов. Для работы с данной командой требуются права администратора ( "Запуск от имени администратора" в среде Windows 7 и старше)
Формат командной строки:
OPENFILES /параметр [аргументы]
/Disconnect - Отключение одного и более открытых файлов.
/Query - Отображение открытых файлов, локально и с сетевого ресурса.
/Local - Включает/отключает отображение локально открытых файлов.
Для получения справки по использованию команды с конкретным параметром используется следующий формат командной строки:
OPENFILES /Disconnect /? - отобразить подсказку по использованию команды OPENFILES с параметром /Disconnect
OPENFILES /Query /? | more - выдать подсказку по использованию параметра /Query в постраничном режиме вывода на экран
OPENFILES /Local /? > D:\oflocal.txt - выдать подсказку по использованию параметра /Local в текстовый файл D:\oflocal.txt
Примеры получения списка открытых файлов
Для управления режимом построения списка открытых файлов используется глобальный переключатель списка объектов (maintain objects list) текущее значение которого можно проверить командой :
Если флаг "построение списка объектов" включен, то команда OPENFILES отображает список файлов и папок, открытых как локально, так и по сети. Для отключения режима отображения списка файлов, открытых локальными процессами, используется команда:
openfiles /local off
Для вступления в силу нового режима построения списка открытых файлов, может потребоваться перезагрузка системы.
Список открытых файлов отображается с использованием команды OPENFILES /Query .
Формат командной строки:
OPENFILES /Query [/S система [/U пользователь [/P [пароль]]]] [/FO формат] [/NH] /V]
/S система - Подключаемый удаленный компьютер.
/U [ \]пользователь - Пользовательский контекст, в котором должна выполняться эта команда.
/P [пароль] - Пароль для этого пользовательского контекста.
/FO формат - Формат, в котором следует отобразить выходной файл. Допустимые форматы: "TABLE","LIST","CSV".
/NH - Указывает, что строка заголовков столбцов не должна отображаться. Допустимо только для форматов "TABLE", "CSV".
/V - Отображать расширенную информации в результатах.
/? - Вывод справки по использованию.
OPENFILES /Query /? - отобразить справку по использованию команды.
OPENFILES /Query - отобразить список открытых файлов и папок с параметрами по умолчанию.
OPENFILES /Query /FO CSV /NH - отобразить список открытых файлов в формате CSV - полей, разделяемых запятой, без отображения заголовков столбцов ( /NH ).
OPENFILES /Query /FO TABLE /V - отобразить список открытых файлов в виде таблицы (TABLE) с включением дополнительной информации (/V) об имени пользователя и идентификаторе процесса (PID). По умолчанию, используется список в формате таблицы, поэтому параметр /FO TABLE можно не указывать.
OPENFILES /Query /S /U /P - отобразить список открытых файлов на удаленном компьютере, с использованием имени пользователя и пароля, задаваемых в командной строке.
OPENFILES /S SERVER /U mydonain\user1 /P mypass - отобразить список открытых файлов на удаленном компьютере SERVER . Для выполнения команды на удаленном компьютере используется имя пользователя user1 в домене mydomain и пароль mypass . Если имя пользователя и пароль не заданы - используется учетная запись, в контексте которой выполняется команда OPENFILES
OPENFILES /S 192.168.0.1 /U mydonain\user1 /P mypass - то же, что и в предыдущем примере, но вместо имени удаленного компьютера, используется его IP-адрес.
OPENFILES /Query > C:\OpenedFiles.txt - записать результаты выполнения команды в текстовый файл C:\OpenedFiles.txt
Пример списка открытых файлов, полученного по команде OPENFILES /Query :
Открыть файл (Путь\исполнимый файл)
==================================
C:\Windows\System32
C:\Windows\System32\ru-RU\dwm.exe.mui
C:\Windows\System32
C:\Windows\System32
C:\Windows\Fonts\StaticCache.dat
ID - уникальный идентификатор открытого файла или папки.
Имя процесса - имя процесса, открывшего файл или папку.
Открыть файл (Путь\исполнимый файл) - очевидно, не самый удачный перевод на русский язык. В данной колонке отображается имя и путь открытого файла или папки.
При использовании параметра /V в таблицу добавляются колонки:
Пользователь - имя пользователя, в контексте учетной записи которого открыт файл.
PID - уникальный идентификатор процесса, который открыл файл. В системе может быть несколько процессов имеющих оно и то же имя исполняемого файла (svchost.exe, cmd.exe и т.п.) однако каждый из них имеет уникальный PID, по значению которого можно выделить конкретный процесс. Пример отображаемой таблицы, полученной при выполнении команды с параметром /V :
ID ==== 8 48 8 8 668 | Пользователь ============ user1 user1 user1 user1 user1 | PID ======== 3284 3284 3292 3348 3348 | Имя процесса ============= dwm.exe dwm.exe taskhost.exe explorer.exe explorer.exe | Открыть файл (Путь\исполнимый файл) ========================== C:\Windows\System32 C:\Windows\System32\ru-RU\dwm.exe.mui C:\Windows\System32 C:\Windows\System32 C:\Windows\Fonts\StaticCache.dat |
Пример таблицы открытых файлов, при выключенном переключателе построения списка локальных объектов ( параметр /Local OFF ) :
Информация: Флаг "построение списка объектов" должен быть включенным, чтобы видеть открытые локально файлы. Подробнее смотрите Openfiles /?.
ID ====== 0 2 4 | Пользователь ============ USER1 USER2 USER2 | Тип ======= Windows Windows Windows | Открытый файл (Путь\файл) ======================== C:\ERDC.7_64 C:\ERDC.7_64 C:\ERDC.7_64\bootmgr |
Принудительное отключение сеансов удаленного открытия файлов
Для отключения файлов и папок, которые были удаленно открыты на общем ресурсе, используется параметр /Disconnect . Необходимо учитывать, что команда OPENFILES не предназначена для полного запрета сетевого доступа к файлам и папкам, а всего лишь выполняет сброс отдельной удаленной сессии.
Формат командной строки:
OPENFILES /Disconnect [/S система [/U пользователь [/P [пароль]]]] <[/ID идентификатор] /A пользователь] [/O режим]>[/OP открытый файл]
/S система - Подключаемый удаленный компьютер.
/U [домен\]пользователь - Пользовательский контекст, в котором должна выполняться эта команда.
/P [пароль] - Пароль для этого пользовательского контекста.
/ID идентификатор] - Отключение всех открытых файлов по идентификатору. Допускается использование подстановочного символа "*".
/A пользователь - Отключение всех открытых файлов указанным в параметре пользователем. Допускается использование "*".
/O режим - Отключение всех открытых файлов, с указанным в параметре режимом. Допустимые значения параметра: Read,Write или Read/Write. Допускается использование подстановочного знака"*".
/OP открытый файл - Отключение всех файлов, открытых указанным в параметре файлом. Допускается использование подстановочного символа "*".
/? - Вывод справки по использованию.
OPENFILES /Disconnect /ID 1 - сбросить подключение к файлу или папке с идентификатором 1
OPENFILES /Disconnect /A user1 - сбросить подключения, созданные пользователем user1 .
OPENFILES /Disconnect /O Read/Write - сбросить подключения, имеющие режим "Чтение\Запись"
OPENFILES /Disconnect /S SERVER /U user1 /P pass1 /ID * - выполнить сброс всех сессий ( /ID * ) на удаленном компьютере с именем SERVER . При подключении к удаленному компьютеру используется имя пользователя user1 и пароль pass1 .
Позволяет администратору запрашивать, отображать или отключать файлы и каталоги, открытые в системе. Эта команда также включает или отключает глобальный флаг System обслуживание списка объектов .
Openfiles/Disconnect
Позволяет администратору отключить файлы и папки, открытые удаленно через общую папку.
Синтаксис
Параметры
Параметр | Описание |
---|---|
ключ <system> | Указывает удаленную систему для подключения (по имени или IP-адресу). Не используйте обратные косые черты. Если параметр /s не используется, команда по умолчанию выполняется на локальном компьютере. Этот параметр применяется ко всем файлам и папкам, указанным в команде. |
/u [<domain>\]<username> | Выполняет команду, используя разрешения указанной учетной записи пользователя. Если параметр /u не используется, по умолчанию используются разрешения системы. |
/p [<password>] | Указывает пароль учетной записи пользователя, указанной в параметре /u . Если вы не используете параметр /p , при выполнении команды появится запрос на ввод пароля. |
/ID <openfileID> | Отключает открытые файлы по указанному ИДЕНТИФИКАТОРу файла. С этим параметром можно использовать подстановочный знак ( * ). |
Примеры
Чтобы отключить все открытые файлы с помощью идентификатора файла 26843578, введите:
Чтобы отключить все открытые файлы и каталоги, к которым обращается пользователь хироплн, введите:
Чтобы отключить все открытые файлы и каталоги с режимом чтения и записи, введите:
Чтобы отключить каталог с открытым именем файла * К:\тестшаре *, независимо от того, кто обращается к нему, введите:
Чтобы отключить все открытые файлы на удаленном компьютере срвмаин , к которым обращается пользовательская хироплн, независимо от их идентификатора, введите:
Openfiles/Query
Запрашивает и отображает все открытые файлы.
Синтаксис
Параметры
- Таблица — отображает выходные данные в таблице.
- List — отображает выходные данные в списке.
- CSV — отображает выходные данные в формате с разделителями-запятыми (CSV).
Примеры
Чтобы запросить и отобразить все открытые файлы, введите:
Чтобы запросить и отобразить все открытые файлы в формате таблицы без заголовков, введите:
Чтобы запросить и отобразить все открытые файлы в формате списка с подробными сведениями, введите:
Чтобы запросить и отобразить все открытые файлы в удаленной системе срвмаин , используя учетные данные пользователя хироплн в домене маиндом , введите:
В этом примере пароль указан в командной строке. Чтобы запретить отображение пароля, оставьте параметр /p . Вам будет предложено ввести пароль, который не будет отображаться на экране.
Openfiles/Local
Включает или отключает глобальный флаг System обслуживании списка объектов . Если используется без параметров, то openfiles/Local отображает текущее состояние флага " сохранить глобальный список объектов ".
Изменения, внесенные с помощью параметра вкл . или выкл ., вступают в силу только после перезагрузки системы. Включение глобального флага " Ведение списка объектов " может замедлить работу системы.
Синтаксис
Параметры
Параметр | Описание |
---|---|
[on | off] | Включает или отключает глобальный флаг System обслуживание списка объектов , который отслеживает дескрипторы локальных файлов. |
/? | Отображение справки в командной строке. |
Примеры
Чтобы проверить текущее состояние глобального флага " сохранить список объектов ", введите:
Чтобы включить глобальный флаг " Ведение списка объектов ", введите:
Чтобы отключить глобальный флаг " Ведение списка объектов ", введите:
Читайте также: