Администрирование Windows 2003 из командной строки
Денис Колисниченко (dhsilabs@mail.ru, www.dkws.org.ua)
Парадоксально, но факт: утилиты командной строки в Windows никогда не привлекали внимания ни пользователей, ни администраторов, но в тоже время состав и возможности этих утилит обогащаются каждый год.
Содержание:
- О том, как работать в командной строке
- Команды для управления операционной системой
- Команды мониторинга
- Сетевые команды
- Команды обслуживания жестких дисков
- Команды для поддержки и диагностики Active Directory
- Другие команды
- Windows PowerShell
- Врезка: Все команды Win2003 условно можно разделить на следующие группы
- Врезка: Команды для работы с файловой системой
- Боковые выносы
О том, как работать в командной строке
Наиболее часто используемой утилитой командной строки является сам командный интерпретатор cmd.exe. Именно его мы запускаем, когда нам нужно поработать с командной строкой. Интерпретатор cmd пришел на замену command.com из мира DOS и Windows 9x.
Когда торопишься, или просто не хочется ждать завершения первой команды, можно ввести сразу несколько команд, разделив их амперсандом:
команда1 && команда2 & ... & командаN
Если данную последовательность команд приходится часто выполнять, целесообразно создать командный файл — обычный текстовый файл с расширением ".cmd". Каждая команда записывается в отдельной строке, хотя это и не обязательно — можно использовать амперсанды.
Иногда нужно проанализировать результат первой команды, а только потом, если результат успешен, выполнить вторую команду. Это можно реализовать с помощью двойного амперсанда:
команда1 && команда2
Вторая команда будет выполнена, если код завершения первой команды равен 0 (успешное завершение).
Не успел прочитать, что написала тебе программа? Тогда вывод можно передать программе more для постраничного просмотра (листать нужно пробелом):
команда | more
Символ | используется для перенаправления стандартного вывода одной команды на стандартный ввод другой. Что будет делать с этим выводом другая программа, зависит только от нее.
Для перенаправления вывода команды в файл используются символы > и >>:
команда > файл команда >> файл
В первом случае файл, если он существует, будет перезаписан, а во втором информация будет добавлена в конец файла. Для подавления вывода команды можно перенаправить вывод в пустое устройство:
команда > NUL
Для очистки экрана командной строки удобно использовать команду cls.
Команды бывают внутренними и внешними. Внутренние команды выполняет сам cmd.exe. Внешние команды — обычные исполняемые EXE-файлы на диске. Когда мы вводим команду, cmd определяет, что это за команда. Если внутренняя, то выполняет ее сам, если внешняя, тогда cmd производит поиск исполняемого файла в текущем каталоге и по пути поиска программ (переменная окружения PATH). Просмотреть содержимое переменной PATH можно так:
echo %PATH%
Команды для управления операционной системой
В Unix есть очень полезная программа shutdown, с ее помощью можно не только завершить работу системы (или перезагрузить ее), но и указать время завершения работы. Аналог этой команды есть и в Windows. С ее помощью можно просто завершить работу системы, выполнить перезагрузку, завершить работу активных пользователей, перейти в режим пониженного энергопотребления и завершить сеанс без отключения компьютера. Очень полезен параметр ′-t′, позволяющий задать в секундах таймаут операции.
К командам этой группы также относится программа taskkill, которая используется для завершения работы одного или нескольких процессов. Задать процесс можно по имени образа (имени исполняемого файла — ключ /IM) или по идентификатору процесса (ключ /pid). Например:
taskkill /IM notepad.exe
Вообще говоря, возможностей у этой команды очень много, например, можно завершить все процессы, которые используют определенную DLL.
Команде taskkill, как было отмечено, нужно передать имя образа или PID процесса. Узнать PID процесса можно с помощью команды tasklist.
Также к командам мониторинга можно отнести: mem (вывод информации об использовании памяти), systeminfo (полная информация о системе) и tracerpt (отслеживание журнала событий с возможностью вывода отчета в формате CSV).
В Windows довольно много программ для диагностики и мониторинга сети, причем некоторые администраторы даже не подозревают о существовании этих команд.
- arp — управление ARP-таблицей
- ping — отправляет ICMP-пакеты на указанный узел для проверки доступности узла.
- ping6 — версия ping для протокола IPv6
- tracert — трассировка маршрута к указанному узлу
- tracert6 — версия tracert для протокола IPv6
- pathping — усовершенствованная версия tracert
- net — управляет сетью из командной строки
- nskookup — позволяет просматривать записи DNS-сервера
- netstat — вывод информации о сети
- ipconfig — вывод информации о настройках протокола IP
- route — вывод и изменение таблицы маршрутизации
- netsh (routemon) — управление маршрутизатором
Особого внимания заслуживают команды net и netstat. С помощью первой команды можно произвести много различных операций. Введи команду net без параметров. В ответ получишь список команд:
- accounts — используется для обновления базы данных регистрационных записей и изменения параметров входа в сеть
- computer — добавляет или удаляет компьютеры из базы данных домена NT
- config — выводит информацию о службах сервера или рабочей станции
- continue — активизирует службу, ранее приостановленную с помощью команды «net pause»
- file — используется для установки и снятия блокировки с совместно используемого файла, а также для вывода списка блокировок
- group — вывод информации о глобальных группах сервера, также используется для изменения глобальных групп
- localgroup — управляет локальными группами на локальном компьютере
- name — управляет псевдонимами этого компьютера
- pause — приостанавливает выполнение заданной службы, продолжить работу службы можно с помощью команды «net continue»
- print — управляет очередью печати
- send — отправляет короткое сообщение пользователям (или конкретному пользователю) сети
- session — управляет сеансами связи этого компьютера с другими компьютерами
- share — разрешает (или запрещает) использовать ресурсы этого компьютера другим компьютерам сети
- start — запускает остановленную сетевую службу
- stop — останавливает службу
- statistics — выводит журнал статистики для локальной службы рабочей станции или сервера
- time — синхронизирует время этого компьютера с временем другого компьютера сети
- use — используется для подключения общих ресурсов другого компьютера сети
- user — создает и изменяет учетные записи пользователя, используется только на сервере
- view — выводит список общих ресурсов этого компьютера
Получить справку по конкретной команде можно так:
net help имя_команды
Теперь поговорим о команде netstat. Она выводит статистику использования сети и отображает информацию о текущих соединениях. Представим, что на твоем компьютере закрыты все приложения, которые могут обращаться к сети, а обращение к сети все равно происходит, о чем свидетельствуют индикаторы в system tray. Введи команду «netstat -o» и узнаешь, какая программа обращается к сети (параметр ‘-o’ используется для вывода PID процесса).
Команды обслуживания жестких дисков
Для проверки дисков используются команды chkdsk (проверка FAT-разделов) и chkntfs (проверка NTFS-разделов), для дефрагментации — defrag. Команда recover используется для восстановления файлов с поврежденных разделов, а всем известная команда format — для форматирования дисков.
Вместо команды fdisk, которая использовалась в Windows 9x, в современных версиях Windows используется diskpart. Данная программа позволяет разбить диск на разделы, создать/удалить логические диски, выбрать активный раздел и т.д. Если команда fdisk работала в интерактивном режиме, то diskpart в основном ориентирована на использование в сценариях. Сценарии — это текстовые файлы с инструкциями, которые должна выполнить diskpart. Вызвать diskpart можно так:
diskpart /s <имя_сценария>
Пример сценария diskpart
select disk 0 clean create partition primary select partition 1 assign letter=c: active format exit
Обрати внимание, как здесь производится работа с объектами. Сначала с помощью команды select мы выбираем диск (select disk). Затем мы производим две операции (clean и create partition). Далее выбираем другой объект — раздел (select partition) и производим операции с ним (делаем раздел активным и форматируем его).
Можно указать размер (в данном случае 5 Гб) создаваемого раздела, например:
create partition primary size=5000
К данному разделу можно отнести еще две команды — diskperf, которая управляет счетчиками производительности жесткого диска, и fsutil, она управляет поведением файловой систем. Например, с помощью fsutil можно сбросить или установить флаг тома «грязный» (dirty), а также получить информацию о файловой системе.
Команды для поддержки и диагностики Active Directory
В Windows 2003 для управления службой каталога используются так называемые DS-утилиты:
- dsquery — выводит список объектов Active Directory по заданным параметрам поиска
- dsget — возвращает атрибуты заданного объекта Active Directory, может принимать на стандартный ввод стандартный вывод команды dsquery
- dsadd — добавляет один или несколько объектов ActiveDirectory
- dsmod — модифицирует атрибуты существующего объекта
- dsmove — перемещает объект из одного домена в другой
- dsrm — удаляет один или несколько объектов
Синтаксис всех DS-команд похож, используй /? для получения справки.
Для диагностики контроллера домена (DC) используется утилита DcDiag из комплекта Support Tools. Если запустить ее без параметров, то запустится 27 тестов DC (к слову, в Windows 2000 было 22 теста).
Для выполнения заданной команды в строго определенное время можно использовать планировщик at. Есть возможность задать дату запуска команды, время, интервал (например, каждый день). Программа может работать в интерактивном режиме (параметр /interactive).
Если боишься редактировать файл boot.ini в блокноте, воспользуйся программой bootcfg, которая позволяет избежать ошибок при редактировании этого файла.
Иногда полезно опросить драйверы устройств. Для этого используется команда driverquery.
Возможности стандартного командного интерпретатора cmd в Windows довольно скудны, особенно по сравнению с командными интерпретаторами Unix — ksh, bash, zsh. В Microsoft это тоже понимают, поэтому была разработана оболочка Monad, она же MSH, которая впоследствии была переименована в Windows PowerShell. Установить MSH можно в следующих платформах: Windows XP SP2, Windows Vista, Windows Server 2003 and Windows Server Longhorn. Скачать PowerShell можно по адресу: . Там же можно скачать и полное руководство по PowerShell.
Оболочка PowerShell — это интерактивный командный интерпретатор, с его помощью можно создавать сценарии, позволяющие администраторам автоматизировать управление системными задачами, как на сервере, так и на других компьютерах сети. PowerShell, в отличие от cmd, который предоставляет доступ только к файловой системе, позволяет управлять всей операционной системой и ее приложениями, например, мы можем работать с реестром Windows, как с обычной файловой системой. Вот некоторые полезные команды, которые нужно знать, для начала работы в PowerShell:
- Get-Command — получить список доступных команд
- Get-Help — получить справку по указанной команде
- Get-Drive — получить список дисков
- Set-Location — изменить текущее местоположение (аналог команды cd в cmd)
- Set-Alias — создать псевдоним для команды
- Get-Date — вывести дату
Как и в cmd, поддерживается перенаправление ввода-вывода, например:
Get-Date > current-date.txt
При запуске PowerShell автоматически запускаются следующие сценарии (если они найдены).
DaS\All Users\Documents\Msh\profile.msh DaS\All Users\Documents\Msh\Microsoft.Management.Automation.msh_profile.msh $HOME\My Documents\msh\profile.msh $HOME\My Documents\msh\Microsoft.Management.Automation.msh_profile.msh
Сценарий — это обычный текстовый файл, содержащий команды PowerShell. Расширение у файла сценария должно быть msh. Синтаксис PowerShell похож на синтаксис любого другого языка высокого уровня. Рассмотрим несколько примеров:
MSH> 5*5 25 MSH> "Конкатенация " + "строк" Конкатенация строк MSH> (Get-Date).year * 5 10035
Можно работать с переменными, причем поддерживаются массивы:
MSH> $t = 10 MSH> $t 10 MSH> $arr = 1,2 MSH> $arr 1 2 MSH> $arr[1] = 3 MSH> $arr 3 2
Перед именем переменной нужно обязательно указывать знак доллара — так PowerShell поймет, что перед ним переменная, а не значение.
Нумерация элементов массива начинается с единицы. Для доступа к элементу массива используются квадратные скобки. Для добавления нового элемента в массив используется оператор +:
MSH> $arr += 7 MSH> $arr 3 2 7
Кроме простых массивов поддерживаются ассоциативные массивы:
MSH> $assoc = @{ one = 1; two = 2; three = 3}
MSH> $assoc['one']
1
Для добавления элемента в ассоциативный массив используется вот такая конструкция:
$assoc += @{ four = 4 }
Тип переменной выбирается автоматически, но можно установить любой тип .NET: array, bool, byte, char, char[], decimal, double, float, int, int[], long, long[], regex, single, scriptblock, string, type, xml. Тип переменной определяется в квадратных скобках в момент присваивания:
MSH> $var = [int]10;
В сценариях можно использовать условные операторы if-elseif-else, switch, а также операторы циклов while, do-while, do-until, foreach.
Мы рассмотрим только оператор if-elseif-else и циклы while и foreach. Конструкция if-elseif-else следующая:
if (условие) {операторы
} elseif (условие) {операторы
...
} elseif (условие) {операторы
} else {операторы}
Условие задается так:
переменная оператор_сравнения переменная_или_значение
Цикл while выглядит так:
while {условие} {операторы}
Пример:
$i = 0; while($i -lt 10) { $i; $i++ }
Данный цикл выведет числа от 0 до 9.
Теперь рассмотрим синтаксис foreach:
foreach (переменная in ассоциативный_массив) {операторы}
Цикл foreach удобно использовать для перебора значений ассоциативного массива, например:
foreach ($v in Get-Process |Sort-Object Name) { $v.Name }
Сейчас рассмотрим работу с реестром. Перейти в нужный раздел можно с помощью всем знакомой команды cd:
MSH> cd hkcu:
Мы перешли в раздел HKEY_CURRENT_USER. Можно перейти в другой раздел, например, HKEY_LOCAL_MACHINE, задав его имя или сокращение (hklm). Вывести содержимое раздела можно с помощью команды dir. Чтобы просмотреть содержимое раздела, используется команда get-property:
MSH> cd hkcu:SoftwareMicrosoftNotepad MSH> get-property .
В данном случае мы выводим настройки Блокнота. Установить значение переменной в разделе можно с помощью команды set-property (следующая команда изменит шрифт Блокнота):
MSH> set-property . -property lfFaceName -value "Arial"
Врезка: Все команды Win2003 условно можно разделить на следующие группы
- Команды для работы с файловой системой
- Команды для управления операционной системой
- Команды мониторинга
- Сетевые команды
- Команды для поддержки Active Directory
- Команды для обслуживания жестких дисков
- Другие команды
Врезка: Команды для работы с файловой системой
- type — просмотр файла
- more — постраничный вывод файла
- copy — копирование одного или нескольких файлов
- move — перемещение одного или нескольких файлов (или переименование каталога)
- del — удаление одного или нескольких файлов
- ren — переименование файла
- attrib — изменение атрибутов файла/каталога (скрытый, системный, только чтение, архивный)
- fc — сравнение файлов
- find — поиск текстовой строки в одном или нескольких файлах
- grep — поиск текстовой строки (можно использовать регулярные выражения) в файле или в списке файлов
- cd — смена каталога
- dir — вывод содержимого каталога
- tree — вывод дерева каталогов
- md (или mkdir) — создание каталога
- rd — удаление каталога или дерева каталогов
WWW
Статья опубликована в майском номере журнала «Xakep» за 2007 год.




