Чтобы задать квоту дискового пространства каждому члену группы, достаточно одной командной строки

Механизм квотирования дискового пространства в Windows 2000 не позволяет выделять различные квоты разным группам пользователей: нельзя предоставить всем членам группы Engineers по 100 Мбайт дискового пространства, а всем членам группы Managers - по 20 Мбайт. Но с помощью двух инструментов из комплекта ресурсов Microsoft Windows 2000 Resource Kit можно выделить дисковые квоты всем членам группы, введя одну командную строку. Утилита Showmbrs.exe выдает список членов указанной группы. Чтобы получить список групп домена или локальных групп удаленной машины, следует ввести команду
showmbrs 
и
showmbrs \\\
чтобы перечислить членов локальной группы. Diskquotas.pl - сценарий на языке Perl, с помощью которого можно создавать, изменять, удалять, копировать, перечислять, импортировать и экспортировать информацию о квотах на дисковых томах. Указывая параметры, можно выделить пользователю на данном томе дисковое пространство определенного размера. Команда имеет следующий синтаксис:
diskquotas.pl -create
  : -logoname
   -setlimit
   -silent
где drive - буква диска, username - имя пользователя с префиксом домена или без него, а size - целое число, дополняемое обозначением KB, MB, GB, TB, PB или EB (Кбайт, Мбайт, Гбайт, Тбайт, петабайт или эксабайт, соответственно). Благодаря параметру -silent сценарий diskquotas.pl не запрашивает никаких дополнительных указаний, а просто выполняет заданную операцию. Если Боб - член домена Acme и ему нужно выделить дисковую квоту в 500 Мбайт на диске D локального сервера, то следует ввести команду:
diskquotas.pl -create d:
  -logoname acme\bob
  -setlimit 500MB
Если Боб уже имеет квоту, то diskquotas.pl запрашивает, следует ли заменить старую квоту новым значением. Безусловно, diskquotas.pl - полезный сценарий, но этот инструмент предназначен исключительно для работы с отдельными пользователями. Чтобы назначить квоту всем членам группы, необходимо использовать мощную команду For операционных систем Windows 2000 и Windows NT, которая позволяет получить список всех членов группы с помощью инструмента Showmbrs, а затем передать этот список в сценарий diskquotas.pl:
for /f "usebackq skip=2" %i
  in ('showmbrs ')
  do diskquotas.pl -create
  : -logoname %i
  -setlimit  -silent
Команду следует обязательно вводить одной строкой и подставлять соответствующие значения вместо groupname, drive и size. Как работает команда For? Команда
for /f "usebackq skip=2" %i
  in ('firstcommand')
  do secondcommand %i
исполняет команду с именем Firstcommand и передает выходное значение команде с именем Secondcommand. Часть /f командной строки указывает, что команда For должна выполнить синтаксический разбор (возвратить первую лексему) каждой выходной строки Firstcommand в качестве входной величины для Secondcommand. Следует отметить, что я заключил первую команду в обратные одиночные кавычки. Параметр usebackq указывает, что команда For должна воспринимать строку внутри обратных кавычек как исполняемую команду. Благодаря параметру skip=2 команда For игнорирует первые две строки выхода команды Firstcommand - первые две выходные строки Showmbrs представляют собой заголовок. Первые символы %i командной строки определяют переменную, которая используется командой For для хранения выходных данных Firstcommand. Переменной можно присвоить любое имя, с префиксом в виде знака %. Вторые символы %i указывают, что команда Secondcommand использует выходные значения Firstcommand. Чтобы запустить эту команду из пакетного файла, необходимо в обоих случаях заменить в командной строке символы %i на %%i. В целом, данная процедура - довольно неуклюжий способ назначения дисковых квот для группы. Но я надеюсь, что он все же будет полезен.

Марк Минаси - редактор Windows NT Magazine, имеет сертификат MCSE; является автором книги «Mastering Windows NT Server 4.0» (издательство Sybex). С ним можно связаться по адресу: mark@minasi.com.