Как узнать кто открыл файл по сети

от admin

Как узнать кто открыл файл по сети

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет.

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет. Aleksio

Сообщение Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

Управление открытыми файлами на файловом сервере Windows (SMB)

27.07.2021
useritpro
directoryWindows 10, Windows Server 2012 R2, Windows Server 2016
commentsкомментарий 51

Если вы администрируете общие сетевые папки Windows, скорее всего вы периодически сталкиваетесь с просьбами пользователей принудительно закрыть файлы, открытые (заблокированные) в сетевых папках другими пользователями. Обычно это связано с некорректной работой программы, неправильном завершении сессии пользователя или ситуациях, когда пользователь открыл файл и забыл закрыть его (ушел домой, в отпуск и т.д.). Во всех этих случаях файл в сетевой папке оказывается заблокированным, и другие пользователи не могут вносить в него изменения.

В этой статье мы покажем, как получить список открытых файлов на файловом сервере Windows, узнать какие пользователи их используют, и способы сброса файловых сессий для разблокировки открытых файлов.

Вывод списка открытых файлов в сетевой папке Windows

Список открытых по сети файлов в Windows можно получить с помощью стандартной графической консоли Computer Management (Управление компьютером — compmgmt.msc ).

Запустите на файловом сервере консоль Computer Management (или подключитесь к нему консолью удаленно со своего компьютера) и перейдите в раздел System Tools -> Shared Folders -> Open files (Служебные программы -> Общие папки -> Открыты файлы). В правой части окна отображается список файлов на сервере, открытых удаленно. В данном списке указан локальный путь к файлу, имя учетной записи пользователя, количество блокировок и режим, в котором открыт файл (Read или Write+Read).

Открыты файлы на файловом сервере Windows

Этот же список открытых файлов можно получит с помощью встроенной консольной утилиты Openfiles. Например, с помощью следующей команды можно получить id сессии, имя пользователя и полный локальный путь к открытому файлу:

Openfiles /Query /fo csv |more

Openfiles /Query

Вы можете вывести список открытых файлов на сервере удаленно. Например, чтобы вывести все открытые по сети файлы на сервере mskfs01, выполните:

Openfiles /Query /s mskfs01 /fo csv

Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles

Чтобы удаленно определить пользователя, который открыл (заблокировал) файл cons.adm в сетевой папке на сервере mskfs01, выполните команду:

Openfiles /Query /s mskfs01 /fo csv | find /i «cons.adm»

Можно указать только часть имени файла. Например, чтобы узнать, кто открыл xlsx файл, в имени которого есть строка farm, воспользуйтесь таким конвейером:

Openfiles /Query /s mskfs01 /fo csv | find /i «farm»| find /i «xlsx»

Можно, конечно найти открытый файл и в графической консоли Computer Management, но это менее удобно (в консоли нет возможности поиска).

Как принудительно закрыть открытый файл в Windows?

Чтобы закрыть открытый файл, нужно найти его в списке файлов секции Open Files и в контекстном меню выбрать пункт “Close Open File”.

Закрыть открытые файлы в сетевой папке

Если на файловом сервере сотни открытых файлов, найти их в консоли будет непросто. Удобнее воспользоваться утилитой Openfiles. Как мы уже говорили, она возвращает ID сессии открытого файла. Вы можете принудительно закрыть файл и сбросить подключение пользователя по ID SMB сессии. Сначала нужно определить ID сессии открытого файла:

Openfiles /Query /s mskfs01 /fo csv | find /i «farm»| find /i «.xlsx»

Теперь можно принудительно отключить пользователя по полученному идентификатору SMB сессии:

Openfiles /Disconnect /s mskfs01 /ID 67109098

Openfiles Disconnect - отключение файла по id сессии

Можно принудительно сбросить все сессии и освободить все файлы, открытые определённым пользователем:
openfiles /disconnect /s mskfs01 /u corp\aivanova /id *

Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell

В версии PowerShell в Windows Server 2012/Windows 8 появились командлеты для управления сетевыми файлами и папками на SMB сервере. Эти командлеты можно использовать чтобы удаленно закрыть открытые по сети файлы.

Список открытых файлов можно получить с помощью командлета Get-SMBOpenFile. Чтобы закрыть файл (сбросить подключение), используется Close-SmbOpenFile.

Для вывода полного списка открытых файлов на сервере, выполните команду:

