Как найти файлы квот каждого пользователя в Windows Server 2003?

2122
Radolino

У меня Windows Server 2003 R1 со 150 пользователями, использующими некоторые папки на диске, ограниченные квотами. Я прошу пользователей удалить старые файлы, но бывает, что они не знают, какие файлы являются их собственными, поэтому они могут удалить их. Как я могу просмотреть список с принадлежащими пользователю файлами в папке или на диске? Существует ли средство администрирования Windows, которое я могу использовать для ПК с Windows 7 или 8 или любым другим (linux?) ПК для достижения этой цели?

3
Привет, Роб, ты ищешь общее пространство, используемое на пользователя (на основе принадлежащих файлов)? Fazer87 9 лет назад 0
Привет Fazer87, нет Я ищу файлы, которые являются частью цитаты пользователя. У меня есть полные права на все, что я хочу, но я не могу помочь пользователям, которые видят, что у них нет свободного места (квота используется 100%). Обычно они не знают, какие у них файлы, и я не могу им помочь! Radolino 9 лет назад 0
Возможные дубликаты на Serverfault: http://serverfault.com/questions/195945/how-to-find-files-affecting-your-disk-quota-in-windows-server-2003-or-2008 Thomas Weller 9 лет назад 0

2 ответа на вопрос

1
harrymc

Простой способ отображения файлов и владельцев учетных записей - использовать -qпараметр dir команды в командной строке. Более избирательное отображение может быть сделано через:

dir /q | find "Administrator" 

Чтобы отобразить каждое имя папки, за которым следуют все файлы (если они есть), принадлежащие учетной записи администратора, передайте команду следующим образом:

dir /q /s | findstr "Administrator Directory" 

Другое решение - через проводник Windows: щелкните правой кнопкой мыши столбец и выберите отображение Owner.

После отображения столбца Владелец можно отсортировать файлы по владельцу. Выбор файлов отобразит общий размер выбранных файлов в нижней панели.

Можно также отображать только файлы, принадлежащие пользователю, введя в поле поиска (вверху справа) запрос owner:<user-name>, например owner:administrator.

Я попытался dir / q с моим именем пользователя, и он ничего не нашел. Также AccessEnum находит группы, а не пользователей (или я что-то упускаю). Radolino 9 лет назад 0
Попробуйте `dir / q` без findstr, чтобы увидеть точное имя владельца аккаунта. Я удалил AccessEnum из своего ответа, поскольку он отображает только файлы, права доступа которых отличаются от их родительской папки (средство безопасности). Вопрос: Что не так с Windows Explorer, щелкните правой кнопкой мыши по столбцу и выберите «Владелец». harrymc 9 лет назад 0
Хороший совет (первый столбец) Я не знал, что он существует! Но, тем не менее, мне нужно получить список с файлами для каждой учетной записи пользователя. И dir / q | find "myaccount" ничего не возвращает. Radolino 9 лет назад 0
«Dir / q» не может ничего вернуть. Не могли бы вы привести пример одного dir / q без findstr. harrymc 9 лет назад 0
оно делает. В моем корне C: \ диск, dir / q | find "username" возвращает пустое. Radolino 9 лет назад 0
Пожалуйста, введите команду "dir / q" в точности так, как написано здесь (6 символов), без добавления findstr. В противном случае вы отправляете вывод dir в другую программу под названием findstr. Findstr - это не параметр команды dir, а отдельная команда. Примечание. В проводнике Windows можно отсортировать по владельцу и выбрать несколько файлов, чтобы получить общий размер в нижней панели. Кроме того, как только отображается владелец, вы можете написать в поле поиска (вверху справа) текст `owner: administrator`, чтобы отобразить только файлы с этим владельцем. harrymc 9 лет назад 1
«владелец: администратор» - это то, что я искал, и он работает на 100%. Вы можете перейти к нужной папке, ввести этот тег в строку поиска, и вы получите все файлы пользователя одновременно! Для большинства людей, использующих Windows, это довольно странно ... Пожалуйста, измените свой ответ или перепостите, чтобы я согласился. Благодарю. Radolino 9 лет назад 0
0
Fazer87

Файлы в квоте определяются тем, кто владеет файлом. Использование квоты представляет собой сумму всех файлов, принадлежащих пользователю "домен \ имя пользователя". Имея это в виду, лучший способ узнать, кто использует пространство, кто имеет что в их квоте и т. Д., - это перечислить все файлы с указанием их размера, владельца и даты последнего использования.

Получив эту информацию и экспортировав в CSV, вы можете сгруппировать файлы в Excel, чтобы увидеть, что слишком велико, что слишком не используется, и у кого на миллион файлов больше, чем нужно.

Когда мне пришлось выполнить аналогичную задачу, я использовал следующий фрагмент VBS. Этот фрагмент скрипта запросит у вас базовую папку и восстановит все, что под ней. По завершении 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:" _ & "!\\" & 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 " & " 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 9 лет назад 0
Вы спросили: «Как я могу просмотреть список принадлежащих каждому пользователю файлов в папке или на диске?». Запустите это, и он сгенерирует вам это представление, так как оно не доступно через Windows изначально! Fazer87 9 лет назад 0
В дополнение к этому - не так уж много хороших инструментов для этого, кроме, возможно, чего-то вроде Treesize Pro - тогда как это даст именно ту информацию, которая вам нужна, в формате, с которым вы можете работать немедленно Fazer87 9 лет назад 0
Я выполнил ваш код в виде файла VBS и ничего не сообщалось. Мне нужны пути \ файлы, которые принадлежат каждому пользователю и съедают его квоту. Также я не знаю, сделает ли это размер дерева, но я попробую (пробная версия). Radolino 9 лет назад 0
Это проблема со всеми 150 пользователями, совместно использующими папку? Joey 9 лет назад 0
Это не «проблема», а требование. Представьте, что квота пользователей заполняется, и они спрашивают: «Можно мне еще места, пожалуйста». Ответ: «Нет, пожалуйста, удалите что-нибудь из ваших старых файлов». И они отвечают: «У меня нет файлов, я их удалил». Я просматриваю их квоту и вижу, что она заполнена на 95%, и я не могу им помочь, потому что это огромный сетевой диск с тысячами файлов, которыми обмениваются пользователи! Radolino 9 лет назад 1

Похожие вопросы