暂时防止 SMB 文件在使用中被锁定 - Windows

暂时防止 SMB 文件在使用中被锁定 - Windows

我有一个文件\\server\share\myApp\app.exe,少数人直接从共享中运行。我偶尔需要更新该文件,但由于打开了 SMB 会话,它通常被锁定。

对于类似的 SMB 锁定文件,我的正常程序是关闭锁定它们的文件和会话,如下所示:

$openAppFiles = Get-SmbOpenFile | Where Path -like 'D:\Shares\myApp\*' 
$appSessions  = $openAppFiles | Select SessionID -Unique

Close-SmbOpenFile -FileID $openAppFiles.FileID -Force
Close-SmbSession -SessionID $appSessions.SessionID -Force

Extract-Archive $newZip -Destination 'D:\Shares\myApp\' -Force

但最近,我遇到了一个问题,客户端能够重新连接并锁定我正在更新的一个或多个文件,时间窗口很小。我可以尝试重命名一个文件,例如:

Rename-Item .\app.exe .\app.exe.bak

[Error] Rename-Item : The process cannot access the file because it is being used by another process.

有什么方法可以让我暂时阻止客户端访问这些文件吗?

我考虑过暂时关闭共享,但我必须在下班后再关闭。我也可以一直重新运行它直到它正常工作,但这也不一定能解决问题。我还可以尝试其他什么选项?

答案1

您可以尝试添加拒绝所有人共享的 ACL 条目:

Block-SmbShareAccess -Name AppShare -AccountName Everyone -Force

接下来,像在脚本中所做的那样断开已连接的用户的连接。

应用程序更新后,删除拒绝所有人来自 ACL 的条目:

Unblock-SmbShareAccess -Name AppShare -AccountName Everyone -Force

相关内容