Get-SMBOpenFile вывод списка открытых файлов на SMB сервере с помощью powershell

Команда возвращает ID файла, ID сессии и полное имя файла.

Можно вывести список открытых файлов с именами пользователей и компьютеров (IP адресами):

poweshell вывод список пользователей, которые открыли файлы в сетевой папке windows

Можно вывести все файлы, открытые определенным пользователем:

Get-SMBOpenFile –ClientUserName «corp\aaivanov» |select ClientComputerName,Path

или с определенного компьютера (сервера):

Get-SMBOpenFile –ClientComputerName 192.168.12.170| select ClientUserName,Path

Можно вывести список открытых файлов по шаблону. Например, все открытые по сети exe файлы:

или файлы с определенным именем:

Чтобы закрыть файл используется командлет Close-SmbOpenFile . Закрыть файл можно по ID:

Close-SmbOpenFile -FileId 4123426323239

Но обычно удобнее закрыть файл по имени:

Get-SmbOpenFile | where <$_.Path –like "*prog.xlsx">| Close-SmbOpenFile -Force

С помощью Out-GridView можно сделать простую графическую форму для поиска и закрытия файлов. Следующий скрипт выведет список открытых файлов. Администратор должен с помощью фильтров в таблице Out-GridView найти, выделить нужные файлы и нажать ОК. В результате выбранные файлы будут принудительно закрыты.

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru –title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -Verbose

Get-SmbOpenFile вместе с out-gridview - powershell скрипт с графическим интерефейсом по выбору и принудительному закрыттию заблокированных (открытых) файлов в windows

Как удаленно закрыть открытые SMB файлы с помощью PowerShell?

Командлеты Get-SMBOpenFile и Close-SmbOpenFile можно использовать чтобы удаленно найти и закрыть открытые файлы. Сначала нужно подключиться к удаленному SMB серверу Windows через CIM сессию:

$sessn = New-CIMSession –Computername mskfs01

Следующая команда найдет SMB сессию для открытого файла *pubs.docx и завершит ее.

Get-SMBOpenFile -CIMSession $sessn | where <$_.Path –like "*pubs.docx">| Close-SMBOpenFile -CIMSession $sessn

Подтвердите закрытие файла, нажав Y . В результате вы разблокировали открытый файл. Теперь его могут открыть другие пользователи.

Get-SMBOpenFile - удаленное управление открытых файлов

С помощью PowerShell вы можете закрыть и разблокировать на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните:

Get-SMBOpenFile -CIMSession $sessn | where <$_.ClientUserName –like "*ipivanov*">|Close-SMBOpenFile -CIMSession $sessn

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Как посмотреть, кто и чем занимался на компьютере в мое отсутствие: определяем последние действия «чужака».

chto-delali-za-pk

Вопрос от пользователя

Здравствуйте!

Работаю в небольшом офисе, недавно появилось подозрение что за моим ПК копается кто-то еще (у нас у всех свои ПК, поэтому моя система по работе точно никому не должна быть нужна!).

Не подскажите, можно ли как-то посмотреть, кто и чем занимался на компьютере в мое отсутствие? И, если можно, как-нибудь бы защитить ПК от таких не званных гостей.

Ваш вопрос прямо напомнил мне одно просторечие: «Если вам кажется, что за вами следят — это вовсе не значит, что у вас паранойя» .

Вообще, для 100%-надежной защиты вашего ПК — он должен быть всегда при вас (тогда никто не сможет отформатировать диск, и посмотреть ваши данные).

Но обычно в офисных условиях достаточно установить пароль на Windows, а документы (которые никто не должен увидеть) — можно зашифровать (либо носить с собой на флешке). 👌

Собственно, теперь об основном вашем вопросе: где и какую историю хранит Windows и как это посмотреть.

