Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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


Как определить кто открыл файлы в сетевой папке и сбросить сессии пользователя в Windows Server

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

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

Рассмотрим два способа:

  1. Через оснастку "Управление компьютером" консоли управления Windows;
  2. При помощи утилиты командной строки - Openfiles.

1 способ. Получаем список открытых файлов с помощью оснастки "Управление компьютером".

Для получения списка открытых файлов на файловом сервере воспользуемся оснасткой консоли "Управление компьютером". Для запуска оснастки нажимаем сочетание клавиш "Win + R" и набираем название оснастки "compmgmt.msc".

В иерархии оснастки переходим /Управление компьютером/Служебные программы/Общие папки/Открытые файлы.

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

Закрываем файл. Чтобы закрыть сетевой файл открытый другим пользователем находим его в списке и в контекстном меню выбираем пункт "Закрыть открытый файл".

2 способ. Просмотр открытых файлов через командную строку утилитой Openfiles.

Утилита Openfiles дает нам более широкие возможности по поиску и закрытию заблокированных файлов.

C помощью openfiles можно просмотреть список открытых файлов на сервере удаленно. Для этого открываем командную и запускаем утилиту с параметрами.

Openfiles /Query /s FileServer

где
/Query - показывает все открытые файлы,
/s - определяет имя удаленного компьютера.

В случае, когда необходимо указать логин и пароль пользователя для подключения к удаленному компьютеру, задаются параметры: /u - логин пользователя, /p - пароль пользователя.

openfiles /query /s FileServer /u domain\admin /p p@ssw1234

По-умолчанию список файлов показан в формате таблицы, но есть параметры позволяющие изменить формат вывода:

Openfiles /Query /s FileServer /fo csv 

/fo csv - выводит список в формате csv с разделителем запятая;
/fo list - показывает открытые файлы в формате списка;
/fo table - формат таблицы.

