Eu tenho um arquivo \\server\share\myApp\app.exe
que um punhado de pessoas executa diretamente do compartilhamento. Eu preciso atualizar esse arquivo ocasionalmente, mas geralmente está bloqueado devido às sessões abertas do SMB.
Meu procedimento normal para arquivos bloqueados SMB semelhantes é fechar os arquivos e as sessões bloqueando-os como:
$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
Mas, ultimamente, tenho enfrentado problemas em que um cliente consegue se reconectar e bloquear um ou mais dos arquivos que estou atualizando nessa pequena janela. Eu posso testar tentando apenas renomear um arquivo por exemplo:
Rename-Item .\app.exe .\app.exe.bak
[Error] Rename-Item : The process cannot access the file because it is being used by another process.
Existe uma maneira de bloquear temporariamente os clientes de acessar esses arquivos?
Eu considerei desligar o compartilhamento temporariamente, mas teria que fazer isso depois do expediente. Também posso continuar executando-o novamente até que funcione, mas isso também não resolve necessariamente o problema. Que outras opções posso tentar?