Не мешай! Всё уже и так записано на диске. (Евгений Кран, сайт: http://cartoon.kulichki.com/)

Не мешай! Всё уже и так записано на диске. (Евгений Кран, сайт: http://cartoon.kulichki.com/)

ускорение ПК

Как посмотреть последние действия: история работы

👉 Совет 1: анализируем журнал событий

В Windows есть спец. журналы, куда заноситься очень многое: когда включался и выключался компьютер, коды шибок, предупреждения и т.д. Нас же, разумеется, интересует время вкл./выкл. 😉

Чтобы открыть журнал : нажмите Win+R —> откроется окно «Выполнить» —> в него введите команду eventvwr.

После должно появиться окно событий — в нем нужно выбрать вкладку «Журналы Windows / Система» и открыть фильтр текущего журнала. Далее выбрать дату, установить галочку «Сведения» и нажать OK (см. мой пример ниже 👇).

Смотрим историю вкл. ПК за последние сутки

Смотрим историю вкл. ПК за последние сутки

Теперь внимательно смотрим список событий: если вы их отфильтровали — список не будет большим. В первую очередь нас интересуют события «Power. « — в моем примере ниже (👇) показано, что кто-то вывел мой ПК в 7:59 по Москве.

Могли ли вы в это время использовать компьютер

Могли ли вы в это время использовать компьютер

Собственно, время, когда работал ПК мы уже знаем.

👉 Совет 2: смотрим документы и файлы, с которыми недавно работали

По умолчанию Windows помнит обо всех документах и файлах, которые вы недавно открывали (это делается с целью ускорения открытия файлов, с которыми часто работаете).

Чтобы посмотреть этот список (недавних документов*) — нажмите Win+R, и используйте команду shell:recent.

shell:recent - недавние документы

shell:recent — недавние документы

Далее у вас откроется системный каталог, в котором вы сможете отсортировать по дате изменения все файлы — ну и сравнить, с вашими рабочими часами за ПК (а заодно и узнаете, какими документами интересовались «гости» 😉).

Недавние документы отсортированные по дате

Недавние документы отсортированные по дате

Кстати, обратите внимание, что Word и Excel тоже при запуске показывают документы, которые недавно были открыты (если у вас хорошая память и внимательность — возможно вы заметите и те документы, которые сами не открывали 👇).

Word - последнее!

Ну и не могу не отметить, что если вы откроете свойства файла — то во вкладке «Подробно» проводник вам сможет подсказать даты доступа, печати и изменения документа.

Свойства документа

👉 В помощь!

Как посмотреть недавно открытые файлы в ОС Windows 10 (никак не могу найти вчерашний документ. )

👉 Совет 3: анализируем историю посещений в браузере

Одна из самых популярных программ для работы в сети интернет, разумеется, браузер . И вполне вероятно, что если кто-то сидел за вашим ПК/ноутбуком — ему (вероятно) мог он понадобиться.

Чтобы открыть историю посещений (журнал посещений) — в большинстве браузеров достаточно нажать сочетание кнопок Ctrl+H (работает в Chrome, Firefox, Opera. ).

Кстати, в Chrome можно также перейти на страничку: chrome://history/

Ctrl+H — открыть историю

Ctrl+H — открыть историю

После, в журнале указываете нужную дату и уточняете какие сайты просматривались. 👌 (Кстати, многие пользуются соц. сетями — а значит можно будет быстро узнать кто заходил на свой профиль!).

👉 В помощь!

1) Как посмотреть историю посещения сайтов, даже если она удалена

2) Как очистить историю посещения сайтов, чтобы нельзя было восстановить! Удаление всего кэша браузеров

👉 Совет 4: проверяем свой профиль Google

Кстати, если незваный «гость» на ПК пользовался сервисами Google — то вероятно вы сможете узнать, например, что он искал в поисковой системе (еще один «плюсик» к пакету информации 😉). Благо, что по умолчанию Google всю эту информацию собирает и «откладывает».

Как это проверить : зайти на главную страничку Google, кликнуть по значку своего профиля и выбрать «Управление аккаунтом Google» .

Профиль Google (браузер Chrome)

Профиль Google (браузер Chrome)

После перейти во вкладку «Данные и персонализация / история приложений и веб-поиска» .

Далее «проматываете» до нужной даты и смотрите, какие поисковые запросы были сделаны. 👌

Данные и персонализация - история поиска

Данные и персонализация — история поиска

👉 Совет 5: просматриваем корзину, каталог загрузок

Многие пользователи (чаще всего) не обращают внимание на системные «каталоги»: «Загрузки» и «Корзина» . А ведь в них могут остаться определенные файлы и документы, с которыми работали за ПК.

Читать:
Как передать массив в get запросе

Папку «загрузки» можно открыть, нажав на Win+R, и использовав в меню «Выполнить» команду: shell:downloads.

Загрузки

Чтобы открыть корзину (даже если ее значка нигде нет): нажмите Win+R, и используйте команду Shell:RecycleBinFolder.