Если необходимо увидеть информацию о количестве блокировок файлов (#Locks) и в каком режиме открыт файл (чтение или запись), то можно воспользоваться параметром /v.

Openfiles /Query /s FileServer /v

Определяем кто открыл сетевой файл.

Чтобы найти пользователя, который открыл и заблокировал нужный нам файл запускаем Openfiles с командой find.

Openfiles /Query /s FileServer | find /i "anyfile.xlsx"

в команде find указан параметр /i, чтобы поиск был регистронезависимым.

После того когда мы узнали имя пользо

Закрываем заблокированный сетевой файл.

Закрыть открытый файл можно по id сессии таким способом:

openfiles /disconnect /id 26843578

Закрыть все сетевые подключения к файлам и папкам, которые открыл пользователь BadUser:

openfiles /disconnect /a BadUser

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

openfiles /disconnect /o read/write

Закрыть все подключения к директории с именем "c:\myshare":

openfiles /disconnect /a * /op "c:\myshare\"

Чтобы сбросить все сессии на удаленном сервере FileServer, которые открыл пользователь domain\baduser, независимо от id сессии:

openfiles /disconnect /s FileServer /u domain\baduser /id *

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

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

В этой статье мы покажем, как получить список открытых файлов на файловом сервере 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 и перезагрузить сервер. После этого команда Openfiles будет отображать файлы, открытые локальными процессами (этот режим желательно использовать только для отладки, т.к. может негативно сказаться на производительности сервера).

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

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

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, но это менее удобно (в консоли нет возможности поиска).

Как принудительно закрыть открытый файл в 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 /s mskfs01 /u corp\aivanova /id *

Обратите внимание, что принудительное закрытие файла, открытого клиентом на SMB сервере, вызывает потерю несохраненных данных. Поэтому команду openfiles /disconnect и командлет Close-SMBOpenFile (рассматривается ниже) нужно использовать с осторожностью.

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

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

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

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

Get-SMBOpenFile

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

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

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID

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

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

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

Get-SMBOpenFile –ClientComputerName 192.168.12.170| select ClientUserName,Path

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

Get-SmbOpenFile | Where-Object {$_.Path -Like "*.exe*"}

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

Get-SmbOpenFile | Where-Object {$_.Path -Like "*защита*"}

Чтобы закрыть файл используется командлет 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

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

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

$sessn = New-CIMSession –Computername mskfs01

Также вы можете подключаться к удаленному серверам для запуска команд через командлеты PSRemoting: Enter-PSSession или Invoke-Command .

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

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

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

Чтобы убрать подтверждение закрытия файла на сервере, используйте ключ –Force.

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

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

Узнаем каким пользователем открыт файл в Samba

Если Вам в "наследство" или каким то другим способом достался контроллер домена на Samba в роли PDC, то Вы рано или поздно столкнетесь с ситуацией, когда нужно будет узнать какой пользователь домена открыл тот или иной файл, так как для всех остальных кто имеет к нему доступ, он становится только для чтения. Происходит это по вполне понятным причинам, но расчудесный офисный пакет от MS который иногда работает только по одному ему известным алгоритмам, не показывает у кого именно открыт целевой файл, даже если в настройках прописано имя пользователя. Бухгалтера и прочие экономисты и слышать не хотят про какие то там "невозможно", "файл открыт другим пользователям", им подавай здесь и сейчас -- Работа стоит!

Чтобы работа не стояла и настроение ни у кого не портилось, открываем терминал с правами суперпользователя root и выведем список файлов которые на данный момент заблокированы от изменений.

smbstatus -L

В выхлопе может быть много всякого ненужного мусора, но мы зная имя целевого файла с помощью grep элегантно уберем все лишнее.

smbstatus -L | grep file_name

В выводе будет содержаться pid процесса которым сейчас используется этот файл и собственно путь до него. Далее нам нужно сопоставить pid процесса и имя пользователя.

Например pid процесса открывшего файл - 10023

smbstatus -u | grep 10023

Теперь Samba выведет нам логин пользователя открывшего файл.

//Как показывает практика, чаще всего можно начинать со второго этапа, опустив выполнение

smbstatus -L

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

 
msgipss   (2005-04-07 18:55) [0]

Домен на win2000 сервере. Имеется сетевой ресурс, на нем набор табличек .dbf. Время от времени эти таблички блокирует какой ни будь пользователь. Можно ли не пользуясь управлением ресурсами на консоли сервера узнать пользователей которые открыли файл. А также возможно ли закрыть этот файл пользователем.
Можно ли на delphi или еще как написать интерфейс позволяющий делать, что описано выше.
Заранее благодарен.


 
Rouse_ ©   (2005-04-07 22:28) [1]

http://www.delphimaster.ru/articles/netmon/


 
msgipss   (2005-04-10 18:29) [2]

Большое спасибо, Rouse_ 8),
тема закрыта


 
msgipss   (2005-04-10 22:08) [3]

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


 
atruhin ©   (2005-04-11 09:56) [4]

2 exe файла, первый запускает второй с нужными правами. Только обязательно проверять контрольную сумму второго файла, чтоб не подменили :). И подумай над шифрованием пароля чтоб в exe файле не было видно. А вообще это все равно дыра в безопасности. Отловить пароль админа 2 минуты.


 
Rouse_ ©   (2005-04-11 10:26) [5]

А зачем? Всеравно функции которые модифицируют ресурсы могут выполнить только члены следующих групп:Administrators, System Operators, or Power Users...
Соответственно если зашел под обчным юзером, то будет облом.


 
msgipss   (2005-04-11 11:48) [6]

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


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

Для того, чтобы узнать какой процесс открыл и блокирует доступ к файлу в Windows нам поможет программа Process Explorer. Эта прога отображает все работающие процессы и позволяет просмотреть загруженные DLL файлы и отрытые хэндлы для любого процесса.

Итак, для того чтобы узнать какой процесс блокирует файл, вам нужно:
1) скачать программу Process Explorer на сайте microsoft (размер около 1.5 Мб)

2) запустить Process Explorer, выбрать меню Find -> Find Handle or DLL

3) ввести имя заблокированного файла, который нужно найти. Будет показан список всех процессов, которые используют этот файл.

Если вам известны другие методы как узнать какой процесс блокирует доступ к файлу, пишите в комментариях.

Похожие записи:

Ярлыки: Windows, процесс, процесс блокирует файл Автор: Sergey Lopatin

Как просмотреть открытые файлы в Windows Server (2008, 2012 и 2016)

Бывают случаи, когда файл открыт на сервере Windows, и вам нужно посмотреть, какой пользователь или процесс открыл его. Эти открытые файлы могут быть заблокированы и препятствовать редактированию пользователями, вызывать ошибки при обновлении программного обеспечения, задерживать перезагрузку и так далее.

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

