Windows Server 2003 में प्रत्येक उपयोगकर्ता की कोटा फ़ाइलों को कैसे खोजें?


3

मेरे पास एक विंडोज सर्वर 2003 आर 1 है जिसमें 150 उपयोगकर्ता कोटा के द्वारा सीमित डिस्क में कुछ फ़ोल्डर्स का उपयोग करते हैं। मैं उपयोगकर्ताओं से पुरानी फ़ाइलों को हटाने के लिए कह रहा हूं, लेकिन ऐसा होता है कि वे नहीं जानते कि कौन सी फाइलें उनकी अपनी हैं ताकि वे उन्हें हटा सकें। मैं फ़ोल्डर या डिस्क में प्रति उपयोगकर्ता स्वामित्व वाली फ़ाइलों के साथ एक सूची कैसे देख सकता हूं? क्या एक विंडोज़ प्रशासनिक उपकरण है जिसे मैं इसे प्राप्त करने के लिए विंडोज 7 या 8 या जो भी (लिनक्स?) पीसी से उपयोग कर सकता हूं?


हाय रोब, क्या आप प्रति उपयोगकर्ता (स्वामित्व वाली फ़ाइलों के आधार पर) उपयोग किए गए कुल स्थान की तलाश कर रहे हैं?
Fazer87

हाय Fazer87, नहीं, मैं उन फ़ाइलों की तलाश में हूं जो उपयोगकर्ता के उद्धरण का हिस्सा हैं। मेरे पास कुछ भी करने की पूर्ण अनुमति है, लेकिन मैं उन उपयोगकर्ताओं की मदद करने का प्रबंधन नहीं कर सकता, जो यह देखते हैं कि उनके पास कोई स्थान नहीं बचा है (कोटा 100% उपयोग किया जाता है)। आमतौर पर वे नहीं जानते कि कौन सी फाइलें उनकी हैं और मैं उनकी मदद नहीं कर सकता!
Radolino

सर्वरफॉल्ट पर संभावित डुप्लिकेट: serverfault.com/questions/195945/...
Thomas Weller

जवाबों:


1

फ़ाइलों और स्वयं के खातों को प्रदर्शित करने का एक सरल तरीका है -q का पैरामीटर dir कमांड प्रॉम्प्ट में कमांड। एक अधिक चयनात्मक प्रदर्शन के माध्यम से किया जा सकता है:

dir /q | find "Administrator"

सेवा मेरे व्यवस्थापक खाते के स्वामित्व वाली सभी फ़ाइलों (यदि कोई हो) के बाद प्रत्येक फ़ोल्डर का नाम प्रदर्शित करें, निम्नानुसार कमांड को पाइप करें:

dir /q /s | findstr "Administrator Directory"

एक अन्य समाधान विंडोज एक्सप्लोरर के माध्यम से है: एक कॉलम पर राइट-क्लिक करें और प्रदर्शित करने के लिए चुनें Owner

एक बार स्वामी स्तंभ प्रदर्शित होने के बाद, कोई स्वामी द्वारा फ़ाइलों को सॉर्ट कर सकता है। फ़ाइलों का चयन नीचे के पैनल में चयनित फ़ाइलों के कुल आकार को प्रदर्शित करेगा।

कोई व्यक्ति केवल उपयोगकर्ता द्वारा स्वामित्व वाली फ़ाइलों को भी खोज बॉक्स में दर्ज करके प्रदर्शित कर सकता है (शीर्ष दाएं) क्वेरी owner:<user-name>, उदाहरण के लिए owner:administrator


मैंने अपने उपयोगकर्ता नाम के साथ dir / q करने की कोशिश की और इसे कुछ नहीं मिला। इसके अलावा AccessEnum को समूह मिलते हैं और उपयोगकर्ता नहीं (या मुझे कुछ याद आ रहा है)।
Radolino

प्रयत्न dir /q मालिक के खाते का सही नाम देखने के लिए नहीं। मैंने अपने उत्तर से AccessEnum को हटा दिया है, क्योंकि यह केवल उन फ़ाइलों को प्रदर्शित करता है जिनकी अनुमति उनके मूल फ़ोल्डर (सुरक्षा उपकरण) से भिन्न होती है। प्रश्न: विंडोज एक्सप्लोरर का उपयोग करने में क्या गलत है, एक कॉलम राइट-क्लिक करें और ओनर को प्रदर्शित करने के लिए चुनें।
harrymc

अच्छा टिप (स्तंभ एक) मुझे नहीं पता था कि यह मौजूद है! लेकिन फिर भी, मुझे प्रति उपयोगकर्ता खाते की फ़ाइलों के साथ एक सूची प्राप्त करने की आवश्यकता है। और dir / q | "myaccount" ढूंढें कुछ भी नहीं है।
Radolino

"Dir / q" के लिए कुछ भी वापस करना संभव नहीं है। क्या आप इसका एक उदाहरण दे सकते हैं dir /q अकेले बिना कोई खोज नहीं।
harrymc