Просматриваем корзину

👉 Совет 6: как поймать с поличным «тайного работника» за вашим ПК

На мой взгляд, самый простой способ это сделать — воспользоваться спец. программами для контроля сотрудников (например, Clever Control ). Примечание : таких программ много, я просто привел одну из них.

Установка у Clever Control простая и интуитивно понятная, в процессе работы она будет незаметно фиксировать всё в спец. журнал (в т.ч. и делать снимки с веб-камеры, запоминать работающие программы, и т.д., в зависимости от ваших настроек).

Clever Control — одна из программ для контроля сотрудников (узнали, кто сидел за ПК!)

Clever Control — одна из программ для контроля сотрудников (узнали, кто сидел за ПК!)

Т.е. о том, что вы ее установили к себе на ПК, и что она работает — никто не узнает, а просматривать что творится за вашей системой вы сможете в любое удобное для вас время (даже не находясь возле нее ( прим. : с другого компьютера)).

Таким образом вы сможете узнать кто и что делает за вашим ПК, причем так, что «виновник» даже не узнает о том, что он «попался». 😉

Как узнать кто открыл файл на сервере

Как в Windows отслеживать подключения к расшаренным в локальной сети папкам

Если вы решите открыть на своем рабочем или домашнем компьютере доступ к папкам, то наверняка также захотите знать, кто и когда подключается к расшаренным вами каталогам и какие файлы в них просматривает или редактирует. Реализовать отслеживание использования общих папок в Windows не составляет особого труда, для этих целей в самой системе предусмотрена соответствующая оснастка, а еще вы можете воспользоваться сторонними решениями, например, бесплатной утилитой NetShareMonitor.

Управление компьютером

Это наиболее простой способ мониторинга общих папок.

Откройте оснастку «Управление компьютером» командой compmgmt.msc или compmgmtlauncher и разверните в колонке слева пункт «Общие папки».

Раздел содержит три каталога: Общие ресурсы , Сеансы и Открытые файлы .

Первый каталог содержит список всех общих ресурсов на вашем компьютере, в том числе служебных. Таков, к примеру, IPC$ — ресурс совместного доступа к каналам, обеспечивающий связь между приложениями и используемый службами серверов.

Общие папки

Для каждого открытого ресурса выводятся сведения — количество активных подключений, тип и путь к папке, если же кликнуть по ресурсу дважды мышкой, откроется окно свойств ресурса, в котором можно установить ограничения на его использование — задать лимит на количество одновременных активных подключений, изменить права доступа и так далее.

Из окна свойств вы также можете принудительно закрыть любое подключение.

Общие

В подразделе «Сеансы» предоставляется информация о пользователях, подключенных к общему ресурсу, в частности, имя пользователя и компьютера в локальной сети, тип подключения и количество открытых файлов, время подсоединения и время простоя.

Сеансы

Наконец, в подразделе «Открытые файлы» выводится список всех файлов и папок, которые в данный момент открыты подключившимися к расшаренной папке пользователями. Помимо пути к ресурсу, указываются также имя работающего с ним пользователя, тип подключения и режим открытия (чтение и/или запись) .

Открытые файлы

NetShareMonitor

Программа NetShareMonitor дублирует «Общие папки» оснастки «Управление компьютером», преимущество ее заключается главным образом в звуковом оповещении администратора о новых подключениях и сохранении сведений о подключениях в лог.

NetShareMonitor

Интерфейс NetShareMonitor представлен тремя вкладками «Активные сеансы», «Доступные файлы» и «Общие файлы», всё по аналогии с общими папками в управлении компьютером.

NetShareMonitor - Shared Files

Программа показывает время подключения, имя хоста и пользователя, путь к ресурсу, количество активных подключений, тип подключения и статус открытых файлов.

NetShareMonitor - Settings

Минус — отсутствие русского языка интерфейса, впрочем, недостаток этот несущественный, чего нельзя сказать о звуковых оповещениях. Их и впрямь лучше отключить, так как издаваемый программой сигнал настолько громкий и пронзительный, что больше похож на предупреждающую об опасности сирену, чем на простое оповещение.

Как узнать кто открыл файл на сервере

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет.

Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

P.s. Доступа к администрированию сетевого ресурса (управление компьютером) нет. Aleksio