Оба метода используют встроенные инструменты Windows и работают в большинстве версий Windows (я тестировал это на Server 2008, 2012, 2016 и Windows 10).

Видеоурок

Если вам не нравятся видео или вам нужна дополнительная информация, продолжайте читать.

Рекомендуемый инструмент: Анализатор разрешений SolarWinds

Теперь вы можете быстро увидеть, КТО имеет разрешение на ЧТО, и ответить на вопросы, которые отнимают ваше время и терпение.

SolarWinds FREE Permission Analyzer определит действующие разрешения NTFS пользователя для доступа к конкретному файлу, папке или общему сетевому ресурсу.Результаты отображаются на изящной панели инструментов рабочего стола.

Загрузите БЕСПЛАТНУЮ копию анализатора разрешений

Метод 1. Используйте Управление компьютером для просмотра общих файлов / папок

Этот первый метод используется для просмотра открытых файлов в общей папке. Это лучший способ устранения проблем с заблокированными файлами, которые пользователи оставили открытыми. Если вам нужно узнать, в каком процессе открыт файл, воспользуйтесь методом 2.

Шаг 1: Щелкните правой кнопкой мыши меню «Пуск» и выберите «Управление компьютером»

Другой способ получить доступ к управлению компьютером - ввести команду compmgmt.msc в поле поиска меню «Пуск».

Вам нужно будет открыть эту консоль на компьютере или сервере, на котором есть общая папка. Например, у меня есть сервер с именем file1 с общей папкой HR. Чтобы увидеть открытые файлы на этом общем ресурсе, мне нужно будет открыть консоль управления компьютером с сервера file1.

Шаг 2: Щелкните Общие папки, затем щелкните открытые файлы

Теперь я вижу, что у пользователя rallen есть папка HR и файл adpro.txt открытый.

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

Это все для метода 1.

Если вам нужно проверить, у кого есть права доступа к файлу или папке, ознакомьтесь с моим руководством Как просмотреть действующие разрешения NTFS.

Методы 2: просмотр сведений о процессе и файле с помощью монитора ресурсов

Шаг 1: Введите монитор ресурсов в поле поиска меню «Пуск»

Это самый быстрый способ доступа к монитору ресурсов.

Другой вариант - открыть диспетчер задач, щелкнуть вкладку производительности и затем щелкнуть «Открыть монитор ресурсов».

Шаг 2: Щелкните вкладку диска в мониторе ресурсов

Теперь, когда у меня открыт монитор ресурсов, мне просто нужно щелкнуть вкладку диска.

Теперь я могу видеть всевозможные подробности о дисковой активности, такие как открытие файлов, PID, чтение и запись байтов в секунду и многое другое.

Вы можете перемещать столбцы, чтобы видеть полный путь к файлу.

При большой активности диска остановите мониторинг в реальном времени, чтобы можно было просмотреть активность открытых файлов.

Чтобы остановить мониторинг в реальном времени, перейдите в режим мониторинга, затем выберите «Остановить мониторинг».

Если вам понравилась эта статья, то, пожалуйста, подпишитесь на наш канал YouTube для получения дополнительных руководств по Active Directory.

Рекомендуемый инструмент: SolarWinds Server & Application Monitor

Эта утилита была разработана для мониторинга Active Directory и других важных служб, таких как DNS и DHCP.Он быстро обнаруживает проблемы с контроллером домена, предотвращает сбои репликации, отслеживает неудачные попытки входа в систему и многое другое.

Что мне больше всего нравится в SAM, так это простая в использовании панель управления и функции оповещения. Он также имеет возможность контролировать виртуальные машины и хранилище.

Загрузите бесплатную пробную версию здесь

.

Как просматривать и закрывать открытые файлы в Windows Server SMB Share?

Администраторам файлового сервера

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

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

Просмотр открытых файлов в общей сетевой папке на Windows Server

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

Откройте консоль управления компьютером на своем файловом сервере (или подключитесь к серверу удаленно с консоли управления, запущенной на вашем компьютере) и перейдите в Системные инструменты -> Общие папки -> Открыть файлы. В правой части окна отображается список открытых файлов на текущем сервере SMB. Список содержит локальный путь к файлу, имя учетной записи пользователя, которая открывает файл, количество блокировок и режим открытия файла (чтение или запись + чтение).

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

