среда, 25 апреля 2012 г.

Командная строка Windows 2003

Осваиваем командную строку Windows 2003

В среде Windows утилиты командной строки никогда не привлекают особенного внимания, в отличие от графических утилит. Хотя утилиты командной строки и обогащаются каждый год многочисленными дополнениями и улучшениями, надо хорошенько покопаться, чтобы отыскать их. Новые утилиты командной строки разрабатываются не только для Windows Server 2003, специалисты Microsoft внесли улучшения и в утилиты из состава Windows 2000 (и даже для Windows NT 4.0). Кроме того, внесены изменения и дополнения во многие утилиты, доступные с Download Center.


Заметим, что набор утилит, описанный в данной статье, далеко не полон. На сегодня утилиты нередко имеют урезанную функциональность и плохо документированы. Врезка «Утилиты командной строки — здесь!» содержит указатель на пять наиболее известных источников, в которых можно найти эти инструменты для обслуживания Windows. Далее я расскажу как об утилитах общего назначения, так и о более специализированных программах, которые помогают решать проблемы, возникающие на серверах и в Active Directory (AD). Я буду отталкиваться от происхождения и специализации инструмента. Начнем с базовых утилит, входящих в состав операционных систем, затем речь пойдет об инструментах из набора Support Tools, поставляемого на компакт-диске с операционной системой, далее рассмотрим утилиты, которые можно загрузить из Microsoft Download Center, познакомимся с инструментами Microsoft Windows Server 2003 Resource Kit и закончим некоторыми программами производства независимых компаний.
Базовые утилиты операционной системы

Утилиты, установленные вместе с операционной системой, важнее всех прочих инструментов, описанных в данной статье. Тем не менее возможности некоторых из них малоизвестны.

Ds-утилиты. Ни одна дискуссия об утилитах командной строки Windows 2003 не обходится без упоминания DS-инструментов (утилит, обеспечивающих работу службы каталога, таких как Dsquery, Dsget, Dsadd, Dsmod, Dsmove и Dsrm), которые поставляются вместе с операционной системой. Dsquery и Dsget появились вместе с Windows 2003. Их функции отчасти дублируются. Эти инструменты хорошо дополняют друг друга при использовании в определенной комбинации. Dsquery возвращает список объектов Active Directory в виде составного имени DN по заданным параметрам поиска и комбинации ключевых слов и фильтров поиска.

Dsget использует похожий метод и возвращает атрибуты заданного объекта Аctive Directory. Dsget также принимает на вход вывод команды Dsquery через команду конвейера (|), позволяя Dsget возвращать только необходимые атрибуты заданных объектов в определенном формате. На экране 1 показан вывод на экран команды Dsget, возвращающей все контроллеры домена (DC) для домена DEUBYNET. Там же показан вывод после того, как результаты работы Dsquery переданы на вход команды Dsget, возвращающей только DNS-имя и информацию о сайте для каждого из объектов.

Экран 1. Результаты работы Dsquery

Команды Dsadd (добавить объекты), Dsmod (модифицировать атрибуты существующего объекта), Dsmove (переместить объект из домена) и Dsrm *(удалить объекты) имеют синтаксис, сходный с Dsquery и Dsget.

В зависимости от сложности иерархии Active Directory, первым параметром команд Dsquery, Dsget, Dsadd и Dsmod является ключевое слово, задающее тип объекта, с которым пользователь будет взаимодействовать. Этот параметр избавляет от необходимости знать точное местоположение объекта в AD. Например, утилита AdFind (независимого производителя) для эффективного поиска сайтов требует ввести полное составное имя DN в структуре Active Directory, с которого будет начинаться поиск (cn=sites,cn=configuration,cn=yourdomain,cn=com.). Для утилиты Dsquery достаточно просто задать в командной строке: Dsquery sites для поиска сайтов. Тем не менее я убежден, что для правильного понимания структуры и, соответственно, грамотного управления Active Directory необходимо знать точное расположение этих объектов. Кроме того, базовый набор Ds-утилит не предоставляет в полном объеме тех возможностей по работе с Active Directory, которые могут потребоваться. Например, нельзя будет из командной строки изменять конфигурацию сайтов. Освоившись с DS-утилитами, переходите к AdFind и AdMod, упомянутым выше.