Сообщение Есть файл с общим доступом. Файл находится на общем сетевом жёстком диске. С этим файлом постоянно работают много человек.
1. Необходимо выяснить, открыт ли у в настоящее время у кого-нибудь из сотрудников данный файл.
2. Желательно выяснить, у кого именно открыт.

В случае, если файл не с общим доступом, то всё просто — он выводит табличку, что файл открыт конкретным пользователем. А вот если включён общий доступ — то ничего не сообщает. Более того, файл спокойно поддаётся переименованию, а также перемещению в другую папку, и сообщение о том, что файл занят каким-то процессом — не выводится. Через журнал изменений можно лишь выяснить, кем и когда файл был открыт (если при этом пользователь сохранял файл) и кем и когда было сделано последнее изменение. При этом кем сейчас он используется — не ясно.

Нужно это знать для того, чтобы внести изменения, которые невозможны при включённом общем доступе, и вот для этого нужно его отключить, но лишь в тот момент, когда файл никем не используется (ибо пользователи не смогут сохранить их изменения, если им отрубить общий доступ).

Как просмотреть, кто пользуется общими ресурсами компьютера (шары)

Как просмотреть, кто пользуется общими ресурсами компьютера (шары)

Периодически возникает срочная необходимость узнать, кто и зачем открыл тот или иной файл на компьютере с общим доступом. Это легко осуществить, воспользовавшись консолью «Управление компьютером».

Открываем Консоль управления компьютером

Находим значок «Мой компьютер» (как в меню Пуск, так и на рабочем столе), и нажимаем на нем правой кнопкой мыши. В появившемся меню нажимаем «Управление».

В открывшейся консоли, а точнее в её левой части, ищем пункт «Общие папки», и нажимаем на него.

Так же в эту консоль можно попасть выполнив следующую команду, или создав ярлык:

Просмотр пользователей шары

Теперь перед нами появляются три пункта:

  • Общие ресурсы — список всех расшаренных с компьютера ресурсов, к которым есть общий доступ.
  • Сеансы — список сеансов пользователей, которые пользуются расшаренными ресурсами.
  • Открытые файлы — список файлов, которые открыты через общий доступ.

Управление открытыми файлами на файловом сервере Windows (SMB)

date27.07.2021
useritpro
directoryWindows 10, Windows Server 2012 R2, Windows Server 2016
commentsкомментариев 50

Если вы администрируете общие сетевые папки Windows, скорее всего вы периодически сталкиваетесь с просьбами пользователей принудительно закрыть файлы, открытые (заблокированные) в сетевых папках другими пользователями. Обычно это связано с некорректной работой программы, неправильном завершении сессии пользователя или ситуациях, когда пользователь открыл файл и забыл закрыть его (ушел домой, в отпуск и т.д.). Во всех этих случаях файл в сетевой папке оказывается заблокированным, и другие пользователи не могут вносить в него изменения.

В этой статье мы покажем, как получить список открытых файлов на файловом сервере Windows, узнать какие пользователи их используют, и способы сброса файловых сессий для разблокировки открытых файлов.

Вывод списка открытых файлов в сетевой папке Windows

Список открытых по сети файлов в Windows можно получить с помощью стандартной графической консоли Computer Management (Управление компьютером — compmgmt.msc ).

Запустите на файловом сервере консоль Computer Management (или подключитесь к нему консолью удаленно со своего компьютера) и перейдите в раздел System Tools -> Shared Folders -> Open files (Служебные программы -> Общие папки -> Открыты файлы). В правой части окна отображается список файлов на сервере, открытых удаленно. В данном списке указан локальный путь к файлу, имя учетной записи пользователя, количество блокировок и режим, в котором открыт файл (Read или Write+Read).

Открыты файлы на файловом сервере Windows

Этот же список открытых файлов можно получит с помощью встроенной консольной утилиты Openfiles. Например, с помощью следующей команды можно получить id сессии, имя пользователя и полный локальный путь к открытому файлу:

Openfiles /Query /fo csv |more

Openfiles /Query

Вы можете вывести список открытых файлов на сервере удаленно. Например, чтобы вывести все открытые по сети файлы на сервере mskfs01, выполните:

Openfiles /Query /s mskfs01 /fo csv

Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles

Чтобы удаленно определить пользователя, который открыл (заблокировал) файл cons.adm в сетевой папке на сервере mskfs01, выполните команду:

Openfiles /Query /s mskfs01 /fo csv | find /i «cons.adm»