1
कृपया "dir / q" कमांड दर्ज करें जैसा कि यहां लिखा गया है (6 अक्षर), बिना आधार मिलाए। अन्यथा आप जो कर रहे हैं वह डीआईआर के आउटपुट को दूसरे प्रोग्राम में पाइप कर रहा है जिसे फाइस्ट्रस्ट कहा जाता है। Findstr dir कमांड का पैरामीटर नहीं है, बल्कि एक अलग कमांड है। नोट: विंडोज एक्सप्लोरर में आप मालिक द्वारा छांट सकते हैं और नीचे के पैनल में कुल आकार प्राप्त करने के लिए कुछ फ़ाइलों का चयन कर सकते हैं। इसके अलावा, एक बार स्वामी के प्रदर्शित होने के बाद, आप खोज बॉक्स (शीर्ष दाएं) पाठ में लिख सकते हैं owner:administrator केवल उस मालिक के साथ फाइल प्रदर्शित करने के लिए।
harrymc

0

कोटा में फाइलें निर्धारित की जाती हैं कि फाइल किसके पास है। कोटा उपयोग उपयोगकर्ता "डोमेन \ उपयोगकर्ता नाम" के स्वामित्व वाली सभी फ़ाइलों का एक योग है। इसे ध्यान में रखते हुए, यह देखने का सबसे अच्छा तरीका है कि कौन अंतरिक्ष में दुर्व्यवहार कर रहा है, जिनके पास उनके कोटा आदि में क्या है, सभी फाइलों को उनके आकार, स्वामी और अंतिम उपयोग की तारीख के साथ गणना करना है।

इस जानकारी को प्राप्त करने और CSV को निर्यात करके, आप तब एक्सेल में फ़ाइलों को समूह में देख सकते हैं कि व्हाट्स बहुत बड़ा है, व्हाट्स भी अप्रयुक्त है और जिनके पास एक मिलियन से अधिक फाइलें होनी चाहिए।

जब मुझे एक समान कार्य पूरा करना था, तो मैंने वीबीएस के निम्नलिखित टुकड़े का उपयोग किया। स्क्रिप्ट का यह टुकड़ा आपको आधार फ़ोल्डर के लिए संकेत देगा और इसके तहत सब कुछ फिर से लाएगा। पूरा होने पर, एक CSV उसी फ़ोल्डर में बनाई जाती है जिसमें स्क्रिप्ट स्वयं में होती है:

on error resume next

' Flags for browse dialog
Const BIF_returnonlyfsdirs   = &H0001
Const BIF_dontgobelowdomain  = &H0002
Const BIF_statustext         = &H0004
Const BIF_returnfsancestors  = &H0008
Const BIF_editbox            = &H0010
Const BIF_validate           = &H0020
Const BIF_browseforcomputer  = &H1000
Const BIF_browseforprinter   = &H2000
Const BIF_browseincludefiles = &H4000

Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDlg = WScript.CreateObject("Shell.Application")
Set objShell = CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network") 

'Get the Source Folder
' Use the BrowseForFolder method.
Set objStartFolder = objDlg.BrowseForFolder (&H0, _
    "Please select the FOLDER to report on.", BIF_editbox + BIF_returnonlyfsdirs)

' Here we use TypeName to detect the result.
If InStr(1, TypeName(objStartFolder), "Folder") > 0 Then
    sourceFolder = objStartFolder.ParentFolder.ParseName(objStartFolder.Title).Path
Else
    MsgBox "An error has occured: Unable to read destination folder"
End if

'Ask to open the report now or just close
strMbox = MsgBox("Are youn sure you want to run the report of: " & sourceFolder & chr(13) & chr(10) & chr(13) & chr(10) & "If you continue this may take an exteneded period of time, a message will be displayed when complete, continue?",4,"Are you sure?")

if strMbox = 6 Then
    currentScriptPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "") 
    reportFile = currentScriptPath & "File_Properties_Report.csv"

    'OpenTextFile(destination, forwriting, createnew, open as Unicode) 
    Set objReportFile = objFSO.OpenTextFile(reportFile, ForWriting, True, True)

    'Add headers
    objReportFile.Write("Path, Size(kb), Type, Created, Last Accessed, Last Modified, Owner"  & chr(13) & chr(10))

    'Run though file report process
    ReportFiles sourceFolder

    'Close the file 
    objReportFile.Close

    'Compete
    strMbox = MsgBox("Report Complete")
End if

