当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

作者:精品下载站 日期:2024-12-14 20:14:01 浏览:14 分类:玩电脑

如何查看和关闭Windows Server SMB共享中打开的文件?


Windows 文件服务器管理员通常必须强制关闭多个用户同时打开的共享文件。如果桌面软件未按预期工作、用户错误注销或用户打开文件但忘记关闭它(回家、度假等),通常会发生这种情况。在所有这些情况下,共享网络文件夹上的文件仍然处于打开状态(并锁定),并且其他用户无法修改。其他用户在尝试打开锁定文件时可能会看到这样的消息(取决于所使用的应用程序):

The document filename is locked for editing by another user. To open a read-only copy of his document, click…

在本文中,我们将向您展示如何获取 Windows 文件服务器上打开的文件列表,找出哪个用户锁定了共享文件夹上的文件,以及如何关闭(重置)文件会话以解锁打开的文件。

查看 Windows Server 上共享网络文件夹上的打开文件

您可以使用内置的计算机管理获取Windows文件服务器上用户打开的文件列表(

compmgmt.msc

) 图形管理单元。

打开文件服务器上的计算机管理控制台(或从计算机上运行的管理控制台远程连接到服务器),然后转到系统工具-> 共享文件夹-> 打开文件。 窗口右侧显示当前 SMB 服务器上打开的文件列表。该列表包含文件的本地路径、打开文件的用户帐户名称、锁定数量以及打开文件的模式(读取或写入+读取)。

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

您可以使用内置的打开文件的相同列表

openfiles.exe

控制台工具。例如,使用以下命令,您可以获得会话 ID、用户名和打开文件的完整本地路径:

openfiles /Query /fo csv |more

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

当用户远程访问服务器上共享网络文件夹中的文件夹或文件时,将创建一个新的 SMB 会话。您可以使用这些会话 ID 管理打开的文件。

您可以显示远程服务器上打开的文件的列表。例如,您需要列出 lon-fs01 主机上共享文件夹中所有打开的文件:

openfiles /Query /s lon-fs01 /fo csv

openfiles

命令还允许您查看本地打开的文件列表。要使用它,请使用以下命令启用“维护对象列表”选项:

openfiles /local on

,然后重新启动您的服务器。之后,

openfiles

命令将显示本地进程打开的文件(建议仅出于调试目的使用此模式,因为它会对服务器性能产生负面影响)。

如何找出谁锁定了共享文件夹中的文件?

要识别打开(锁定)远程服务器 lon-fs01 上共享网络文件夹上的 filename.docx 文件的用户,请运行以下命令:

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

/i

key 用于执行不区分大小写的文件搜索。

您只能指定文件名的一部分。例如,您需要找出谁打开了名称中包含“sale_report”的 XLSX 文件。使用以下管道:

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

当然你可以在计算机管理GUI中找到这个文件,但是不太方便(这个控制台不提供搜索功能)。

如何强制关闭SMB共享上打开的文件?

要关闭打开的文件,请在打开文件部分的文件列表中找到它,然后在上下文菜单中选择关闭打开文件

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

如果您的文件服务器上有数百个打开的文件,那么在控制台中找到特定文件并不容易。使用Openfiles命令行工具更方便。正如我们已经说过的,它返回打开文件的会话 ID。使用此会话 ID,您可以通过重置 SMB 连接来强制关闭文件。

首先,您需要找到打开文件的会话 ID:

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

使用收到的 SMB 会话 ID 断开用户与文件的连接:

openfiles /Disconnect /s lon-fs01 /ID 617909089

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

您可以强制重置所有会话并解锁特定用户打开的所有文件:

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

注意。强制关闭客户端在 SMB 服务器上打开的文件可能会导致未保存的数据丢失。因此,使用

openfiles /disconnect

命令或

Close-SMBOpenFile

cmdlet(下面讨论)非常仔细。

Get-SMBOpenFile:使用 PowerShell 查找并关闭打开的文件处理程序

用于管理 SMB 服务器上的共享和文件的新 cmdlet 出现在 Windows Server 2012/Windows 8 的 PowerShell 版本中。这些 cmdlet 可用于远程关闭与打开文件的网络连接。

您可以使用 Get-SMBOpenFile cmdlet 获取打开文件的列表。 Close-SmbOpenFile 用于关闭/重置与远程文件的连接。

要显示 Windows SMB 服务器上打开的文件列表,请运行以下命令:

Get-SMBOpenFile

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

该命令返回文件 ID、会话 ID 和完整文件名(路径)。
您可以显示带有用户名和计算机名(IP 地址)的打开文件列表:

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

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

您可以列出特定用户打开的所有文件:

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

或从特定计算机/服务器:

Get-SMBOpenFile -ClientComputerName 192.168.1.190| select ClientUserName,Path

您可以按模式显示打开文件的列表。例如,要列出从共享文件夹打开的所有 exe 文件:

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

或打开具有特定名称的文件:

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

Close-SmbOpenFile cmdlet 用于关闭打开的文件处理程序。您可以通过 ID 关闭文件:

Close-SmbOpenFile -FileId 4123426323239

但通常按名称关闭文件会更方便:

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

随着

Out-GridView

cmdlet,您可以制作一个简单的 GUI 表单来查找和关闭打开的文件。以下脚本将列出打开的文件。您应该使用 Out-GridView 表中的内置筛选器来查找要为其重置 SMB 会话的打开文件。然后您需要选择所需的文件并单击“确定”。结果,所选文件将被强制关闭。

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

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

如何使用 PowerShell 关闭远程计算机上打开的文件?

Get-SMBOpenFile

Close-SmbOpenFile

cmdlet 可用于远程查找和关闭打开(锁定)的文件。首先,您需要通过 CIM 会话连接到远程 Windows SMB 服务器:

$sessn = New-CIMSession -Computername lon-fs01

您还可以使用 PSRemoting cmdlet 连接到远程服务器以运行 PowerShell 命令:

Enter-PSSession

或者

Invoke-Command

以下命令将查找打开文件 pubs.docx 的 SMB 会话并关闭该文件会话。

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

按确认关闭文件

Y

。结果,您已解锁该文件。现在其他用户可以打开它。

[玩转系统] 如何查看和关闭Windows Server SMB共享中打开的文件?

要删除 SMB 服务器上强制关闭文件的确认,请使用

-Force

钥匙。

使用 PowerShell,您可以关闭 SMB 会话并解锁特定用户已打开的所有文件(用户回家后未释放打开的文件)。例如,要重置用户 mjenny 的所有文件会话,请运行以下命令:

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

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