Windows Server SMB Paylaşımında Açık Dosyalar Nasıl Görüntülenir ve Kapatılır?
Windows dosya sunucusu yöneticilerinin genellikle birden çok kullanıcı tarafından aynı anda açık olan paylaşılan dosyaları kapatmaya zorlaması gerekir. Bu genellikle, masaüstü yazılımı beklendiği gibi çalışmadığında, kullanıcı oturumu yanlış kapattığında veya kullanıcı bir dosyayı açıp kapatmayı unuttuğunda (eve gittiğinde, tatildeyken vb.) olur. Tüm bu durumlarda, paylaşılan ağ klasöründeki dosya hâlâ açıktır (ve kilitlidir) ve diğer kullanıcılar tarafından değiştirilemez. Diğer kullanıcılar, kilitli bir dosyayı açmaya çalışırken (kullanılan uygulamaya bağlı olarak) böyle bir mesaj görebilir:
The document filename is locked for editing by another user. To open a read-only copy of his document, click…Bu makalede size bir Windows dosya sunucusundaki açık dosyaların listesini nasıl alacağınızı, paylaşılan bir klasördeki bir dosyayı hangi kullanıcının kilitlediğini ve açık dosyaların kilidini açmak için dosya oturumlarını nasıl kapatacağınızı (sıfırlayacağınızı) göstereceğiz.
Windows Sunucusunda Paylaşılan Bir Ağ Klasöründeki Açık Dosyaları Görüntüleyin
Yerleşik Bilgisayar Yönetimini (
compmgmt.msc) grafik ek bileşeni.
Dosya sunucunuzda Bilgisayar Yönetimi konsolunu açın (veya bilgisayarınızda çalışan yönetim konsolundan sunucuya uzaktan bağlanın) ve Sistem Araçları -> Paylaşılan Klasörler -> seçeneğine gidin. Dosyaları açın. Pencerenin sağ tarafında geçerli SMB sunucusundaki açık dosyaların bir listesi görüntülenir. Liste, dosyanın yerel yolunu, dosyayı açan kullanıcı hesabının adını, kilit sayısını ve dosyanın açılma modunu (Okuma veya Yazma+Oku) içerir.
Yerleşik kullanarak aynı açık dosya listesini alabilirsiniz.
openfiles.exekonsol aracı. Örneğin, aşağıdaki komutu kullanarak Oturum Kimliğini, kullanıcı adını ve açık dosyanın tam yerel yolunu alabilirsiniz:
openfiles /Query /fo csv |moreBir kullanıcı, sunucudaki paylaşılan bir ağ klasöründeki bir klasöre veya dosyaya uzaktan eriştiğinde, yeni bir SMB oturumu oluşturulur. Bu oturum kimliklerini kullanarak açık dosyaları yönetebilirsiniz.
Uzak sunucudaki açık dosyaların bir listesini görüntüleyebilirsiniz. Örneğin, lon-fs01 ana bilgisayarındaki paylaşılan klasörlerdeki tüm açık dosyaları listelemeniz gerekir:
openfiles /Query /s lon-fs01 /fo csvBu
openfileskomutu ayrıca yerel olarak açılan dosyaların listesini görüntülemenizi sağlar. Bunu kullanmak için şu komutu kullanarak "Nesne Listesini Koru " seçeneğini etkinleştirin:
openfiles /local on, ve sunucunuzu yeniden başlatın. Bundan sonra,
openfileskomutu, yerel işlemler tarafından açılan dosyaları görüntüler (sunucu performansını olumsuz etkileyebileceğinden, bu modun yalnızca hata ayıklama amacıyla kullanılması önerilir).
Paylaşılan Bir Klasördeki Bir Dosyayı Kimin Kilitlediğini Nasıl Anlarsınız?
Uzak sunucu lon-fs01'deki paylaşılan ağ klasöründe filename.docx dosyasını açan (kilitleyen) kullanıcıyı belirlemek için şu komutu çalıştırın:
openfiles /Query /s lon-fs01 /fo csv | find /i "filename.docx"Bu
/ituşu, büyük/küçük harfe duyarlı olmayan dosya araması yapmak için kullanılır.
Dosya adının yalnızca bir bölümünü belirtebilirsiniz. Örneğin, adında "sale_report" bulunan bir XLSX dosyasını kimin açtığını bulmanız gerekir. Aşağıdaki boruyu kullanın:
openfiles /Query /s lon-fs01 /fo csv | find /i "sale_report"| find /i "xlsx"Elbette bu dosyayı Bilgisayar Yönetimi GUI'sinde bulabilirsiniz, ancak daha az kullanışlıdır (bu konsol arama özelliği sağlamaz).
Bir SMB Paylaşımındaki Açık Bir Dosyayı Zorla Kapatma?
Açık bir dosyayı kapatmak için onu Dosya Aç bölümündeki dosyalar listesinde bulun ve bağlam menüsünde Açık Dosyayı Kapat 'ı seçin.
Dosya sunucunuzda yüzlerce açık dosya varsa, belirli dosyayı konsolda bulmak kolay olmayacaktır. Dosyaları Aç komut satırı aracını kullanmak daha uygundur. Daha önce de belirttiğimiz gibi, açık dosyanın oturum kimliğini döndürür. Bu oturum kimliğini kullanarak, SMB bağlantısını sıfırlayarak dosyayı zorla kapatabilirsiniz.
Öncelikle, açık dosyanın oturum kimliğini bulmanız gerekir:
openfiles /Query /s lon-fs01 /fo csv | find /i "farm"| find /i ".xlsx"Alınan SMB oturum kimliğini kullanarak kullanıcının dosyayla bağlantısını kesin:
openfiles /Disconnect /s lon-fs01 /ID 617909089
Tüm oturumları zorla sıfırlayabilir ve belirli bir kullanıcı tarafından açılan tüm dosyaların kilidini açabilirsiniz:
openfiles /disconnect /s lon-fs01/u corp\mjenny /id *Not. SMB sunucusunda bir istemci tarafından açılan bir dosyayı zorla kapatmak, kaydedilmemiş verilerin kaybolmasına neden olabilir. Bu nedenle,
openfiles /disconnectkomut veya
Close-SMBOpenFilecmdlet (aşağıda ele alınmıştır) çok dikkatli bir şekilde.
Get-SMBOpenFile: PowerShell Kullanarak Açık Dosya İşleyicilerini Bulun ve Kapatın
Windows Server 2012/Windows 8 için PowerShell sürümünde bir SMB sunucusundaki paylaşımları ve dosyaları yönetmek için yeni cmdlet'ler ortaya çıktı. Bu cmdlet'ler, açık bir dosyaya ağ bağlantılarını uzaktan kapatmak için kullanılabilir.
Get-SMBOpenFile cmdlet'ini kullanarak açık dosyaların bir listesini alabilirsiniz. Close-SmbOpenFile, uzak bir dosyayla bağlantıyı kapatmak/sıfırlamak için kullanılır.
Windows SMB sunucusundaki açık dosyaların listesini görüntülemek için şu komutu çalıştırın:
Get-SMBOpenFileKomut, dosya kimliğini, oturum kimliğini ve tam dosya adını (yol) döndürür.
Kullanıcı ve bilgisayar adlarıyla (IP adresleri) açık dosyaların bir listesini görüntüleyebilirsiniz:
Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionIDBelirli bir kullanıcı tarafından açılan tüm dosyaları listeleyebilirsiniz:
Get-SMBOpenFile -ClientUserName "corp\mjenny"|select ClientComputerName,Pathveya belirli bir bilgisayardan/sunucudan:
Get-SMBOpenFile -ClientComputerName 192.168.1.190| select ClientUserName,PathDesene göre açık dosyaların bir listesini görüntüleyebilirsiniz. Örneğin, paylaşılan klasörden açılan tüm exe dosyalarını listelemek için:
Get-SmbOpenFile | Where-Object {$_.Path -Like "*.exe*"}veya belirli bir ada sahip dosyaları açın:
Get-SmbOpenFile | Where-Object {$_.Path -Like "*reports*"}Close-SmbOpenFile cmdlet'i açık dosya işleyicisini kapatmak için kullanılır. Dosyayı kimliğe göre kapatabilirsiniz:
Close-SmbOpenFile -FileId 4123426323239Ancak dosyayı ada göre kapatmak genellikle daha uygundur:
Get-SmbOpenFile | where {$_.Path -like "*annual2020.xlsx"} | Close-SmbOpenFile -Forceİle
Out-GridViewcmdlet ile, açık dosyaları bulmak ve kapatmak için basit bir GUI formu oluşturabilirsiniz. Aşağıdaki komut dosyası açık dosyaları listeleyecektir. SMB oturumlarını sıfırlamak istediğiniz açık dosyaları bulmak için Out-GridView tablosundaki yerleşik filtreleri kullanmalısınız. Ardından, gerekli dosyaları seçmeniz ve Tamam'ı tıklamanız gerekir. Sonuç olarak, seçilen dosyalar zorla kapatılacaktır.
Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru -title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -VerbosePowerShell Kullanılarak Uzak Bilgisayardaki Açık Dosyalar Nasıl Kapatılır?
Bu
Get-SMBOpenFileVe
Close-SmbOpenFilecmdlet'ler, açık (kilitli) dosyaları uzaktan bulmak ve kapatmak için kullanılabilir. Öncelikle, bir CIM oturumu aracılığıyla uzak bir Windows SMB sunucusuna bağlanmanız gerekir:
$sessn = New-CIMSession -Computername lon-fs01PSRemoting cmdlet'lerini kullanarak PowerShell komutlarını çalıştırmak için bir uzak sunucuya da bağlanabilirsiniz:
Enter-PSSessionveya
Invoke-CommandAşağıdaki komut, pubs.docx açık dosyası için SMB oturumunu bulacak ve dosya oturumunu kapatacaktır.
Get-SMBOpenFile -CIMSession $sessn | where {$_.Path -like "*pubs.docx"} | Close-SMBOpenFile -CIMSession $sessndüğmesine basarak dosyanın kapanmasını onaylayın.
Y. Sonuç olarak, dosyanın kilidini açtınız. Artık diğer kullanıcılar onu açabilir.
Bir SMB sunucusundaki bir dosyayı kapatmaya zorlama onayını kaldırmak için
-Forceanahtar.
PowerShell ile SMB oturumlarını kapatabilir ve belirli bir kullanıcının açtığı tüm dosyaların kilidini açabilirsiniz (bir kullanıcı eve gitti ve açık dosyaları serbest bırakmadı). Örneğin, mjenny kullanıcısının tüm dosya oturumlarını sıfırlamak için şu komutu çalıştırın:
Get-SMBOpenFile -CIMSession $sessn | where {$_.ClientUserName -like "*mjenny*"}|Close-SMBOpenFile -CIMSession $sessn






