Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

Quản trị viên máy chủ tệp Windows thường phải đóng các tệp được chia sẻ được mở đồng thời bởi nhiều người dùng. Điều này thường xảy ra nếu phần mềm máy tính để bàn không hoạt động như mong đợi, người dùng đăng xuất không đúng cách hoặc khi người dùng mở tệp và quên đóng tệp đó (về nhà, đi nghỉ, v.v.). Trong tất cả các trường hợp này, tệp trên thư mục mạng chia sẻ vẫn đang mở (và bị khóa) và người dùng khác không thể sửa đổi. Những người dùng khác có thể thấy thông báo như vậy khi cố gắng mở một tệp bị khóa (tùy thuộc vào ứng dụng được sử 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ẽ hướng dẫn bạn cách lấy danh sách các tệp đang mở trên máy chủ tệp Windows, tìm hiểu người dùng nào đã khóa tệp trên thư mục chia sẻ và cách đóng (đặt lại) các phiên tệp để mở khóa tệp đang mở.

Xem tệp đang mở trên thư mục mạng dùng chung trên Windows Server

Bạn có thể lấy danh sách các tệp được người dùng mở trên máy chủ tệp Windows bằng cách sử dụng Quản lý máy tính tích hợp sẵn (compmgmt.msc ) đồ họa snap-in.

Mở Bảng điều khiển quản lý máy tính trên máy chủ tệp của bạn (hoặc kết nối với máy chủ từ xa từ bảng điều khiển quản lý đang chạy trên máy tính của bạn) và đi tới Công cụ hệ thống -> Thư mục được chia sẻ -> Mở tệp. Danh sách các tệp đang mở trên máy chủ SMB hiện tại được hiển thị ở phía bên phải của cửa sổ. Danh sách chứa đường dẫn cục bộ đến tệp, tên tài khoản người dùng mở tệp, số lần khóa và chế độ tệp được mở (Đọc hoặc Ghi + Đọc).

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

Bạn có thể lấy cùng danh sách các tệp đang mở bằng cách sử dụng openfiles.exe tích hợp sẵn công cụ giao diện điều khiển. Ví dụ:bằng cách sử dụng lệnh sau, bạn có thể lấy ID phiên, tên người dùng và đường dẫn cục bộ đầy đủ đến tệp đang mở:

openfiles /Query /fo csv |more

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

Khi người dùng truy cập từ xa vào một thư mục hoặc tệp trong thư mục mạng chia sẻ trên máy chủ, một phiên SMB mới sẽ được tạo. Bạn có thể quản lý các tệp đang mở bằng các ID phiên này.

Bạn có thể hiển thị danh sách các tệp đang mở trên máy chủ từ xa. Ví dụ:bạn cần liệt kê tất cả các tệp đang mở trong các thư mục được chia sẻ trên lon-fs01 máy chủ:

openfiles /Query /s lon-fs01 /fo csv

openfiles lệnh cũng cho phép bạn xem danh sách các tệp được mở cục bộ. Để sử dụng nó, hãy bật “ Duy trì danh sách đối tượng ”Tùy chọn bằng cách sử dụng lệnh:openfiles /local on và khởi động lại máy chủ của bạn. Sau đó, openfiles lệnh sẽ hiển thị các tệp được mở bởi các quy trình cục bộ (chỉ nên sử dụng chế độ này cho mục đích gỡ lỗi, vì nó có thể ảnh hưởng tiêu cực đến hiệu suất máy chủ).

Làm cách nào để tìm ra ai đang khóa tệp trong thư mục được chia sẻ?

Để xác định người dùng đã mở (khóa) tên tệp.docx tệp trên thư mục mạng chia sẻ trên máy chủ từ xa lon-fs01, hãy chạy lệnh này:

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

/i được sử dụng để thực hiện tìm kiếm tệp không phân biệt chữ hoa chữ thường.

Bạn chỉ có thể chỉ định một phần của tên tệp. Ví dụ:bạn cần tìm xem ai đã mở tệp XLSX có chứa “sale_report” trong tên của nó. Sử dụng đường dẫn 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 thấy tệp này trong GUI quản lý máy tính, nhưng nó kém thuận tiện hơn (bảng điều khiển này không cung cấp tính năng tìm kiếm).

Làm cách nào để đóng tệp đang mở trên chia sẻ SMB?

Để đóng một tệp đang mở, hãy tìm tệp đó trong danh sách các tệp trong Mở tệp và chọn Đóng tệp mở trong menu ngữ cảnh.

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

Nếu có hàng trăm tệp đang mở trên máy chủ tệp của bạn, sẽ không dễ dàng tìm thấy tệp cụ thể trong bảng điều khiển. Sẽ thuận tiện hơn khi sử dụng Openfiles công cụ dòng lệnh. Như chúng ta đã nói, nó trả về ID phiên của tệp đang mở. Sử dụng ID phiên này, bạn có thể buộc đóng tệp bằng cách đặt lại kết nối SMB.

Trước tiên, bạn cần tìm ID phiên của tệp đang mở:

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

Ngắt kết nối người dùng khỏi tệp bằng ID phiên SMB đã nhận:

openfiles /Disconnect /s lon-fs01 /ID 617909089

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

Bạn có thể bắt buộc đặt lại tất cả các phiên và mở khóa tất cả các tệp được mở bởi một người dùng cụ thể:

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

Lưu ý . Đóng cưỡng bức tệp do khách hàng mở trên máy chủ SMB có thể dẫn đến mất dữ liệu chưa được lưu. Do đó, hãy sử dụng openfiles /disconnect hoặc lệnh Close-SMBOpenFile cmdlet (thảo luận bên dưới) rất cẩn thận.

Get-SMBOpenFile:Tìm và đóng Trình xử lý tệp đang mở bằng PowerShell

Các lệnh ghép ngắn mới để quản lý chia sẻ và tệp trên máy chủ SMB đã xuất hiện trong phiên bản PowerShell dành cho Windows Server 2012 / Windows 8. Các lệnh ghép ngắn này có thể được sử dụng để đóng từ xa các kết nối mạng với một tệp đang mở.

Bạn có thể nhận danh sách các tệp đang mở bằng cách sử dụng Get-SMBOpenFile cmdlet. Close-SmbOpenFile được sử dụng để đóng / đặt lại kết nối với tệp từ xa.

Để hiển thị danh sách các tệp đang mở trên máy chủ Windows SMB, hãy chạy lệnh:

Get-SMBOpenFile

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

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

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

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

Bạn có thể liệt kê tất cả các tệp được mở bởi một người dùng cụ thể:

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

hoặc từ một máy tính / máy chủ cụ thể:

Get-SMBOpenFile –ClientComputerName 192.168.1.190| select ClientUserName,Path

Bạn có thể hiển thị danh sách các tệp đang mở theo mẫu. Ví dụ:để liệt kê tất cả exe các tệp được mở từ thư mục được chia sẻ:

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

hoặc mở các tệp có tên cụ thể:

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

Lệnh ghép ngắn Close-SmbOpenFile được sử dụng để đóng trình xử lý tệp đang mở. Bạn có thể đóng tệp theo ID:

Close-SmbOpenFile -FileId 4123426323239

Nhưng thường thuận tiện hơn khi đóng tệp theo tên:

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

Với Out-GridView cmdlet, bạn có thể tạo một biểu mẫu GUI đơn giản để tìm và đóng các tệp đang mở. Tập lệnh sau sẽ liệt kê các tệp đang mở. Bạn nên sử dụng các bộ lọc tích hợp trong bảng Out-GridView để tìm các tệp đang mở mà bạn muốn đặt lại các phiên SMB. Sau đó, bạn cần chọn các tệp cần thiết và nhấp vào OK. Do đó, các tệp đã chọn sẽ bị đóng cưỡng bức.

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

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

Cách đóng tệp đang mở trên máy tính từ xa bằng PowerShell?

Get-SMBOpenFileClose-SmbOpenFile cmdlet có thể được sử dụng để tìm và đóng các tệp đang mở (bị khóa) từ xa. Trước tiên, bạn cần kết nối với máy chủ Windows SMB từ xa thông qua phiên CIM:

$sessn = New-CIMSession –Computername lon-fs01

Bạn cũng có thể kết nối với máy chủ từ xa để chạy các lệnh PowerShell bằng lệnh ghép ngắn PSRemoting:Enter-PSSession hoặc Invoke-Command .

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

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

Xác nhận đóng tệp bằng cách nhấn Y . Kết quả là bạn đã mở khóa tệp. Giờ đây, những người dùng khác có thể mở nó.

Làm thế nào để xem và đóng tệp đang mở trong Windows Server SMB Share?

Để xóa xác nhận buộc đóng tệp trên máy chủ SMB, hãy sử dụng -Force Chìa khóa.

Với PowerShell, bạn có thể đóng các phiên SMB và mở khóa tất cả các tệp mà một người dùng cụ thể đã mở (một người dùng đã về nhà và không giải phóng các tệp đang mở). Ví dụ:để đặt lại tất cả các phiên tệp của người dùng mjenny , chạy lệnh này:

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