openfiles / Query / fo csv | подробнее

Когда пользователь удаленно обращается к папке или файлу в общей сетевой папке на сервере, создается новый сеанс SMB. Вы можете управлять открытыми файлами, используя эти идентификаторы сеанса.

Вы можете отобразить список открытых файлов на удаленном сервере. Например, вам нужно вывести список всех открытых файлов в общих папках на хосте lon-fs01 :

openfiles / запросов / s lon-fs01 / fo csv

Команда openfiles также позволяет просматривать список локально открытых файлов. Чтобы использовать его, включите опцию « Maintain Objects List » с помощью команды: openfiles / local на и перезагрузите сервер. После этого команда openfiles отобразит файлы, открытые локальными процессами (этот режим рекомендуется использовать только для целей отладки, так как это может негативно сказаться на производительности сервера).

Как узнать, кто блокирует файл в общей папке?

Чтобы идентифицировать пользователя, который открыл (заблокировал) файл filename.docx в общей сетевой папке на удаленном сервере lon-fs01, выполните следующую команду:

openfiles / Query / s lon-fs01 / fo csv | find / i "filename.docx"

Клавиша / i используется для поиска файлов без учета регистра.

Вы можете указать только часть имени файла. Например, вам нужно узнать, кто открыл файл XLSX, в названии которого содержится «sale_report».Используйте следующую трубу:

openfiles / Query / s lon-fs01 / fo csv | find / i "sale_report" | find / i "xlsx"

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

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

Чтобы закрыть открытый файл, найдите его в списке файлов в разделе Открыть файл и выберите Закрыть открытый файл в контекстном меню.

Если на вашем файловом сервере есть сотни открытых файлов, найти нужный файл в консоли будет непросто. Более удобно использовать инструмент командной строки Openfiles . Как мы уже говорили, он возвращает идентификатор сеанса открытого файла. Используя этот идентификатор сеанса, вы можете принудительно закрыть файл, сбросив соединение SMB.

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

openfiles / Query / s lon-fs01 / fo csv | найти / я "ферма" | найти / я ".xlsx "

Отключить пользователя от файла, используя полученный идентификатор сеанса SMB:

openfiles / Disconnect / s lon-fs01 / ID 617909089

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

openfiles / disconnect / s lon-fs01 / u corp \ mjenny / id *

Примечание . Принудительное закрытие файла, открытого клиентом на сервере SMB, может привести к потере несохраненных данных. Поэтому используйте команду openfiles / disconnect или Close-SMBOpenFile (обсуждается ниже) очень осторожно.

Get-SMBOpenFile: поиск и закрытие обработчиков открытых файлов с помощью PowerShell

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

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

Чтобы отобразить список открытых файлов на SMB-сервере Windows, выполните команду:

Get-SMBOpenFile

Команда возвращает идентификатор файла, идентификатор сеанса и полное имя файла (путь).
Вы можете отобразить список открытых файлов с именами пользователей и компьютеров (IP-адресами):

Get-SmbOpenFile | выберите ClientUserName, ClientComputerName, Path, SessionID

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

Get-SMBOpenFile –ClientUserName "corp \ mjenny" | выберите ClientComputerName, путь

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

Get-SMBOpenFile –ClientComputerName 192.168.1.190 | выберите ClientUserName, путь

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

Get-SmbOpenFile | Where-Object {$ _. Path-Like "* .exe *"}

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

Get-SmbOpenFile | Where-Object {$ _. Path -Like "* reports *"}

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

Close-SmbOpenFile -FileId 4123426323239

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

Get-SmbOpenFile | где {$ _.Путь - как "* Annual2020.xlsx"} | Закрыть-SmbOpenFile -Force

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

Get-SmbOpenFile | выберите ClientUserName, ClientComputerName, Path, SessionID | Out-GridView -PassThru –title «Выбрать открытые файлы» | Close-SmbOpenFile -Confirm: $ false -Verbose

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

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

$ sessn = New-CIMSession –Computername lon-fs01

Вы также можете подключиться к удаленному серверу для выполнения команд PorwerShell с помощью командлетов PSRemoting: Enter-PSSession или Invoke-Command .

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