Function ReportFiles(currentFolder)
   Dim objFolder, objFile, fileCollection, folderCollection, subFolder

   Set objFolder = objFSO.GetFolder(currentFolder)
   Set fileCollection = objFolder.Files

   For Each objFile In fileCollection

        'Get File Properties
        strFilePath = objFile.Path
        strFileName = objFile.Name
        strFileSize = objFile.Size / 1024
        strFileType = objFile.Type
        strFileDateCreated = objFile.DateCreated
        strFileDateLastAccessed = objFile.DateLastAccessed
        strFileDateLastModified = objFile.DateLastModified

        'Get File owner
        strFileOwnerDomain = ""
        strFileOwner = ""

        strComputer = "."
            Set objWMIService = GetObject("winmgmts:" _
            & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

        if strFileType <> "Shortcut" or InStr(1,strFileName, "AlbumArt",1) = 0 or InStr(1,strFileName, "£",1) Then
            Set colItems = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting=""" & Replace(strFilePath, "\", "\\") & """}" & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")

            For Each objItem in colItems
                strFileOwnerDomain =  objItem.ReferencedDomainName
                strFileOwner = objItem.AccountName
            Next
        End If

        objReportFile.Write(chr(34) & strFilePath & chr(34) & ", " _
                            &  Round(strFileSize,2) & ", " _
                            & chr(34) & strFileType & chr(34) & "," _
                            & strFileDateCreated & "," _
                            & strFileDateLastAccessed & "," _
                            & strFileDateLastModified & "," _
                            & chr(34) & strFileOwnerDomain & "\" & strFileOwner & chr(34) & "," _
                            & chr(13) & chr(10))    
    Next

    'Loop for each sub folder
    Set folderCollection = objFolder.SubFolders

    For Each subFolder In folderCollection
       ReportFiles subFolder.Path
   Next
End Function

यदि आप अपने उपयोगकर्ताओं की मदद करना चाहते हैं, तो मैं इसे रात भर चलाऊंगा और फिर अगले दिन किसी उपयोगकर्ता से बात करके यह स्थापित करूंगा कि वे क्या कम / हटा सकते हैं।

यदि आप केवल एक विशिष्ट उपयोगकर्ता के लिए जानकारी चाहते हैं, तो आप हमेशा VBS को केवल एक मैच के समान लिख सकते हैं:

strTargetUser = "domain\person"
if strFileOwnerDomain & "\" & strFileOwner = strTargetUser then
objReportFile.Write(chr(34) & strFilePath & chr(34) & ", " _
                            &  Round(strFileSize,2) & ", " _
                            & chr(34) & strFileType & chr(34) & "," _
                            & strFileDateCreated & "," _
                            & strFileDateLastAccessed & "," _
                            & strFileDateLastModified & "," _
                            & chr(34) & strFileOwnerDomain & "\" & strFileOwner & chr(34) & "," _
                            & chr(13) & chr(10))  
end if

जवाब देने के लिए धन्यवाद, लेकिन यह मेरी मदद करने के लिए कैसे जा रहा है? आप "VBS" कोड के कुछ बिट्स पोस्ट कर रहे हैं? क्षमा करें, लेकिन यह विषय से थोड़ा बाहर है। मैं वास्तव में यह नहीं देख सकता कि यह कैसे मेरी मदद करेगा।
Radolino

आपने पूछा "मैं फ़ोल्डर या डिस्क में प्रति उपयोगकर्ता स्वामित्व वाली फ़ाइलों के साथ एक सूची कैसे देख सकता हूं?" इसे चलाएं और यह आपको वह दृश्य उत्पन्न करेगा, क्योंकि यह विंडोज़ के माध्यम से मूल रूप से उपलब्ध नहीं है!
Fazer87

इसके अलावा - वहाँ नहीं है कि कई अच्छे उपकरण वहाँ हैं ऐसा करने के लिए छोड़कर शायद Treesize Pro - जैसे कि यह बिल्कुल आपको एक प्रारूप में आपके द्वारा काम करने की आवश्यकता के बारे में जानकारी देगा।
Fazer87

मैंने आपके कोड को vbs फ़ाइल के रूप में निष्पादित किया और कुछ भी नहीं बताया गया। मुझे पथ \ फ़ाइलों की आवश्यकता है जो प्रत्येक उपयोगकर्ता के हैं और उसका कोटा खाते हैं। इसके अलावा, मुझे नहीं पता कि अगर वृक्षारोपण ऐसा करता है, लेकिन मैं इसे जाने (ट्रायल) दूंगा।
Radolino

1
यह एक "समस्या" नहीं बल्कि आवश्यकता है। कल्पना कीजिए कि उपयोगकर्ताओं का कोटा भर जाता है और वे पूछते हैं "क्या मेरे पास कुछ और जगह हो सकती है"। जवाब है "नहीं, कृपया अपनी पुरानी फ़ाइलों से कुछ हटाएं"। और वे जवाब देते हैं "मेरे पास कोई फाइल नहीं है, मैंने उन्हें हटा दिया है"। मैं उनके कोटे से गुजरता हूं और देखता हूं कि यह 95% भर चुका है और मैं उनकी मदद नहीं कर सकता, क्योंकि यह उपयोगकर्ताओं के बीच साझा की गई हजारों फाइलों के साथ एक विशाल नेटवर्क ड्राइव है!
Radolino
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.