Where. Случалось ли вам при запуске какой-либо утилиты видеть сообщение о невозможности отыскать ее в системе и вы не могли вспомнить, где находится эта утилита? Либо это утилита из состава Support Tools, либо специфическая команда операционной системы сервера, либо данная программа загружена из Internet. Если вам знакома такая ситуация, то в командной строке нужно запустить команду:

where

где name.extension — имя файла утилиты. Эта команда укажет каталог, в котором размещается нужный инструмент. Еще интереснее выполнить найденную команду на удаленной системе, не покидая рабочего места. Для этого следует запустить команду совместно с утилитой PsExec от Sysinternals, которая описана ниже:

psexec \
%windir%system32where.exe
Support Tools

Если базовые утилиты из состава операционной системы являются фундаментом и имеют первостепенное значение, то утилиты поддержки, относящиеся к Support Tools, занимают по важности второе место. Изначально они предназначались для специалистов по поддержке продуктов Microsoft для помощи в диагностике проблем. Утилиты категории Support Tools стали базовой частью инструментария администраторов и могут быть установлены на все системы.

DcDiag. Утилиту DcDiag из комплекта Support Tools при обнаружении проблем с DС необходимо запустить в первую очередь. При запуске утилиты без указания параметров запускается 27 тестов указанного DC (на пять больше, чем в Windows 2000). Если выбрать ключ /s для задания целевого контроллера домена, можно применить ключ /a для тестирования всех контроллеров домена сайта. Если при работе не задавать границу исследуемой области, используйте ключ /e. С его помощью можно протестировать все DС в лесу. Замечу, что в большом лесу необходимо запускать утилиту с ключом /e в период наименьшей загрузки сети и контроллеров домена. Ключ /dcpromo — новая полезная возможность, позволяющая протестировать настройки серверов домена на предмет готовности стать контроллером домена. Ключ dcpromo единственный, который не работает на контроллерах домена.

DNSLint. Утилита DNSLint из набора утилит Support Tools — малоизвестный инструмент, позволяющий диагностировать наиболее общие DNS-проблемы, связанные с некорректным делегированием или некорректными или отсутствующими записями DNS для домена. Если запустить ее надлежащим образом, она проанализирует весь домен и все серверы DNS внутри него на предмет ошибок в структуре DNS. Как большинство утилит, описываемых в данной статье, DNSLint имеет собственные уникальные параметры и ключи. Во многих ситуациях нам требуется провести проверку (чаще внутреннего) домена с использованием указания ключа /s DNS server IP address, поскольку он исключает просмотр Internet-части домена. DSLint создает отчет в формате HTML в файле с именем dnslint.htm. Чтобы получить отчет в текстовом формате вместо HTML — формата по умолчанию (возможно, для того чтобы использовать сценарий для процесса вывода), можно задать параметры /t и /no_open.

DNSLint покажет всю свою мощь при использовании ключа /ad для запуска тестов AD DNS. Ключ /ad запускает серию опрашивающих Active Directory запросов о правильной регистрации GUID на контроллерах домена леса, регистрации записей типа Start of Authority (SOA), Name Server (NS) и о зарегистрированных SRV-записях. Во время использования этого параметра необходимо задать IP-адрес контроллера домена, который отвечает за корневой домен леса. Также можно задействовать ключ /s для исключения просмотра зоны InterNIC. Обычно применяется тот же IP-адрес сервера, который использовался для параметра /ad. Поэтому команда будет выглядеть так:

dnslint /ad 192.168.1.51 /s 192.168.1.51

Этот ключ проверяет записи DNS, которые представляют собой записи типа А в корневом домене. Эти записи содержат информацию о серверах DNS, ответственных за дочерние домены. Чтобы настроить DNSLint для выполнения конкретной задачи, указать DNS-серверы и запустить соответствующие тесты, можно использовать ключ /ql. Если добавить параметр autocreate после ключа /ql, то DNSLint создаст пример файла конфигурации с именем in-dnslint.txt. После этого можно будет задействовать этот файл для дальнейшей настройки.

