विंडोज फाइल सर्वर एडमिनिस्ट्रेटर को अक्सर साझा की गई फाइलों को बंद करना पड़ता है जो एक साथ कई उपयोगकर्ताओं द्वारा खोली जाती हैं। यह आमतौर पर तब होता है जब डेस्कटॉप सॉफ़्टवेयर अपेक्षित रूप से काम नहीं करता है, उपयोगकर्ता गलत तरीके से लॉग ऑफ करता है, या जब उपयोगकर्ता ने कोई फ़ाइल खोली और उसे बंद करना भूल गया (घर गया, छुट्टी पर, आदि)। इन सभी मामलों में, साझा किए गए नेटवर्क फ़ोल्डर की फ़ाइल अभी भी खुली (और लॉक) है और अन्य उपयोगकर्ताओं द्वारा संशोधित नहीं की जा सकती है। लॉक की गई फ़ाइल को खोलने का प्रयास करते समय अन्य उपयोगकर्ता ऐसा संदेश देख सकते हैं (उपयोग किए गए एप्लिकेशन के आधार पर):The document filename is locked for editing by another user. To open a read-only copy of his document, click…
इस लेख में हम आपको दिखाएंगे कि विंडोज फाइल सर्वर पर खुली फाइलों की सूची कैसे प्राप्त करें, पता करें कि किस उपयोगकर्ता ने एक साझा फ़ोल्डर पर एक फाइल को लॉक किया है, और खुली फाइलों को अनलॉक करने के लिए फाइल सत्रों को कैसे बंद (रीसेट) करें।पी>
Windows सर्वर पर साझा नेटवर्क फ़ोल्डर पर खुली हुई फ़ाइलें देखें
आप अंतर्निहित कंप्यूटर प्रबंधन का उपयोग करके Windows फ़ाइल सर्वर पर उपयोगकर्ताओं द्वारा खोली गई फ़ाइलों की सूची प्राप्त कर सकते हैं (compmgmt.msc
) ग्राफिक स्नैप-इन।
अपने फ़ाइल सर्वर पर कंप्यूटर प्रबंधन कंसोल खोलें (या अपने कंप्यूटर पर चल रहे प्रबंधन कंसोल से दूरस्थ रूप से सर्वर से कनेक्ट करें) और सिस्टम टूल्स पर जाएं। -> साझा फ़ोल्डर -> <मजबूत> फ़ाइलें खोलें। वर्तमान एसएमबी सर्वर पर खुली फाइलों की सूची विंडो के दाईं ओर प्रदर्शित होती है। सूची में फ़ाइल का स्थानीय पथ, फ़ाइल खोलने वाले उपयोगकर्ता खाते का नाम, ताले की संख्या और फ़ाइल खोलने का तरीका (पढ़ें या लिखें+पढ़ें) शामिल हैं।
आप अंतर्निहित openfiles.exe
. का उपयोग करके खुली हुई फ़ाइलों की समान सूची प्राप्त कर सकते हैं कंसोल टूल। उदाहरण के लिए, निम्न कमांड का उपयोग करके आप खुली फ़ाइल के लिए सत्र आईडी, उपयोगकर्ता नाम और पूर्ण स्थानीय पथ प्राप्त कर सकते हैं:
openfiles /Query /fo csv |more
जब कोई उपयोगकर्ता सर्वर पर साझा नेटवर्क फ़ोल्डर में किसी फ़ोल्डर या फ़ाइल को दूरस्थ रूप से एक्सेस करता है, तो एक नया SMB सत्र बनाया जाता है। आप इन सत्र आईडी का उपयोग करके खुली फाइलों का प्रबंधन कर सकते हैं।
आप दूरस्थ सर्वर पर खुली फाइलों की सूची प्रदर्शित कर सकते हैं। उदाहरण के लिए, आपको lon-fs01 . पर साझा किए गए फ़ोल्डर में सभी खुली फ़ाइलों को सूचीबद्ध करने की आवश्यकता है होस्ट:
openfiles /Query /s lon-fs01 /fo csv
openfiles
कमांड आपको स्थानीय रूप से खोली गई फाइलों की सूची देखने की भी अनुमति देता है। इसका उपयोग करने के लिए, "वस्तुओं की सूची बनाए रखें . सक्षम करें कमांड का उपयोग करते हुए विकल्प:openfiles /local on
, और अपने सर्वर को रीबूट करें। उसके बाद, openfiles
कमांड स्थानीय प्रक्रियाओं द्वारा खोली गई फाइलों को प्रदर्शित करेगा (इस मोड का उपयोग केवल डिबगिंग उद्देश्यों के लिए करने की अनुशंसा की जाती है, क्योंकि यह सर्वर के प्रदर्शन को नकारात्मक रूप से प्रभावित कर सकता है)। कैसे पता करें कि किसी साझा फ़ोल्डर में फ़ाइल को कौन लॉक कर रहा है?
filename.docx . को खोलने (लॉक) करने वाले उपयोगकर्ता की पहचान करने के लिए दूरस्थ सर्वर lon-fs01 पर साझा नेटवर्क फ़ोल्डर पर फ़ाइल, यह आदेश चलाएँ:
openfiles /Query /s lon-fs01 /fo csv | find /i "filename.docx"
/i
कुंजी का उपयोग केस-असंवेदनशील फ़ाइल खोज करने के लिए किया जाता है। आप फ़ाइल नाम का केवल एक भाग निर्दिष्ट कर सकते हैं। उदाहरण के लिए, आपको यह पता लगाना होगा कि "sale_report" वाली XLSX फ़ाइल किसने खोली है। निम्न पाइप का प्रयोग करें:
openfiles /Query /s lon-fs01 /fo csv | find /i "sale_report"| find /i "xlsx"
बेशक आप इस फ़ाइल को कंप्यूटर प्रबंधन GUI में पा सकते हैं, लेकिन यह कम सुविधाजनक है (यह कंसोल खोज सुविधा प्रदान नहीं करता है)।
SMB शेयर पर खुली हुई फ़ाइल को बलपूर्वक कैसे बंद करें?
किसी खुली हुई फ़ाइल को बंद करने के लिए, उसे फ़ाइल खोलें . में फ़ाइलों की सूची में ढूंढें अनुभाग चुनें और फ़ाइल खोलें बंद करें . चुनें संदर्भ मेनू में।
यदि आपके फ़ाइल सर्वर पर सैकड़ों खुली फ़ाइलें हैं, तो कंसोल में विशिष्ट फ़ाइल को खोजना आसान नहीं होगा। ओपनफाइल्स . का उपयोग करना अधिक सुविधाजनक है कमांड लाइन उपकरण। जैसा कि हम पहले ही बता चुके हैं कि यह ओपन फाइल की सेशन आईडी लौटाता है। इस सत्र आईडी का उपयोग करके आप SMB कनेक्शन को रीसेट करके फ़ाइल को बलपूर्वक बंद कर सकते हैं।
सबसे पहले, आपको खुली फ़ाइल की सत्र आईडी ढूंढनी होगी:
openfiles /Query /s lon-fs01 /fo csv | find /i "farm"| find /i ".xlsx"
प्राप्त SMB सत्र आईडी का उपयोग करके उपयोगकर्ता को फ़ाइल से डिस्कनेक्ट करें:
openfiles /Disconnect /s lon-fs01 /ID 617909089
आप सभी सत्रों को बलपूर्वक रीसेट कर सकते हैं और किसी विशिष्ट उपयोगकर्ता द्वारा खोली गई सभी फ़ाइलों को अनलॉक कर सकते हैं:
openfiles /disconnect /s lon-fs01/u corp\mjenny /id *
openfiles /disconnect
का उपयोग करें कमांड या Close-SMBOpenFile
cmdlet (नीचे चर्चा की गई) बहुत सावधान। Get-SMBOpenFile:पावरशेल का उपयोग करके ओपन फाइल हैंडलर्स को ढूंढें और बंद करें
किसी SMB सर्वर पर शेयर और फ़ाइलों को प्रबंधित करने के लिए नए cmdlets Windows Server 2012/Windows 8 के लिए PowerShell संस्करण में दिखाई दिए। इन cmdlets का उपयोग किसी खुली फ़ाइल में नेटवर्क कनेक्शन को दूरस्थ रूप से बंद करने के लिए किया जा सकता है।
आप Get-SMBOpenFile . का उपयोग करके खुली हुई फ़ाइलों की सूची प्राप्त कर सकते हैं सीएमडीलेट। SmbOpenFile को बंद करें किसी दूरस्थ फ़ाइल से कनेक्शन को बंद/रीसेट करने के लिए उपयोग किया जाता है।
विंडोज एसएमबी सर्वर पर खुली फाइलों की सूची प्रदर्शित करने के लिए, कमांड चलाएँ:
Get-SMBOpenFile
आदेश फ़ाइल आईडी, सत्र आईडी और पूर्ण फ़ाइल नाम (पथ) देता है।
आप उपयोगकर्ता और कंप्यूटर नामों (आईपी पते) के साथ खुली फाइलों की एक सूची प्रदर्शित कर सकते हैं:
Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID
चुनें
आप किसी विशिष्ट उपयोगकर्ता द्वारा खोली गई सभी फाइलों को सूचीबद्ध कर सकते हैं:
Get-SMBOpenFile –ClientUserName "corp\mjenny"|select ClientComputerName,Path
या किसी विशिष्ट कंप्यूटर/सर्वर से:
Get-SMBOpenFile –ClientComputerName 192.168.1.190| select ClientUserName,Path
. चुनें
आप पैटर्न द्वारा खुली फाइलों की सूची प्रदर्शित कर सकते हैं। उदाहरण के लिए, सभी exe . को सूचीबद्ध करने के लिए साझा फ़ोल्डर से खोली गई फ़ाइलें:
Get-SmbOpenFile | Where-Object {$_.Path -Like "*.exe*"}
या विशिष्ट नाम वाली फ़ाइलें खोलें:
Get-SmbOpenFile | Where-Object {$_.Path -Like "*reports*"}
क्लोज-SmbOpenFile cmdlet का उपयोग ओपन फाइल हैंडलर को बंद करने के लिए किया जाता है। आप आईडी द्वारा फ़ाइल को बंद कर सकते हैं:
Close-SmbOpenFile -FileId 4123426323239
लेकिन आमतौर पर फ़ाइल को नाम से बंद करना अधिक सुविधाजनक होता है:
Get-SmbOpenFile | where {$_.Path –like "*annual2020.xlsx"} | Close-SmbOpenFile -Force
Out-GridView
के साथ cmdlet, आप खुली फाइलों को खोजने और बंद करने के लिए एक सरल GUI फॉर्म बना सकते हैं। निम्न स्क्रिप्ट खुली फाइलों को सूचीबद्ध करेगी। आपको उन खुली फ़ाइलों को खोजने के लिए आउट-ग्रिड व्यू तालिका में अंतर्निहित फ़िल्टर का उपयोग करना चाहिए जिनके लिए आप SMB सत्र रीसेट करना चाहते हैं। फिर आपको आवश्यक फाइलों का चयन करना होगा और ओके पर क्लिक करना होगा। परिणामस्वरूप, चयनित फ़ाइलें जबरन बंद कर दी जाएंगी।
Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru –title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -Verbose
PowerShell का उपयोग करके दूरस्थ कंप्यूटर पर खुली हुई फ़ाइलें कैसे बंद करें?
Get-SMBOpenFile
और Close-SmbOpenFile
cmdlets का उपयोग दूरस्थ रूप से खुली (लॉक की गई) फ़ाइलों को खोजने और बंद करने के लिए किया जा सकता है। सबसे पहले, आपको CIM सत्र के माध्यम से दूरस्थ Windows SMB सर्वर से कनेक्ट करने की आवश्यकता है:
$sessn = New-CIMSession –Computername lon-fs01
Enter-PSSession
या Invoke-Command
. निम्न आदेश खुली फ़ाइल के लिए एसएमबी सत्र ढूंढेगा pubs.docx और फ़ाइल सत्र बंद करें।
Get-SMBOpenFile -CIMSession $sessn | where {$_.Path –like "*pubs.docx"} | Close-SMBOpenFile -CIMSession $sessn
Y
. दबाकर फ़ाइल के बंद होने की पुष्टि करें . परिणामस्वरूप, आपने फ़ाइल को अनलॉक कर दिया है। अब अन्य उपयोगकर्ता इसे खोल सकते हैं।
किसी SMB सर्वर पर किसी फ़ाइल को बलपूर्वक बंद करने की पुष्टि को निकालने के लिए,
-Force
. का उपयोग करें चाभी। पावरशेल के साथ, आप एसएमबी सत्र बंद कर सकते हैं और उन सभी फाइलों को अनलॉक कर सकते हैं जो एक विशिष्ट उपयोगकर्ता ने खोली हैं (एक उपयोगकर्ता घर गया और खुली फाइलों को जारी नहीं किया)। उदाहरण के लिए, उपयोगकर्ता के सभी फ़ाइल सत्रों को रीसेट करने के लिए mjenny , यह कमांड चलाएँ:
Get-SMBOpenFile -CIMSession $sessn | where {$_.ClientUserName –like "*mjenny*"}|Close-SMBOpenFile -CIMSession $sessn