Get-SMBOpenFile -CIMSession $ sessionsn | где {$ _.Путь – like "* pubs.docx"} | Закрыть-SMBOpenFile -CIMSession $ sessionsn

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

Чтобы удалить подтверждение принудительного закрытия файла на сервере SMB, используйте ключ -Force .

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

Get-SMBOpenFile -CIMSession $ sessionsn | где {$ _. ClientUserName –like "* mjenny *"} | Close-SMBOpenFile -CIMSession $ sessionsn

.

Как узнать, кто оп на вашем сервере?

Статус темы:
Закрыто для дальнейших ответов.
  1. В основном, о чем говорится в заголовке ... Я хочу узнать, кто работает на моем сервере, потому что у меня был кто-то с оператором на моем сервере, но я не знаю, использовал ли он одну из его альтернативных учетных записей? Я чувствую, что он мог бы, но я заглянул в папку op. Но ничего не нашел, есть ли команда, которую я могу использовать, чтобы узнать, кто такой oppd?

  2. Идите туда, где находится ваш сервер, и откройте команду ops.txt файл. Это есть у каждого человека, который находится на вашем сервере.

  3. hcokey121
    Откройте файл ops.txt, в котором есть все оппоненты.

  4. Откройте op.txt в папке вашего сервера!

  5. Если в Linux, выполните
    zcat logs / *.gz | grep username
    , чтобы узнать, какие команды выполнил данный игрок. Замените имя пользователя на имя пользователя

Статус темы:
Закрыто для дальнейших ответов.
.

Как узнать количество файлов, открытых в данный момент приложением Java?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант
.

Как мне узнать, какая программа использует порт 80 в Windows?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Как определить, какой процесс Windows блокирует файл или папку - Справочный центр GSX

Последнее обновление: . Автор: Поддержка GSX (Янн) .

При попытке удалить, переместить или переименовать файл или папку вы получаете предупреждающее сообщение Windows; Операционная система отказывается завершить операцию.

Эта статья помогает определить процесс, который в настоящее время обрабатывает файл или папку, над которыми вы пытаетесь выполнить операцию обслуживания.

Sysinternals Process Explorer | Окна

Симптомы

При попытке удалить, переместить или переименовать файл вы получаете системное предупреждение Windows:

  • «Невозможно удалить файл: доступ запрещен».
  • «Произошло нарушение совместного использования».
  • «Возможно, используется исходный или целевой файл».
  • «Файл используется другой программой или пользователем».
  • «Убедитесь, что диск не заполнен, не защищен от записи и что файл в настоящее время не используется».

Как решить проблему

Один из самых простых способов работы с заблокированными файлами или папками - использовать Microsoft Sysinternals Process Explorer .

Определите, какая программа использует файл

С помощью Process Explorer найти программу очень просто:

  1. Открыть обозреватель процессов
    • Запуск от имени администратора .
  2. На панели инструментов найдите значок прицела справа.
  3. Перетащите значок и отпустите его на открытый файл или заблокированную папку.
  4. Исполняемый файл, который использует файл, будет выделен в основном списке отображения Process Explorer.

Определите, какой дескриптор или DLL использует файл

  1. Открыть обозреватель процессов
    • Запуск от имени администратора .
  2. Введите сочетание клавиш Ctrl + F .
    • Или щелкните меню «Найти» и выберите «Найти дескриптор или DLL».
  3. Откроется диалоговое окно поиска.
  4. Введите имя заблокированного файла или другого интересующего файла.
    • Частичных имен обычно достаточно.
  5. Нажмите кнопку «Искать».
  6. Список будет создан.
    • Может быть несколько записей.

Снять блокировку файла или папки

Чтобы снять блокировку с файла, над которым вы пытаетесь выполнить операцию обслуживания, вам нужно будет убить соответствующий процесс. Отдельная программа или дескриптор в списке, предоставленном Process Explorer, могут быть уничтожены с помощью:

  1. Выбор процесса / дескриптора / записи программы.
  2. Нажатие клавиши удаления.

Будьте осторожны при удалении дескрипторов, поскольку это может привести к нестабильному поведению и нестабильности.

Загрузки

Вы можете скачать Sysinternals Process Explorer здесь.


Была ли эта статья полезной?

144 из 370 считают это полезным .

Смотрите также