Для тех, кто предпочитает пользоваться утилитами, загружаемыми с сайта Microsoft, был создан центр загрузки Download Center, обеспечивающий удобный единый источник централизованной загрузки приложений. На этом сайте можно найти практически все самостоятельные утилиты и инструменты, а также наборы специализированных утилит, взятые с других Web-сайтов.

Command Prompt Here. Эту утилиту я обычно ставлю на все административные консоли. Command Prompt Here — простой инструмент из пакета Microsoft PowerToys for Windows XP. Утилита добавляет в меню пункт, который позволяет запустить командную строку с любой папкой в качестве текущей.

Dsrevoke. Нередко администратор предоставляет те или иные права пользователю или группе где-нибудь в домене (при помощи Active Directory Delegation of Control), а затем ему требуется удалить эти разрешения. Поиск по всему домену и удаление разрешений может оказаться труднейшим процессом. Команда Dsrevoke в основном используется для отмены действий, выполненных через мастер делегирования управления Delegation of Control wizard или его аналоги. Можно применить команду

dsrevoke /report

для создания отчета о записях управления доступом (access control entries (ACE)), которые были установлены на весь домен и OU-объекты в корневом домене. Допустим, пользователю по имени Barbara Seville было дано право создавать, удалять пользовательские учетные записи в OU Staff и управлять ими. На экране 2 показаны результаты работы команды Dsrevoke /report для пользователя Barbara Seville. Для удаления ее прав нужно просто заменить ключ /report на /remove. Dsrevoke сначала показывает права пользователя, так же как и в случае ключа /report. После этого необходимо подтвердить удаление, нажав Y (Yes) для удаления всех АСЕ.

Экран 2. Результаты работы Dsrevoke

Нужно иметь в виду, что эта утилита, подобно Delegation of Control Wizard, работает только с разрешениями, предоставленными для OU. Если администратор явно предоставил права на объекты или контейнеры (такие, как Computers), а не разрешил наследование прав на объекты от родительской OU, ему придется удалить эти права.

DCGPOFix и Recreatedefpol. Если возникают проблемы с объектами групповой политики Group Policy Objects (GPO), используемыми в домене по умолчанию, — политиками по умолчанию для домена контроллеров домена, то можно задействовать утилиту DCGPOFix в Windows 2003 или утилиту Recreatedefpol в Windows 2000 для восстановления их состояния по умолчанию. DCGPOFix может восстановить используемую политику домена по умолчанию (/target: <имя домена>) и исходную политику контроллера домена (/target:DC) или обе одновременно (/target:both).

Чтобы использовать ключ /target:both, возможно, понадобятся и другие утилиты, которые помогают разобраться в текущем состоянии и навести порядок. При потере одной или нескольких групповых политик может возникнуть неприятная ситуация. Следует рассмотреть возможности Group Policy Management Console (GPMC) (обсуждение которых выходит за рамки статьи), поставляемой с большим набором сценариев командной строки, и возможность написания собственных сценариев. Без лишних усилий можно создать резервную копию и восстановить из нее как индивидуальный объект GPO, так и все GPO в домене. Можно копировать индивидуальные GPO и создавать отчеты по одному или по всем GPO домена в формате, понятном для GPMC. Можно даже сохранить все окружения групповых политик (GPO, настройки, ссылки, разрешения) в XML-файле при помощи сценария и восстановить их через другой сценарий.

Repadmin. Опора Microsoft Product Support Services (PSS) — Repadmin — является базой для решения проблем с репликацией. Этот инструмент имеет так много команд (59), параметров и переключателей, что ему понадобилась трехуровневая система подсказки. Ключ /oldhelp отображает синтаксис и параметры, которые были в оригинальной версии. Некоторые из них были впоследствии удалены или заменены новыми командами. Описание текущего набора команд выводится при запуске утилиты с ключом /help. При этом ключи оригинальной версии продолжают работать. Если не углубляться в изучение синтаксиса, может оказаться, что вы запустите у себя не самую полную версию и никогда не узнаете об этом. Например, многие пользователи Repadmin и не слышали об одном из основных ключей /showreps. Он все еще присутствует в Windows 2003, однако новая версия /showrepl имеет полезный ключ /errorsonly, избавляющий нас от необходимости пробираться через страницы информации «соединение-объект» для поиска ошибок.

