Как узнать кто подключен к сетевому диску
На общедоступном сетевом ресурсе могут возникать ошибки доступа к файлам. Причиной этому является некорректно завершенная сессия пользователя, ошибки в работе ПО или просто кто-то открыл файл и не закрывает его. В такой ситуации файл оказывается заблокированным и не доступен для работы другим пользователям.
Решить проблему доступа к файлу можно путем закрытия сеансов использующих этот файл. В этой статье я расскажу как определить кто открыл файл в сетевой папке и как закрыть это подключение.
Рассмотрим два способа:
- Через оснастку "Управление компьютером" консоли управления Windows;
- При помощи утилиты командной строки - Openfiles.
Как определить какой пользователь открыл файл
Чтобы определить пользователя, который открыл (заблокировал) файл 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, но это менее удобно (консоль не предусматривает возможность поиска).
Определяем кто открыл сетевой файл.
Чтобы найти пользователя, который открыл и заблокировал нужный нам файл запускаем Openfiles с командой find.
в команде find указан параметр /i, чтобы поиск был регистронезависимым.
После того когда мы узнали имя пользо
1 способ. Получаем список открытых файлов с помощью оснастки "Управление компьютером".
Для получения списка открытых файлов на файловом сервере воспользуемся оснасткой консоли "Управление компьютером". Для запуска оснастки нажимаем сочетание клавиш "Win + R" и набираем название оснастки "compmgmt.msc".
В иерархии оснастки переходим /Управление компьютером/Служебные программы/Общие папки/Открытые файлы.
В правой части оснастки появится список открытых файлов. Здесь можно увидеть имя пользователя открывшего файл, количество блокировок и режим доступа к файлу.
Закрываем файл. Чтобы закрыть сетевой файл открытый другим пользователем находим его в списке и в контекстном меню выбираем пункт "Закрыть открытый файл".
Как удаленно закрыть открытые файлы с помощью 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
Как я могу найти IP-адрес подключенного сетевого диска в Windows 10?
Как я объяснил в версии этого вопроса с переполнением стека , вы можете включить в свой вопрос некоторые подробности.
Вы можете подумать, что я не могу комментировать. Как человек, который не знает много в этой области, найти правильные слова / термины для использования не так просто. Вот что значит задавать вопросы.
Если это путь, который начинается, \\ очевидно, они называются путями UNC . которые не совпадают с подключенным сетевым диском. Я мог бы, например , карту , \\someServer\directory\goodies чтобы быть диск G:\ на моей локальной машине.
Открыть CMD
пример Нажмите клавишу Windows и R
введите ping, затем пример с названием диска
C: \ Users \ Пользователь> ping htestrna01
Тогда вы получите IP.
Вам не хватает шага для перехода от подключенного сетевого диска к хосту, на котором находится общий ресурс.
Привет, ребята, это ответил на это спасибо. Сопоставленный диск - это отдельная машина. Я пробовал много пинговать в командной строке, но я вводил ping // nas-name или ping / nas-name и т. Д. Теперь я вижу, что вы вводите имя без косой черты, и это сработало.
Ваш вопрос состоит из двух частей. Сетевой ресурс не имеет IP-адреса, но хост, который разделяет его, имеет.
Во-первых, вы хотите разрешить букву диска в UNC-пути, во-вторых, вы хотите разрешить IP-адрес хоста этого UNC-пути.
Один из показанных здесь способов: если вы введете net use в командной строке, вы получите такой вывод:
Теперь вы видите диск (в разделе «Локальный») и путь UNC (в разделе «Удаленный»). Имя хоста пути UNC является частью между первыми двумя обратными косыми чертами и обратной косой чертой после этого ( some-host in \\some-host\ ).
Затем вы можете просто набрать, nslookup some-host чтобы найти IP-адрес этого хоста:
IP-адрес, который вы ищете в этом случае 192.168.1.42 .
Я подключен, и я могу сделать nslookup, но когда я проверяю, он говорит, что запрос DNS истек, сервер неизвестен!
Откройте «Сетевые подключения», нажав кнопку «Пуск» Изображение кнопки «Пуск», а затем нажмите «Панель управления». В поле поиска введите адаптер, а затем в разделе Центр управления сетями и общим доступом щелкните Просмотр сетевых подключений.
Выберите активное сетевое соединение, а затем на панели инструментов нажмите Просмотр состояния этого соединения. (Вам может потребоваться щелкнуть шеврон Изображение значка шеврона, чтобы найти эту команду.) Нажмите Детали.
Спасибо за помощь. У меня есть NAS, отображенный на мою машину. Когда я захожу в «Просмотр сетевых подключений», единственным подключением является подключение по локальной сети, не говоря уже о сетевом диске.
@AdamB, вы путаете физические соединения с логическими. ваше «Подключение по локальной сети» - это физический сетевой адаптер, поэтому все логические соединения используют его для связи по сети. Логические соединения, такие как соединения с веб-сайтом, сетевым ресурсом или любой другой службой, видны вам с помощью таких команд, как netstat, nbtstat и т. Д. Если вы хотите, чтобы инструмент графического интерфейса пользователя проверял соединения, используйте Sysinternals TCPView.
Перейдите к «Подключить сетевой диск» в «Компьютер» и выберите «Диск» из прокручиваемого меню. Он покажет IP Drive автоматически.
NetShareMonitor
Программа NetShareMonitor дублирует «Общие папки» оснастки «Управление компьютером», преимущество ее заключается главным образом в звуковом оповещении администратора о новых подключениях и сохранении сведений о подключениях в лог.
Интерфейс NetShareMonitor представлен тремя вкладками «Активные сеансы», «Доступные файлы» и «Общие файлы», всё по аналогии с общими папками в управлении компьютером.
Программа показывает время подключения, имя хоста и пользователя, путь к ресурсу, количество активных подключений, тип подключения и статус открытых файлов.
Минус — отсутствие русского языка интерфейса, впрочем, недостаток этот несущественный, чего нельзя сказать о звуковых оповещениях. Их и впрямь лучше отключить, так как издаваемый программой сигнал настолько громкий и пронзительный, что больше похож на предупреждающую об опасности сирену, чем на простое оповещение.
На моем сервере Windows 2008 у меня есть сетевой ресурс. Я вошел на сервер с полными правами администратора. Я хотел бы знать, какие пользователи имеют активные подключения к этой папке.
Как мне найти эту информацию?
Есть два способа сделать это, если я знаю. Один ненадежен, но, вероятно, достаточно хорош для большинства сценариев. Один из них обширный, но его трудно реализовать в любом масштабе, который превышает несколько пользовательских подключений.
Путь Kinda-Sorta: Выберите Системные инструменты >> Общие папки >> Открыть файлы, чтобы увидеть, какие файлы открыты на файловом сервере. Оттуда вы можете соотнести учетные записи пользователей с открытыми файлами с общими папками, к которым они подключены.
Обширный, но сложный для масштабирования способ. Выполните действия net share [sharename] для каждой рассматриваемой общей папки, чтобы получить список пользователей, которые к ней подключены. В моем тестировании даже пользователи, у которых нет открытого файла, перечислены.
Вы также можете использовать административный инструмент Share and Storage Manager в Server 2008 и более поздних версиях вместо управления компьютером. Найдите общий ресурс в списке общих ресурсов, а затем в области действий щелкните правой кнопкой мыши «Управление сеансами». Вы увидите список сессий, включая те, которые имеют ноль открытых файлов.
Но . но . Я хочу найти конкретного пользователя, не запрашивая каждую акцию! Если у вас есть конкретный пользователь, которого вы хотите отследить, похоже, что единственным способом найти эту информацию является запрос каждого ресурса и просмотр его, чтобы найти нужного пользователя. И глазного яблока я имею в виду выход трубы на findstr или select-string . Можно экстраполировать рабочий процесс на сценарий, который перечисляет все доступные общие ресурсы, запрашивает подключенных пользователей и ищет выходные данные для рассматриваемого пользователя, но это, по-видимому, упражнение для читателя, а не то, что Microsoft включила в качестве нативной функции. ,
Предоставленная информация недостаточна для сеансов или акций. Он не показывает конкретно, какие пользователи подключены к какой акции. Я часто вижу несколько подключений к общему сетевому ресурсу, но если у пользователя нет открытого файла, я не могу сказать, кто подключен. Я могу только сказать, что есть определенное количество открытых соединений. Не у кого открыта связь. Так что Рик просто прав в этом случае.
Я вижу конкретную ситуацию, которая может существовать, когда у пользователя есть открытый сеанс, но нет открытого файла, поэтому вы не уверены, к какому конкретному общему ресурсу у него открыт призрачный сеанс. В этом сценарии я не знаю, как связать сеансы из 0 файлов с общим ресурсом, к которому они подключены.
@SimonCatlin Только что протестировал это на компьютере с Server 2008. У меня был один пользователь без открытых файлов, но он был указан как открытый сеанс. Мне пришлось запросить каждый из net share sharename общих ресурсов на сервере, но в итоге я нашел общий ресурс, к которому был подключен сеанс. Я не знаю, можно ли отменить запрос и начать с интересующего вас пользователя, а затем отследить его до общего ресурса, к которому он подключен. Может потребоваться какой-нибудь пользовательский PowerShelling.
Это очень старый вопрос, но принятый ответ пропустил один из лучших способов найти информацию. Графический интерфейс может показать, что есть «подключенные клиенты», но не отображать эти подключения в «открытых файлах». В этом случае требуется использовать WMI, чтобы найти, кто подключен к общему ресурсу.
Вот команда powershell, чтобы увидеть, кто подключен к определенному общему ресурсу, и пример выходных данных:
Слава богу, у меня было два ресурса с разными именами на одном и том же локальном пути, и это было единственное, что позволило мне сузить пользователей и ПК, используя один из двух ресурсов, от которого я хотел избавиться :)
Computer Manager не доступен так же, как в предыдущих версиях. Вы получаете «Диспетчер серверов», когда вы щелкаете правой кнопкой мыши Компьютер и выбираете «Управление». Поэтому вместо этого просто введите compmgmt.msc в поле «Поиск программ и файлов» при запуске.
Ты просто неправ. Я только что запустил 2008 R2 VM. Когда вы открываете «Управление компьютером» (compmgmt.msc) и все, что описывает Уэсли, прямо здесь, точно так же, как в 2003 году, включая открытые файлы и активные сеансы. Смотрите этот скриншот, если вы мне не верите.
Администраторы файловых серверов Windows часто сталкиваются с необходимостью принудительного закрытия файлов, открытых пользователями. Такая задача возникает при одновременной работы с одним файлом нескольких пользователей. Часто при некорректной работе ПО или неправильном завершении сессии пользователем, файлы в сетевой папке оказываются открытыми и заблокированными, и остальные пользователи не могут вносить в него изменения. В этой статье мы покажем, как получить список открытых файлов на файловом сервере, узнать какие пользователи их используют, и способы сброса этих файловых сессий.
Управление компьютером
Это наиболее простой способ мониторинга общих папок.
Откройте оснастку «Управление компьютером» командой compmgmt.msc или compmgmtlauncher и разверните в колонке слева пункт «Общие папки».
Раздел содержит три каталога: Общие ресурсы , Сеансы и Открытые файлы .
Первый каталог содержит список всех общих ресурсов на вашем компьютере, в том числе служебных. Таков, к примеру, IPC$ — ресурс совместного доступа к каналам, обеспечивающий связь между приложениями и используемый службами серверов.
Для каждого открытого ресурса выводятся сведения — количество активных подключений, тип и путь к папке, если же кликнуть по ресурсу дважды мышкой, откроется окно свойств ресурса, в котором можно установить ограничения на его использование — задать лимит на количество одновременных активных подключений, изменить права доступа и так далее.
Из окна свойств вы также можете принудительно закрыть любое подключение.
В подразделе «Сеансы» предоставляется информация о пользователях, подключенных к общему ресурсу, в частности, имя пользователя и компьютера в локальной сети, тип подключения и количество открытых файлов, время подсоединения и время простоя.
Наконец, в подразделе «Открытые файлы» выводится список всех файлов и папок, которые в данный момент открыты подключившимися к расшаренной папке пользователями. Помимо пути к ресурсу, указываются также имя работающего с ним пользователя, тип подключения и режим открытия (чтение и/или запись) .
2 способ. Просмотр открытых файлов через командную строку утилитой Openfiles.
Утилита Openfiles дает нам более широкие возможности по поиску и закрытию заблокированных файлов.
C помощью openfiles можно просмотреть список открытых файлов на сервере удаленно. Для этого открываем командную и запускаем утилиту с параметрами.
где
/Query - показывает все открытые файлы,
/s - определяет имя удаленного компьютера.
В случае, когда необходимо указать логин и пароль пользователя для подключения к удаленному компьютеру, задаются параметры: /u - логин пользователя, /p - пароль пользователя.
По-умолчанию список файлов показан в формате таблицы, но есть параметры позволяющие изменить формат вывода:
/fo csv - выводит список в формате csv с разделителем запятая;
/fo list - показывает открытые файлы в формате списка;
/fo table - формат таблицы.
Закрываем заблокированный сетевой файл.
Закрыть открытый файл можно по id сессии таким способом:
Закрыть все сетевые подключения к файлам и папкам, которые открыл пользователь BadUser:
Закрыть все файлы и директории открытые в режиме чтение/запись:
Закрыть все подключения к директории с именем "c:\myshare":
Чтобы сбросить все сессии на удаленном сервере FileServer, которые открыл пользователь domain\baduser, независимо от id сессии:
Если вы решите открыть на своем рабочем или домашнем компьютере доступ к папкам, то наверняка также захотите знать, кто и когда подключается к расшаренным вами каталогам и какие файлы в них просматривает или редактирует. Реализовать отслеживание использования общих папок в Windows не составляет особого труда, для этих целей в самой системе предусмотрена соответствующая оснастка, а еще вы можете воспользоваться сторонними решениями, например, бесплатной утилитой NetShareMonitor.
Вывести список открытых файлов на файловом сервере 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 и перезагрузить сервер. После этого в список начнут попадать файлы, открытые локальными процессами (этот режим желательно использовать только для отладки, т.к. может негативно сказаться на производительности сервера).
Как закрыть открытый файл
Чтобы закрыть открытый файл, нужно найти его в списке файлов секции 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
Читайте также: