у меня есть файл \сервер\общий ресурс\myApp\app.exe
что горстка людей бегает прямо от акции. Мне нужно время от времени обновлять этот файл, но обычно он заблокирован из-за открытых сеансов SMB.
Моя обычная процедура для подобных заблокированных файлов SMB заключается в закрытии файлов и сеансов, блокирующих их, например:
$openAppFiles = Get-SmbOpenFile | Где Path - как 'D:\Shares\myApp\*'
$appSessions = $openAppFiles | Выберите SessionID - Уникальный
Close-SmbOpenFile -FileID $openAppFiles.FileID -Force
Close-SmbSession -SessionID $appSessions.SessionID -Force
Извлечь-архивировать $newZip -Destination 'D:\Shares\myApp\' -Force
Но в последнее время я столкнулся с проблемами, когда клиент может повторно подключиться и заблокировать один или несколько файлов, которые я обновляю, в этом крошечном окне. Я могу проверить, пытаясь просто переименовать файл, например:
Переименовать элемент .\app.exe .\app.exe.bak
[Ошибка] Rename-Item: процесс не может получить доступ к файлу, поскольку он используется другим процессом.
Есть ли способ временно заблокировать клиентам доступ к этим файлам?
Я подумал о том, чтобы временно отключить общий ресурс, но мне придется сделать это в нерабочее время. Я также могу просто перезапускать его, пока он не заработает, но это также не обязательно решит проблему. Какие еще варианты можно попробовать?