Ключ /experthelp предоставляет возможность доступа к недокументированным параметрам Repadmin, которые из-за своих расширенных возможностей становятся потенциально опасными. Фактически ключ /experthelp сам является недокументированным. Предупреждения об осторожности при работе с этими ключами отсутствуют, поэтому запускать их рекомендуется в тестовом лесу, до тех пор пока администратор полностью не разберется с ними. На экран не будут выводиться диалоги о подтверждении действий вроде: «Вы действительно хотите удалить этот контекст именования?»

Одной из полезных возможностей команды из раздела /experthelp является команда /options. Эта команда позволяет создавать серверы глобального каталога GC. Пример такой команды приведен ниже.

repadmin /options +is_gc

Можно изменить направление действия команды, заменив плюс (+) на минус (-). Можно быстро отключить репликацию на контроллер домена с помощью команды

repadmin /options
+disable_inbound_replication

и с контроллера домена командой

repadmin /options
+disable_outbound_replication

Можно использовать ключ /options для проверки результатов любого из таких действий следующей командой:

repadmin /options

Одним из важных новых ключей команды Repadmin, появившихся в Windows 2003, является /replsummary. Эта команда обеспечивает быстрое получение суммарной информации о работоспособности на данный момент репликации на всех контроллерах домена леса. Информация отображается в формате, похожем на таблицу. Команда выполняется достаточно быстро даже в больших лесах. Можно добавить ключ /errorsonly, тем самым ограничив выводимую информацию только неисправными DC. Ключ /bridgeheads показывает подробную информацию о серверах-мостах. Команда /replsummary без дополнительных параметров выводит информацию обо всех серверах-мостах леса. Ключ /querysites позволяет задать стоимость соединения между двумя или более сайтами в лесу. Данный параметр полезен для определения оптимального маршрута с наименьшей стоимостью в лесах со сложной топологией сайтов. Многие другие параметры команды Repadmin ожидают внимания администратора. Время, потраченное на их изучение, не пропадет даром.
Resource Kit

В отличие от пакета Support Tools, пакет инструментов Resource Kit на носителе с файлами установки операционной системы отсутствует. Хотя эти утилиты менее важны, чем утилиты, входящие в состав операционной системы и инструменты Support Tools, многие из них весьма полезны и также рекомендуются для установки на каждом сервере.

ADLB. Утилита балансировки нагрузки для службы каталога из состава Resource Kit, Active Directory Load Balancing (ADLB), появилась вместе с Windows 2003. Ее выпуск обусловлен реализацией новых возможностей в этой версии операционной системы. В Windows 2000 в качестве сервера-моста выделялся только один из контроллеров домена сайта, который обеспечивал соединения объектов внутри сайта и с сайтами, с которыми он должен быть соединен по решению диспетчера проверки целостности Knowledge Consistency Checker (KCC). Если в компании достаточно много сайтов, то такая ситуация может вызвать проблемы с масштабированием. С увеличением числа обслуживаемых сервером-мостом офисов филиалов может увеличиться нагрузка на этот контроллер домена, что в свою очередь может привести к его отказу. В Windows 2003 эта проблема решена путем разрешения всем контроллерам домена сайта становиться серверами-мостами для того раздела службы каталога, который они обслуживают. Поэтому работа объектов соединений обеспечивается несколькими контроллерами домена. Операционная система на начальном этапе проводит случайный выбор серверов на эту роль, но, к сожалению, не оптимизирует распределение нагрузки на них. Поэтому если конфигурация контроллеров домена в сайте изменилась (например, в сайт добавлен новый, более мощный контроллер домена), на распределении объектов межсайтовых соединений это никак не отразится. При помощи ADLB можно проверить и провести балансировку нагрузки путем оптимизации распределения внутрисайтовых соединений среди контроллеров домена сайта. Перед тем как использовать ADLB, необходимо закончить обновление контроллеров домена до уровня Windows 2003. Поскольку утилита будет взаимодействовать со всеми контроллерами домена, ADLB не производит балансировку нагрузки на контроллерах с Windows 2000.

