Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Quản trị viên file server Windows thường phải buộc đóng file chia sẻ đang mở đồng thời bởi nhiều user. Điều này thường xảy ra nếu phần mềm desktop không hoạt động như mong đợi, user log off không đúng, hoặc khi user mở file và quên đóng nó (về nhà, nghỉ phép, v.v.). Trong tất cả trường hợp này, file trên thư mục chia sẻ mạng vẫn mở (và bị khóa) và không thể sửa đổi bởi user khác. User khác có thể thấy thông báo khi cố mở file bị khóa (tùy ứng dụng dùng): The document filename is locked for editing by another user. To open a read-only copy of his document, click…

Trong bài viết này chúng tôi sẽ chỉ cách lấy danh sách file mở trên file server Windows, tìm hiểu user nào khóa file trên shared folder, và cách đóng (reset) phiên file để unlock file mở.

Xem File Mở Trên Thư Mục Chia Sẻ Mạng Trên Windows Server

Bạn có thể lấy danh sách file được mở bởi user trên file server Windows dùng snap-in đồ họa Computer Management (compmgmt.msc) tích hợp sẵn.

Mở console Computer Management trên file server của bạn (hoặc kết nối đến server từ xa từ management console chạy trên máy tính của bạn) và đi đến System Tools -> Shared Folders -> Open files. Danh sách file mở trên SMB server hiện tại hiển thị ở bên phải cửa sổ. Danh sách chứa đường dẫn cục bộ đến file, tên tài khoản user mở file, số lượng lock và chế độ file được mở (Read hoặc Write+Read).

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Bạn có thể lấy cùng danh sách file mở dùng công cụ console tích hợp openfiles.exe. Ví dụ, dùng lệnh sau bạn có thể lấy Session ID, username và đường dẫn cục bộ đầy đủ đến file mở:

openfiles /Query /fo csv |more

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Khi user truy cập từ xa thư mục hoặc file trong shared folder mạng trên server, một phiên SMB mới được tạo. Bạn có thể quản lý file mở dùng các Session ID này.

Bạn có thể hiển thị danh sách file mở trên server từ xa. Ví dụ, bạn cần liệt kê tất cả file mở trong shared folder trên host lon-fs01:

openfiles /Query /s lon-fs01 /fo csv

Lệnh openfiles cũng cho phép xem danh sách file mở cục bộ. Để dùng nó, bật tùy chọn "Maintain Objects List" dùng lệnh: openfiles /local on, và reboot server. Sau đó, lệnh openfiles sẽ hiển thị file được mở bởi process cục bộ (khuyến nghị dùng chế độ này chỉ cho mục đích debug, vì nó có thể ảnh hưởng tiêu cực đến hiệu suất server).

Cách Tìm Ai Đang Khóa File Trong Shared Folder?

Để xác định user mở (khóa) file filename.docx trên shared folder mạng trên server từ xa lon-fs01, chạy lệnh:

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

Khóa /i dùng để tìm kiếm file không phân biệt chữ hoa/thường.

Bạn có thể chỉ định một phần tên file. Ví dụ, bạn cần tìm ai mở file XLSX chứa "sale_report" trong tên. Dùng pipe sau:

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

Tất nhiên bạn có thể tìm file này trong GUI Computer Management, nhưng kém tiện hơn (console này không cung cấp tính năng tìm kiếm).

Cách Buộc Đóng File Mở Trên SMB Share?

Để đóng file mở, tìm nó trong danh sách file ở section Open File và chọn Close Open File trong menu ngữ cảnh.

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Nếu có hàng trăm file mở trên file server của bạn, sẽ không dễ tìm file cụ thể trong console. Tiện hơn dùng công cụ dòng lệnh Openfiles. Như chúng ta đã nói, nó trả về session ID của file mở. Dùng session ID này bạn có thể buộc đóng file bằng cách reset kết nối SMB.

Trước hết, tìm session ID của file mở:

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

Ngắt kết nối user khỏi file dùng SMB session ID nhận được:

openfiles /Disconnect /s lon-fs01 /ID 617909089

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Bạn có thể buộc reset tất cả phiên và unlock tất cả file được mở bởi user cụ thể:

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

Lưu ý. Buộc đóng file được mở bởi client trên SMB server có thể dẫn đến mất dữ liệu chưa lưu. Do đó, hãy dùng lệnh openfiles /disconnect hoặc cmdlet Close-SMBOpenFile (thảo luận dưới) rất cẩn thận.

Get-SMBOpenFile: Tìm Và Đóng Open File Handler Dùng PowerShell

Cmdlet mới quản lý share và file trên SMB server xuất hiện trong phiên bản PowerShell cho Windows Server 2012/Windows 8. Các cmdlet này có thể dùng để từ xa đóng kết nối mạng đến file mở.

Bạn có thể lấy danh sách file mở dùng cmdlet Get-SMBOpenFile. Close-SmbOpenFile dùng để đóng/reset kết nối đến file từ xa.

Để hiển thị danh sách file mở trên Windows SMB server, chạy lệnh:

Get-SMBOpenFile

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Lệnh trả về file ID, session ID và tên file đầy đủ (đường dẫn).
Bạn có thể hiển thị danh sách file mở kèm tên user và máy tính (địa chỉ IP):

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

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Bạn có thể liệt kê tất cả file được mở bởi user cụ thể:

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

hoặc từ máy tính/server cụ thể:

Get-SMBOpenFile –ClientComputerName 192.168.1.190| select ClientUserName,Path

Bạn có thể hiển thị danh sách file mở theo pattern. Ví dụ, liệt kê tất cả file exe mở từ shared folder:

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

hoặc file mở với tên cụ thể:

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

Cmdlet Close-SmbOpenFile dùng để đóng open file handler. Bạn có thể đóng file bằng ID:

Close-SmbOpenFile -FileId 4123426323239

Nhưng thường tiện hơn đóng file bằng tên:

Get-SmbOpenFile | where {$_.Path –like "*annual2020.xlsx"} | Close-SmbOpenFile -Force

Với cmdlet Out-GridView, bạn có thể tạo form GUI đơn giản để tìm và đóng file mở. Script sau sẽ liệt kê file mở. Bạn nên dùng filter tích hợp trong bảng Out-GridView để tìm file mở mà bạn muốn reset phiên SMB. Sau đó chọn file cần thiết và nhấn OK. Kết quả, các file đã chọn sẽ bị buộc đóng.

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

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Cách Đóng File Mở Trên Máy Tính Từ Xa Dùng PowerShell?

Cmdlet Get-SMBOpenFile và Close-SmbOpenFile có thể dùng để từ xa tìm và đóng file mở (bị khóa). Trước hết, bạn cần kết nối đến Windows SMB server từ xa qua CIM session:

$sessn = New-CIMSession –Computername lon-fs01

Bạn cũng có thể kết nối đến server từ xa chạy lệnh PowerShell dùng cmdlet PSRemoting: Enter-PSSession hoặc Invoke-Command.

Lệnh sau sẽ tìm phiên SMB cho file mở pubs.docx và đóng phiên file.

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

Xác nhận đóng file bằng cách nhấn Y. Kết quả, bạn đã unlock file. Bây giờ user khác có thể mở nó.

Cách Xem Và Đóng File Mở Trên SMB Share Windows Server

Để bỏ xác nhận buộc đóng file trên SMB server, dùng khóa -Force.

Với PowerShell, bạn có thể đóng phiên SMB và unlock tất cả file mà user cụ thể mở (user về nhà và không giải phóng file mở). Ví dụ, để reset tất cả phiên file của user mjenny, chạy lệnh:

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