- Командная строка Windows 2003
- Базовые утилиты операционной системы
- Администрирование Windows 2003 из командной строки
- Возвращаемся в DOS?
- О том, как работать в командной строке
- Какие имеются команды?
- Команды для управления операционной системой
- Команды мониторинга
- Сетевые команды
- Команды обслуживания жестких дисков
- Команды для поддержки и диагностики Active Directory
- Другие команды
- Windows PowerShell
- Дополнительные ссылки
- Командная строка при установке Windows Vista
Командная строка Windows 2003
Базовые утилиты операционной системы
Утилиты, установленные вместе с операционной системой, важнее всех прочих инструментов, описанных в данной статье. Тем не менее возможности некоторых из них малоизвестны.
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-имя и информацию о сайте для каждого из объектов.
Команды 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. Если вам знакома такая ситуация, то в командной строке нужно запустить команду:
где 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 или его аналоги. Можно применить команду
для создания отчета о записях управления доступом (access control entries (ACE)), которые были установлены на весь домен и OU-объекты в корневом домене. Допустим, пользователю по имени Barbara Seville было дано право создавать, удалять пользовательские учетные записи в OU Staff и управлять ими. На экране 2 показаны результаты работы команды Dsrevoke /report для пользователя Barbara Seville. Для удаления ее прав нужно просто заменить ключ /report на /remove. Dsrevoke сначала показывает права пользователя, так же как и в случае ключа /report. После этого необходимо подтвердить удаление, нажав Y (Yes) для удаления всех АСЕ.
Нужно иметь в виду, что эта утилита, подобно 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, появившихся в Windows 2003, является /replsummary. Эта команда обеспечивает быстрое получение суммарной информации о работоспособности на данный момент репликации на всех контроллерах домена леса. Информация отображается в формате, похожем на таблицу. Команда выполняется достаточно быстро даже в больших лесах. Можно добавить ключ /errorsonly, тем самым ограничив выводимую информацию только неисправными DC. Ключ /bridgeheads показывает подробную информацию о серверах-мостах. Команда /replsummary без дополнительных параметров выводит информацию обо всех серверах-мостах леса. Ключ /querysites позволяет задать стоимость соединения между двумя или более сайтами в лесу. Данный параметр полезен для определения оптимального маршрута с наименьшей стоимостью в лесах со сложной топологией сайтов. Многие другие параметры команды Repadmin ожидают внимания администратора. Время, потраченное на их изучение, не пропадет даром.
Администрирование Windows 2003 из командной строки
Возвращаемся в DOS?
Парадоксально, но факт: утилиты командной строки в Windows никогда не привлекали внимания ни пользователей, ни аднимистраторов, но в тоже время состав и возможности этих утилит обогащаются каждый год. В этой статье мы поговорим о командной строке в Windows 2003.
О том, как работать в командной строке
Наиболее часто используемой утилитой командной строки является сам командный интерпретатор — cmd.exe. Именно его мы запускаем, когда нам нужно поработать с командной строкой. Интерпретатор cmd пришел на замену command.com из мира DOS и Windows 9x. Понятно, что в окне командного интерпретатора нужно вводить команды. Команды выполняются. Если ты торопишься, и тебе не хочется ждать завершения первой команды, тогда можно ввести сразу несколько команд, разделив их амперсандом:
Если данную последовательность команд приходится выполнять часто, целесообразно создать командный файл — это обычный текстовый файл с расширением .cmd. Каждая команда записывается в отдельной строке, хотя это и не обязательно — можно использовать амперсанды. Иногда нужно проанализировать результат первой команды, а только потом, если результат успешен, выполнить вторую команду. Это можно реализовать с помощью двойного амперсанда:
Вторая команда будет выполнена, если код завершения первой команды равен 0 (успешное завершение). Не успел прочитать вывод программы? Тогда вывод можно передать программе more для постраничного вывода (листать вывод нужно пробелом):
Символ | используется для перенаправления стандартного вывода одной команды на стандартный ввод другой. Что будет делать с этим выводом другая программа, зависит только от нее. Для перенаправления вывода команды в файл используются символы > и >>:
В первом случае файл, если он существует, будет перезаписан, а во втором информация будет добавлена в конец файла. Для подавления вывода какой-нибудь команды можно перенаправить вывод в пустое устройство:
Для очистки «экрана» командной строки удобно использовать команду cls. Команды бывают внутренними и внешними. Внутренние команды выполняет сам cmd.exe. Внешние команды — это EXE-файлы (то есть программы) на диске. Когда мы вводим команду, cmd определяет, какая это команда. Если внутренняя, то выполняет ее сам, если команда не является внутренней, тогда cmd производит поиск исполнимого файла в текущем каталоге и по пути поиска программ (переменная окружения PATH). Просмотреть путь переменную PATH можно так:
Какие имеются команды?
Команд много и все в этой статье мы не рассмотрим. Да и вообще подробно команды рассматривать не будем. А зачем? Вводишь имя команды, пробел, слеш и вопросительный знак (параметр /?). В ответ получишь описание команды и ее параметров. Нужно просто знать, что делает та или иная команда, а уж описание прочитать проблем не составит.
Итак, все команды можно разделить на следующие группы:
- команды для работы с файловой системой
- команды для управления операционной системой
- команды мониторинга
- сетевые команды
- команды для поддержки Active Directory
- команды для обслуживания жестких дисков
- другие команды
Команды для управления операционной системой
В Unix есть очень полезная программа shutdown, с ее помощью можно не только завершить работу системы (или перезагрузить ее), но и указать время завершения работы. Аналог этой команды есть и в Windows. С ее помощью можно просто завершить работу систему, выполнить перезагрузку, завершить работу активных пользователей, перейти в режим пониженного энергопотребления и завершить сеанс без отключения компьютера. Очень полезен параметр -t, позволяющий задать в секундах таймаут операции.
К командам этой группы также относится программа taskkill, которая используется для завершения работы одного или нескольких процессов. Задать процесс можно по имени образа (имени исполнимого файла — ключ /IM) или по идентификатору процесса (ключ /pid). Например:
Вообще возможностей у этой команды очень много, например, можно завершить все процессы, которые используют определенную DLL.
Команды мониторинга
Команде taskkill, как было отмечено, нужно передать или имя образа или PID процесса. Узнать PID процесса можно с помощью команды tasklist. Также к данным командам относятся команды mem (вывод информации об использовании памяти), systeminfo (полная информация о системе) и tracerpt (отслеживает журнал событий и выводит отчет в формате CSV)
Сетевые команды
В Windows довольно много программ для диагностики и мониторинга сети, причем некоторые администраторы даже не подозревают о существовании этих команд.
Особого внимания заслуживают команды net и netstat. С помощью первой команды можно произвести много различных операций. Введи команду net без параметров. В ответ получишь список команд:
Получить справку по конкретной команде можно так:
Теперь поговорим о команде netstat. Она выводит статистику использования сети и отображает информацию о текущих соединениях. Очень удобная команда. Представим, что на твоем компьютере закрыты все приложения, которые могут обращаться к сети, а обращение к сети все равно производится, о чем свидетельствуют индикаторы в system tray. Введи команду netstat -o и узнаешь, какая программа обращается к сети (параметр -o используется для вывода PID процесса).
Команды обслуживания жестких дисков
Для проверки дисков используются команды chkdsk и chkntfs. Первая используется для проверки FAT-разделов, а вторая — для проверки NTFS-разделов. Для дефрагментации диска используется команда defrag.
Команда recover используется для восстановления файлов с поврежденных разделов, а всем известная команда format используется для форматирования дисков. Вместо команды fdisk, которая использовалась в Windows 9x, в современных версиях Windows используется программа diskpart. Данная программа позволяет разбить диск на разделы, создать логические диски, удалить логические диски, выбрать активный раздел и т.д. Если команда fdisk работала в интерактивном режиме, то diskpart в основном ориентирована на использование сценариев. Сценарии — это текстовые файлы, в которых содержатся инструкции, которые должна выполнить diskpart. Вызвать diskpart можно так:
Вот пример сценария diskpart:
Обрати внимание, как производится работа с объектами в diskpart. Сначала нужно выбрать какой-то объект (с помощью команды select): сначала мы выбираем диск (select disk). Затем нужно произвести операции с объектом. Мы производим две операции (clean и create partition). Потом мы уже выбираем другой объект — раздел (select partition) и производим операции с ним (делаем раздел активным и форматируем его).
Можно указать размер создаваемого раздела, например:
В данном случае будет создан раздел размером в 5 Гб. К данному разделу можно отнести еще две команды — diskperf, которая управляет счетчиками производительности жесткого диска, и fsutil, которая управляет поведением файловой систем. Например, с помощью fsutil можно сбросить или установить флаг тома «грязный» (dirty), а также получить информацию о файловой системе. В общем, читай man, то есть fsutil /?
Команды для поддержки и диагностики Active Directory
В Windows 2003 для управления службой каталога используются так называемые DS-утилиты:
Синтаксис всех DS-команд похож, используй /? для получения справки. Для диагностики контроллера домена (DC) используется утилита DcDiag из комплекта Support Tools. Если запустить ее без параметров, то запустится 27 тестов DC (в Windows 2000 было 22 теста).
Другие команды
Ты помнишь, как называется команда, но когда ее вводишь, получаешь сообщение, что такая команда не найдена? Тогда попробуй использовать команду where (аналог which в Unix):
Команда where появилась в Windows 2003, в Windows 2000 и Windows 2002 (она же XP) ее нет.
Для выполнения какой-то команды в строго определенное время можно использовать планировщик at. Можно задать дату запуска команды, время, интервал (например, каждый день). Программа может работать в интерактивном режиме (параметр /interactive).
Если боишься редактировать файл boot.ini в блокноте, можешь использовать программу bootcfg, которая позволит тебе избежать ошибок при редактировании этого файла. Иногда полезно опросить драйверы устройств. Для этого используется команда driverquery.
Windows PowerShell
Возможности стандартного командного интерпретатора cmd в Windows довольно скудны, особенно по сравнению с командными интепретаторами Unix — ksh, bash, csh и др. В Microsoft это тоже понимают, поэтому была разработана оболочка Monad, она же MSH, которая впоследствии была переименована в Windows PowerShell. Установить MSH можно в следующих платформах: Windows XP SP2, Windows Vista, Windows Server 2003 and Windows Server «Longhorn». Скачать PowerShell можно по адресу:
Там же можно скачать и полное руководство по PowerShell.
Оболочка PowerShell — это интерактивный командный интерпретатор. Как и cmd, в PowerShell можно создавать сценарии, позволяющие администраторам автоматизировать управление системными задачами, как на сервере, так и на других компьютерах сети. PowerShell, в отличие от cmd, который предоставляет доступ только к файловой системе, позволяет управлять всей операционной системой и ее приложениями, например, мы можем работать с реестром Windows как с обычной файловой системой. В этой статье мы рассмотрим далеко не все возможности PowerShell. Вот некоторые полезные команды, которые нужно знать, для начала работы в PowerShell:
Как и в cmd, поддерживается перенаправление ввода-вывода, например:
При запуске PowerShell автоматически запускаются следующие сценарии (если они найдены).
Сценарий — это обычный текстовый файл, содержащий команды PowerShell. Расширение у файла сценария должно быть msh. Синтаксис PowerShell похож на синтаксис любого другого языка высокого уровня. Рассмотрим несколько примеров:
Можно работать с переменными, причем поддерживаются массивы:
Перед именем переменной нужно обязательно указывать знак доллара — так PowerShell поймет, что перед ним переменная, а не значение. Нумерация элементов массива начинается с единицы. Для доступа к элементу массива используются квадратные скобки. Для добавления нового элемента в массив используется оператор +:
Кроме простых массивов поддерживаются ассоциативные массивы:
Для добавления элемента в ассоциативный массив используется вот такая конструкция:
Тип переменной выбирается автоматически, но можно установить любой тип .NET: array, bool, byte, char, char[], decimal, double, float, int, int[], long, long[], regex, single, scriptblock, string, type, xml. Тип переменной определяется в квадратных скобках в момент присваивания:
В сценариях можно использовать условные операторы if-elseif-else, switch, а также операторы циклов while, do-while, do-until, foreach. Мы рассмотрим только оператор if-elseif-else и циклы while и foreach. Конструкция if-elseif-else следующая:
Условие задается так:
переменная оператор_сравнения переменная_или_значение
Цикл while выглядит так:
$i = 0; while($i -lt 10)
Данный цикл выведет числа от 0 до 9.
Теперь рассмотрим синтаксис foreach:
Цикл foreach удобно использовать для перебора значений ассоциативного массива, например:
Сейчас рассмотрим работу с реестром. Перейти в нужный раздел можно с помощью всем знакомой команды cd:
Мы перешли в раздел HKEY_CURRENT_USER. Можно перейти в другой раздел, например, HKEY_LOCAL_MACHINE, задав его имя или сокращение (hklm). Вывести содержимое раздела можно с помощью команды dir. Чтобы просмотреть содержимое раздела используется команда get-property:
В данном случае мы выводим настройки Блокнота. Установить значение переменной в разделе можно с помощью команды set-property (следующая команда изменит шрифт Блокнота):
MSH> set-property . -property lfFaceName -value «Arial»
Дополнительные ссылки
Командная строка при установке Windows Vista
Командную строку можно вызвать даже при установке Windows Vista — для этого во время установки нужно нажать Shift + F10