Проще всего запустить ADLB с ключом /server:DcName) /site:SiteName. В этом случае команда выведет отчет об объектах соединений для выбранного сайта и выполнит необходимые изменения. Сервер, который был задан, должен быть одним из контроллеров домена леса. Нужно иметь в виду, что ADLB будет производить изменения в конфигурации сайта и его серверов-мостов только тогда, когда вы используете параметр /commit. Все операции, предлагаемые утилитой ADLB (за исключением ключа /commit), не требуют повышенных привилегий, что упрощает исследования загрузки серверов-мостов.

Для некоторой оптимизации результатов балансировки можно использовать ключ /stagger. Этот параметр позволяет ADLB управлять расписанием межсайтовой репликации и изменять интервалы репликации между объектами соединений, расположенными на сервере-мосте. Эта возможность распределяет пики репликации объектов соединений и предотвращает перегрузку сервера-моста единовременной репликацией объектов. Однажды применив ADLB для настройки интервалов репликации вместо KCC, вы наверняка и в дальнейшем будете пользоваться этой утилитой для настройки репликации.

ADLB для работы необходим некий набор правил. При необходимости все эти правила можно изменить. Ключ /maxbridge определяет максимальное число объектов соединений, которые Active Directory будет изменять одновременно в процессе балансировки нагрузки серверов-мостов. Параметр /maxperserver определяет максимальное число изменений, посылаемых на контроллер домена одновременно. Этот ключ помогает предотвратить перегрузку сервера, вызванную резким увеличением количества объектов соединений. Можно создавать отчеты (только в новых версиях) с /preimbalance (до балансировки) и /postimbalance (после балансировки) для оценки загруженности до проведения балансировки и после нее. Отчеты создаются в формате разделения запятыми CSV и легко импортируются в Microsoft Excel.

ADLB может стать мощным инструментом для реализации технологии репликации. Применение этого инструмента требует тщательного тестирования перед его использованием в реальной среде. Я рекомендую начать проверку с самого большого сайта (т. е. сайта, где имеется максимальное число контроллеров домена), поскольку контроллеры домена с наибольшей вероятностью загружены неравномерно. Если обнаружилась неравномерность распределения объектов соединений, не следует думать, что это сразу надо исправлять. Нужно провести анализ производительности на сервере-мосте, имеющем наибольшее число объектов соединений. Он действительно перегружен? Если нет, то лучше оставить его (и сайт) в покое. Отложите планирование и балансировку загрузки до того момента, когда она действительно понадобится. Зачем выполнять автоматические операции вручную, если для этого нет особых причин?

Если же применить ADLB для корректировки распределения объектов соединений действительно необходимо, нужно запустить утилиту по расписанию для анализа имеющегося окружения. Если конфигурация сайта активно изменяется установкой новых контроллеров домена, добавлением и изменением связей сайтов, созданием новых сайтов и т. п, то следует запускать ADLIB два раза в день. Когда все изменения будут внесены, ADLIB можно не использовать.

GPOTool. Возможно, при работе с групповыми политиками кто-то использует только утилиты с графическим интерфейсом. Тем не менее существует несколько утилит командной строки для работы с групповыми политиками. Утилита из состава Resource Kit, GPOTool, проверяет работоспособность и целостность групповых политик. Она считывает обязательные дополнительные свойства объектов из служб Active Directory (такие, как версия, дружественное имя, GUID и данные Sysvol), сравнивает номера версий в службе каталога и номера версий на Sysvol и выполняет проверку целостности.
Утилиты независимых компаний

То, что утилита поставляется не Microsoft, вовсе не означает, что она не может оказаться полезной. Некоторые из наиболее мощных Windows-утилит разработаны и поставляются как раз независимыми фирмами.

