You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

断开网络驱动器用户连接、强制关闭占用文件的命令咨询

SMB共享文件强制关闭无效的解决方案

先排查命令执行的权限问题

  • 你通过PSSession连接服务器时,必须用本地管理员组或域管理员权限的账号启动PSSession,普通权限账号执行Close-SmbSession、Close-SmbFile会静默失败,无报错但实际不生效。
  • 执行命令前必须添加-Force参数,默认不带该参数时系统会弹出确认提示,非交互式执行场景下会直接跳过操作,参考命令如下:
    关闭指定打开的文件:Close-SmbOpenFile -Path "D:\共享目录\目标文件.docx" -Force
    批量关闭指定共享下所有打开的文件:Get-SmbOpenFile -ScopeName "你的共享名称" | Close-SmbOpenFile -Force
    断开指定用户的所有SMB连接:Get-SmbSession -ClientUserName "域名\用户名" | Close-SmbSession -Force

上述命令仍无效时的替代方案

  • 用Windows原生net file命令强制关闭,该命令兼容性更强,低版本Windows Server也可正常使用:
    首先执行net file查看所有打开的共享文件,记录对应文件的ID后,执行net file <文件ID> /close即可强制关闭。
    批量关闭指定路径下所有文件的PowerShell实现:
    net file | Select-String -Pattern "^\s*(\d+)\s+(.+?)\s+" | ForEach-Object {
        $fileId = $_.Matches.Groups[1].Value
        $filePath = $_.Matches.Groups[2].Value
        if ($filePath -like "D:\共享目录\*") {
            net file $fileId /close
        }
    }
    
  • 如果是系统级进程占用文件(比如杀毒软件正在扫描、备份软件正在读取),可以用微软官方Sysinternals套件的handle.exe定位占用进程后强制结束:
    定位占用进程命令:handle64.exe "目标文件完整路径" /accepteula,拿到进程PID后执行Stop-Process -Id <PID> -Force即可解除占用。

注意事项

  • 强制关闭文件会导致用户未保存的修改全部丢失,执行操作前建议先通过Get-SmbSession获取客户端IP和用户名,提前通知后再执行断开操作。
  • 部分办公软件会自动重连打开文件,你可以在执行关闭操作后暂时将共享权限设置为只读,更新完文件再恢复权限,避免用户重复打开占用。

内容的提问来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:57:00