Можно указать только часть имени файла. Например, чтобы узнать, кто открыл xlsx файл, в имени которого есть строка farm, воспользуйтесь таким конвейером:

Openfiles /Query /s mskfs01 /fo csv | find /i «farm»| find /i «xlsx»

Можно, конечно найти открытый файл и в графической консоли Computer Management, но это менее удобно (в консоли нет возможности поиска).

Как принудительно закрыть открытый файл в Windows?

Чтобы закрыть открытый файл, нужно найти его в списке файлов секции Open Files и в контекстном меню выбрать пункт “Close Open File”.

Закрыть открытые файлы в сетевой папке

Если на файловом сервере сотни открытых файлов, найти их в консоли будет непросто. Удобнее воспользоваться утилитой Openfiles. Как мы уже говорили, она возвращает ID сессии открытого файла. Вы можете принудительно закрыть файл и сбросить подключение пользователя по ID SMB сессии. Сначала нужно определить ID сессии открытого файла:

Openfiles /Query /s mskfs01 /fo csv | find /i «farm»| find /i «.xlsx»

Теперь можно принудительно отключить пользователя по полученному идентификатору SMB сессии:

Openfiles /Disconnect /s mskfs01 /ID 67109098

Openfiles Disconnect - отключение файла по id сессии

Можно принудительно сбросить все сессии и освободить все файлы, открытые определённым пользователем:
openfiles /disconnect /s mskfs01 /u corp\aivanova /id *

Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell

В версии PowerShell в Windows Server 2012/Windows 8 появились командлеты для управления сетевыми файлами и папками на SMB сервере. Эти командлеты можно использовать чтобы удаленно закрыть открытые по сети файлы.

Список открытых файлов можно получить с помощью командлета Get-SMBOpenFile. Чтобы закрыть файл (сбросить подключение), используется Close-SmbOpenFile.

Для вывода полного списка открытых файлов на сервере, выполните команду:

Get-SMBOpenFile вывод списка открытых файлов на SMB сервере с помощью powershell

Команда возвращает ID файла, ID сессии и полное имя файла.

Можно вывести список открытых файлов с именами пользователей и компьютеров (IP адресами):

poweshell вывод список пользователей, которые открыли файлы в сетевой папке windows

Можно вывести все файлы, открытые определенным пользователем:

Get-SMBOpenFile –ClientUserName «corp\aaivanov» |select ClientComputerName,Path

или с определенного компьютера (сервера):

Get-SMBOpenFile –ClientComputerName 192.168.12.170| select ClientUserName,Path

Можно вывести список открытых файлов по шаблону. Например, все открытые по сети exe файлы:

или файлы с определенным именем:

Чтобы закрыть файл используется командлет Close-SmbOpenFile . Закрыть файл можно по ID:

Close-SmbOpenFile -FileId 4123426323239

Но обычно удобнее закрыть файл по имени:

Get-SmbOpenFile | where | Close-SmbOpenFile -Force

С помощью Out-GridView можно сделать простую графическую форму для поиска и закрытия файлов. Следующий скрипт выведет список открытых файлов. Администратор должен с помощью фильтров в таблице Out-GridView найти, выделить нужные файлы и нажать ОК. В результате выбранные файлы будут принудительно закрыты.

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru –title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -Verbose

Get-SmbOpenFile вместе с out-gridview - powershell скрипт с графическим интерефейсом по выбору и принудительному закрыттию заблокированных (открытых) файлов в windows

Как удаленно закрыть открытые SMB файлы с помощью PowerShell?

Командлеты Get-SMBOpenFile и Close-SmbOpenFile можно использовать чтобы удаленно найти и закрыть открытые файлы. Сначала нужно подключиться к удаленному SMB серверу Windows через CIM сессию:

$sessn = New-CIMSession –Computername mskfs01

Следующая команда найдет SMB сессию для открытого файла *pubs.docx и завершит ее.

Get-SMBOpenFile -CIMSession $sessn | where | Close-SMBOpenFile -CIMSession $sessn

Подтвердите закрытие файла, нажав Y . В результате вы разблокировали открытый файл. Теперь его могут открыть другие пользователи.

Get-SMBOpenFile - удаленное управление открытых файлов

С помощью PowerShell вы можете закрыть и разблокировать на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните:

Get-SMBOpenFile -CIMSession $sessn | where |Close-SMBOpenFile -CIMSession $sessn

Похожие статьи