Администраторите на файлови сървъри на Windows често трябва да принуждават потребителите да затварят файлове, отворени от потребителите. Такъв проблем възниква, когато няколко потребители работят едновременно с един файл. Често, ако софтуерът не работи правилно или потребителят завърши сесията правилно, файловете в мрежовата папка се отварят и заключват и други потребители не могат да правят промени в нея. В тази статия ще покажем как да получите списък с отворени файлове на файлов сървър, ще разберете кои потребители ги използват и как да нулирате тези файлови сесии..
Съдържание:
- Списък на отворени файлове на файлов сървър на Windows
- Как да определите кой потребител е отворил файла
- Как да затворите отворен файл
- Как дистанционно да затваряте отворени файлове с помощта на PowerShell
Списък на отворени файлове на файлов сървър на Windows
Списък на файлове, отворени от потребителите на файловия сървър на Windows, може да се получи с помощта на стандартната графична конзола Компютърно управление (Управление на компютъра - compmgmt.msc).
Стартирайте конзолата за управление на компютъра на файловия сървър (или се свържете към него отдалечено от конзолата от вашия компютър) и отидете на секцията Системни инструменти -> Споделени папки -> Отваряне на файлове (Помощни програми -> Споделени папки -> Файлове отворени). В дясната част на прозореца се показва списък на сървърни файлове, отворени от разстояние. Списъкът съдържа локалния път към файла, името на потребителския акаунт, броя заключвания и режима, в който файлът е отворен (четене или записване + четене).
Същият списък на отворени файлове може да се получи с помощта на вградената помощна конзола Openfiles. Например, използвайки следната команда, можете да получите идентификационния номер на сесията, потребителско име и пълен локален път до отворения файл:
Openfiles / Query / fo csv | повече
Същата команда може да бъде изпълнена отдалечено, например, имате нужда от списък с отворени файлове на файловия сървър mskfs01:
Openfiles / Query / s mskfs01 / fo csv
openfiles / local on
и рестартирайте сървъра. След това файловете, отворени от локални процеси, ще започнат да влизат в списъка (този режим е препоръчително да се използва само за отстраняване на грешки, тъй като може да повлияе негативно на работата на сървъра).Как да определите кой потребител е отворил файла
За идентифициране на потребителя, който е отворил (заключил) файл cons.adm на сървъра, изпълнете командата:
Openfiles / Query / s mskfs01 / fo csv | намери / i "cons.adm"
Естествено, можете да посочите само част от името на файла. Например, трябва да разберем кой е отворил файла xlsx, чието име е линията ферма, използваме този тръбопровод:
Openfiles / Query / s mskfs01 / fo csv | намери / i "ферма" | намери / i "xlsx"
Разбира се, можете да намерите файла в графичната конзола за управление на компютъра, но това е по-малко удобно (конзолата не предоставя възможност за търсене).
Как да затворите отворен файл
За да затворите отворен файл, трябва да го намерите в списъка с файлове в секцията Open File и да изберете „Затворете отворен файл".
Ако на файловия сървър има стотици отворени файлове, намирането им в конзолата няма да е лесно. По-удобно е да използвате помощната програма Openfiles. Както вече казахме, той връща идентификационния номер на сесията на отворения файл. Именно за този идентификационен номер на сесията файлът може да бъде принудително затворен чрез нулиране на връзката. Намерете идентификационния номер на желания файл:
Openfiles / Query / s mskfs01 / fo csv | намери / i "ферма" | намери / i ".xlsx"
Ние изключваме потребителя от него чрез получения идентификатор:
Openfiles / Disconnect / s mskfs01 / ID 67109098
Как дистанционно да затваряте отворени файлове с помощта на PowerShell
В Windows Server 2012 / Windows 8 PowerShell представи командлети за работа с топки и файлове на SMB сървър. Тези командлети могат да се използват за отдалечено нулиране на връзки към отворен файл..
Списък с отворени файлове може да се получи с помощта на командлети Get.-SMBOpenFile , и затворете файла (нулирайте връзката) с Близък SmbOpenFile.
И така, ние се свързваме с отдалечения сървър:
$ sessn = New-CIMSession -Computername mskfs01
Намерете и затворете отворения файл pubs.docx с една команда:
Get-SMBOpenFile -CIMSession $ sessn | където $ _. Path -подобен "* pubs.docx" | Close-SMBOpenFile -CIMSession $ sessn
Потвърдете затварянето на файла, като натиснете Y.
За да премахнете потвърждението за принудително затваряне на файл на сървъра, използвайте превключвателя -ForceСъщите команди могат да се използват, например, за затваряне на всички файлове, отворени от някой потребител (потребителят се прибра вкъщи и не пусна файловете). Например, за да нулирате всички файлови сесии за ipivanov, направете
Get-SMBOpenFile -CIMSession $ sessn | където $ _. ClientUserName -подобен "* ipivanov *" | Close-SMBOpenFile -CIMSession $ sessn