AdFind и AdMod. AdFind и AdMod — две мощные и простые в применении свободно распространяемые утилиты, разработанные Джо Ричардсом. AdFind, подобно Dsquery, является инструментом запросов к Active Directory. Она содержит большой набор параметров и, в отличие от Dsquery, использует такие базовые параметры поиска в каталоге Lightweight Directory Access Protocol (LDAP), как base DN, filter и scope. Вообще утилита предоставляет любые мыслимые параметры (34), позволяющие строить сложные запросы. Благодаря им AdFind очень удобна и проста в применении. Особым достоинством AdFind является возможность предоставлять статистику поиска, которая выводится при использовании ключа /stats. Этот ключ сообщает об эффективности запроса и о том, какие индексы (если были) использовались запросом. При помощи этой информации можно научиться создавать эффективные LDAP-запросы и избегать ошибок.

AdMod сходна с Dsmod, но отличается расширенными возможностями. Одно из неудобств использования Dsmod связано с тем, что утилита позволяет изменять многие, но не все объекты Active Directory. Например, нельзя задействовать Dsmod для создания сайта, связи сайтов или подсетей. AdMod позволяет модифицировать любые объекты в AD. Эту утилиту можно использовать для проведения изменений на большом числе объектов. Однако такие возможности AdMod заставляют применять ее осторожно. К счастью, AdMod предварительно выводит запрос, прежде чем модифицирует более чем N объектов (по умолчанию N=10, но это число можно изменить). Если необходимо выполнить изменения большого числа объектов, можно задействовать параметр -unsafe, который отключает предупреждения перед внесением изменений. Так же как в случае с утилитами Dsquery и Dsmod, можно перенаправить поток вывода команды AdFind с помощью (|) на вход команды AdMod так, что первая утилита будет находить соответствующие объекты, а вторая — производить необходимые изменения. Такую связку можно использовать в качестве мощного инструмента в сценариях.

PsTools. Пакет PsTools, предлагаемый компанией Sysinternals, представляет собой коллекцию административных утилит командной строки, которые бывают очень полезны во многих ситуациях. Я считаю весьма полезной утилиту PsList — программу просмотра процессов и состояния памяти на удаленной машине. Никакие из известных мне утилит не позволяют так глубоко проникать внутрь процессов и памяти. Ключ -m этой утилиты показывает детали использования памяти, ключ -d выдает потоки в процессах, -t показывает дерево процессов (см. экран 3). Дерево процессов позволяет определять, какой процесс запускается из-под другого процесса (например, служебные процессы). Можно запустить утилиту с автоматическим обновлением так, что ее функции будут похожи на действие удаленного диспетчера задач Task Manager (при использовании ключа -s ). Можно указать как имя интересующего процесса, так и только его PID. Комбинируя эти параметры, можно проанализировать процесс, который вызывает утечку памяти, и наблюдать за использованием памяти этим процессом. Имеется возможность просмотреть учетные записи, использующие эти процессы, время использования и время, когда процесс завис.

Экран 3. Дерево процессов PsList

Другим удобным инструментом набора PsTools является утилита PsExec, которая позволяет выполнять процессы на удаленных машинах так, как будто вы зарегистрировались на них и работаете с их консолями. Такая функция очень удобна для запуска команд, которые не могут работать на удаленных системах. Например, если вдруг понадобилось позвонить коллеге в удаленный офис, а вы не знаете, который час в той местности, можно запросить время во временной зоне пользователя командой

psexec \ net time

На экране 4 показан результат выполнения этой команды. Если вы не знаете точно, какую команду надо использовать, или если требуется ввести несколько команд, просто наберите

psexec \ cmd.exe

Экран 4. Результаты работы PsExec

Запустится командный интерпретатор на удаленном компьютере, и, возможно, он появится как ваш собственный, запущенный на консоли. Введите Exit, чтобы выйти из удаленной сессии.

Опробовав эти утилиты в своей сети, помните, что во многих случаях их функциональность можно увеличить путем комбинации друг с другом. Существует еще много полезных утилит, доступных для Windows 2003. Можно многое узнать, если ввести в подсказке Windows 2003 строку command line reference и просмотреть список. Я надеюсь, что эта статья и описанные в ней утилиты будут помогать вам в решении административных задач.

Комментариев нет:

Отправить комментарий