- Управление общими ресурсами windows server 2012
- Управление открытыми файлами на файловом сервере Windows (SMB)
- Вывод списка открытых файлов в сетевой папке Windows
- Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles
- Как принудительно закрыть открытый файл в Windows?
- Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell
- Как удаленно закрыть открытые SMB файлы с помощью PowerShell?
Управление общими ресурсами windows server 2012
Все новые темы
Список форумов SYSAdmins.RU -> WINDOWS |
Автор | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
DeepPurple Новичок Зарегистрирован: 21.03.2013 |
| |||||||||||
Вернуться к началу |
| |||||||||||
Зарегистрируйтесь и реклама исчезнет! | ||||||||||||
vsslava Новичок Зарегистрирован: 15.01.2013
|
| |||||||||||
Вернуться к началу |
| |||||||||||
Леонид_33 Активный участник Зарегистрирован: 08.03.2008
|
| |||||||||||
Вернуться к началу |
| |||||||||||
vsslava Новичок Зарегистрирован: 15.01.2013
|
| |||||||||||
Вернуться к началу |
| |||||||||||
ZardoZ Новичок Зарегистрирован: 20.10.2017
|
| |||||||||||
Вернуться к началу |
| |||||||||||
Paranoya Почетный житель Зарегистрирован: 14.12.2006 Управление открытыми файлами на файловом сервере 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 Вы можете вывести список открытых файлов на сервере удаленно. Например, чтобы вывести все открытые по сети файлы на сервере 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
Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShellВ версии PowerShell в Windows Server 2012/Windows 8 появились командлеты для управления сетевыми файлами и папками на SMB сервере. Эти командлеты можно использовать чтобы удаленно закрыть открытые по сети файлы. Список открытых файлов можно получить с помощью командлета Get-SMBOpenFile. Чтобы закрыть файл (сбросить подключение), используется Close-SmbOpenFile. Для вывода полного списка открытых файлов на сервере, выполните команду: Команда возвращает ID файла, ID сессии и полное имя файла. Можно вывести список открытых файлов с именами пользователей и компьютеров (IP адресами): Можно вывести все файлы, открытые определенным пользователем: 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 Как удаленно закрыть открытые 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 . В результате вы разблокировали открытый файл. Теперь его могут открыть другие пользователи. С помощью PowerShell вы можете закрыть и разблокировать на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните: Get-SMBOpenFile -CIMSession $sessn | where <$_.ClientUserName –like "*ipivanov*">|Close-SMBOpenFile -CIMSession $sessn После того как через конвейер передали файлы на Close-SmbOpenFile необязательно снова указывать параметр -CimSession. Это лишнее. И в самой последней команде у вас два конвейера. Такая команда вообще не отработает. Спасибо, поправил ошибку! Лишний символ. Спасибо, полезный материал! А как сделать наоборот? Отобразить список папок с открытым доступом для конкретного пользователя? У Sysinternals есть утилитка AccessChk. Думаю с помощью нее проще всего получить список результирующих прав на каталоги для конкретного пользователя. Добрый день. В чём может быт проблема в случае, когда файл принудительно закрытый через консоль не закрывается на удаленном сервере? Кто-то использует этот файл. Возможно локально. Либо сразу после закрытия открывает… Идентфикатор сесии тот-же? Файл точно не открывается, поскольку после закрытия через консоль не закрывается на удаленном сервере, проверил, подключившись под другим пользователем и открыв файл на сервере. Я что-то запутался… Опишите проблему точнее, какой-то сумбур получился 🙂 Да, запутанно написал, извините. Файл находится на сервере A (файловый сервер), я захожу на сервер Б с правами пользователя и открывают файл лежащий на сервере А. Затем захожу на сервер А с правами администратора и закрываю файл открытый с правами обычного пользователя с сервера Б, используя консоль. Но файл не закрывается. Михаил Документ ms word Проверьте идентификатор сессии открытого файла. Он меняется, когда вы его отключали через консоль? Да, идентификатор меняется. Ещё есть нюанс, должен ли файл закрываться у пользователя как приложение? Поскольку я не вижу новой сессии, до тех пора пользователь не произведет манипуляций с файлом. Например, сохранит документ. Т.е. я закрываю через консоль файл, он не закрывается у пользователя, но исчезает сессия в консоли. Пользователь пересохраняет открытый файл тем самым открывая новую сессию. Тут все верно. Путь к файлу остался в приложении. Когда приложение сохраняет файл (через то же автосохранение), создается новая SMB сессия к файлу. Почему в списке файлов, путь на один и тот же файл, пишется в разном регистре ? И даже регистр может меняться у одного и того же пользователя к одному и тому же файлу, почему так происходит ? Как сделать так, чтобы этими командлетами (get-smbopenfile в частности) могли пользоваться пользователи определенной группы безопасности ? Скорее всего никак. У выполняющего команду должны быть права администратора роли File Server. Либо как вариант сделать задание в планировщике, которое запускается автоматом или по требованию и сохраняет в текстовый список открытых файлов. Нужным пользователям можно дать права на текстовый файл или запуск задания. Здравствуйте. Есть шара на сервере и пользователи часто обращаются узнать кто открыл определенный файл на шаре. Как и чем сделать так чтобы юзер сам мог посмотреть кем открыт файл? Без предоставления прав админа на сервере не знаю как это сделать. Пользователи, если хотят понят кем открыт их любымый отчет, просто открывают этот сайт, ищут в списке свой файл и определяют злодей, который держит файл открытым на RW. Здравствуйте, подскажите пожалуйста. Файловые сервер Windows Serve 2012r2 Вот прям процессы убиваются на компьютерах, где эти исполняемый файлы запушены с сетевой папке? Мне почему-то кажется, что так не получится. Здравствуйте, проясните такой вопрос: на файловом сервере 2012R2, пользователи работаю с файлами dwg(через AutoCAD). User1открывает файл с сервера и начинает в нем работать, если в это время User2 откроет этот файл то получит уведомление что файл можно открыть только для чтения. Но бывают случаи когда User2 открывает файл в котором точно работает User1 но не получает уведомления и получает права на редактирование файла. Чаще такое наблюдается когда User1 отходит на некоторое время от компьютера, обострилась ситуация когда натравили GPO «Включение заставки через 600с». Доброго дня коллеги, подскажите как реализовать задачу?Как правильно настроить доступ доменному пользователю что бы он мог подключиться через PS и закрыть файлы? Я бы посмотрел в сторону powershell just enough administration (правильный путь) или некого задания в планировщике, которое берет инфу о файлах, которые нужно закрыть из текстового файла (задания запускается из-под админа) Возможно ли применить данную команду к определённой шаре сервера. Допустим есть Шары D:\Share1 d:\share2. так вот вывести список открытых только по одной, определённой ? В общем, дочитал комментарии и увидел ответ. Выручайте знатоки, целый день бьюсь))), можно ли закрыть все фалы и папки находящиеся в глубь директории? Get-SmbOpenFile | Where-Object <$_.Path -Like «K:\Корневая\*»>| Close-SmbOpenFile -Force Спасибо за статью. А кто-нибудь сталкивался с таким? Нужно искать процесс на компьютере пользователя, которые держит открытой сетевую папку. Может быть это антивирус или какой-то сканер, а может и офисное по работает некорректно. Спасибо за статью. А как посмотреть, кто открыл файлы на терминальном сервере? |