ฉันมีไฟล์ \เซิร์ฟเวอร์\แชร์\myApp\app.exe
ที่คนไม่กี่คนเรียกใช้โดยตรงจากส่วนแบ่ง ฉันจำเป็นต้องอัปเดตไฟล์นั้นเป็นครั้งคราว แต่โดยปกติไฟล์จะถูกล็อกเนื่องจากเซสชัน SMB ที่เปิดอยู่
ขั้นตอนปกติของฉันสำหรับไฟล์ที่ถูกล็อกด้วย SMB ที่คล้ายกันคือการปิดไฟล์และเซสชันที่ล็อกไว้เช่น:
$openAppFiles = Get-SmbOpenFile | โดยที่ Path -like 'D:\Shares\myApp\*'
$appSessions = $openAppFiles | เลือก SessionID -Unique
ปิด SmbOpenFile -FileID $openAppFiles.FileID -Force
ปิด SmbSession -SessionID $appSessions.SessionID -Force
แยกไฟล์เก็บถาวร $newZip -ปลายทาง 'D:\Shares\myApp\' -Force
แต่เมื่อเร็ว ๆ นี้ ฉันพบปัญหาที่ไคลเอ็นต์สามารถเชื่อมต่อใหม่และล็อกไฟล์ที่ฉันกำลังอัปเดตตั้งแต่หนึ่งไฟล์ขึ้นไปภายในหน้าต่างเล็ก ๆ นั้น ฉันสามารถทดสอบการพยายามเปลี่ยนชื่อไฟล์ได้ เช่น:
เปลี่ยนชื่อรายการ .\app.exe .\app.exe.bak
[ข้อผิดพลาด] เปลี่ยนชื่อรายการ: กระบวนการไม่สามารถเข้าถึงไฟล์ได้เนื่องจากกระบวนการอื่นกำลังใช้งานอยู่
มีวิธีใดบ้างที่ฉันสามารถบล็อกไคลเอนต์ชั่วคราวไม่ให้เข้าถึงไฟล์เหล่านี้
ฉันได้พิจารณาที่จะปิดการแชร์ชั่วคราว แต่ฉันคงต้องปิดหลังเวลาทำการ ฉันยังสามารถเรียกใช้ซ้ำได้จนกว่าจะใช้งานได้ แต่นั่นก็ไม่จำเป็นต้องแก้ปัญหาเช่นกัน ฉันสามารถลองตัวเลือกอื่น ๆ อะไรได้บ้าง