Смотрим плавность хода с помощью BMW Rheingold

Всем знакома ситуация, когда двигатель немного "троит", но пропусков зажигания нет...

Облачный хостинг VDS за 2 минуты

Настоящий облачный VDS-хостинг от UltraVDS: тестируем производительность

Дельта синхронизация без облака

Ранее мы показывали разные способы синхронизации криптодиска между ПК и Android-устройством.

Дельта-синхронизация крипто-дисков

Существуют разные способы зашифровать "облако". Один из них - поместить в облако крипто-диск. В предыдущей статье мы писали, почему это не всегда удобно.

Администрирование Windows 2003 из командной строки


Колисниченко Денис

Возвращаемся в DOS?

Парадоксально, но факт: утилиты командной строки в Windows никогда не привлекали внимания ни пользователей, ни аднимистраторов, но в тоже время состав и возможности этих утилит обогащаются каждый год. В этой статье мы поговорим о командной строке в Windows 2003.

О том, как работать в командной строке

Наиболее часто используемой утилитой командной строки является сам командный интерпретатор - 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%

Какие имеются команды?

Команд много и все в этой статье мы не рассмотрим. Да и вообще подробно команды рассматривать не будем. А зачем? Вводишь имя команды, пробел, слеш и вопросительный знак (параметр /?). В ответ получишь описание команды и ее параметров. Нужно просто знать, что делает та или иная команда, а уж описание прочитать проблем не составит.

Итак, все команды можно разделить на следующие группы:

  1. команды для работы с файловой системой
  2. команды для управления операционной системой
  3. команды мониторинга
  4. сетевые команды
  5. команды для поддержки Active Directory
  6. команды для обслуживания жестких дисков
  7. другие команды

Команды для управления операционной системой

В 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 и chkntfs. Первая используется для проверки FAT-разделов, а вторая - для проверки 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

Обрати внимание, как производится работа с объектами в diskpart. Сначала нужно выбрать какой-то объект (с помощью команды select): сначала мы выбираем диск (select disk). Затем нужно произвести операции с объектом. Мы производим две операции (clean и create partition). Потом мы уже выбираем другой объект - раздел (select partition) и производим операции с ним (делаем раздел активным и форматируем его).

Можно указать размер создаваемого раздела, например:

create partition primary size=5000

В данном случае будет создан раздел размером в 5 Гб. К данному разделу можно отнести еще две команды - diskperf, которая управляет счетчиками производительности жесткого диска, и fsutil, которая управляет поведением файловой систем. Например, с помощью fsutil можно сбросить или установить флаг тома "грязный" (dirty), а также получить информацию о файловой системе. В общем, читай man, то есть fsutil /?

Команды для поддержки и диагностики 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 теста).

Другие команды

Ты помнишь, как называется команда, но когда ее вводишь, получаешь сообщение, что такая команда не найдена? Тогда попробуй использовать команду where (аналог which в Unix):

where name.extension

Команда 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 можно по адресу:

http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

Там же можно скачать и полное руководство по PowerShell.

Оболочка PowerShell - это интерактивный командный интерпретатор. Как и cmd, в PowerShell можно создавать сценарии, позволяющие администраторам автоматизировать управление системными задачами, как на сервере, так и на других компьютерах сети. PowerShell, в отличие от cmd, который предоставляет доступ только к файловой системе, позволяет управлять всей операционной системой и ее приложениями, например, мы можем работать с реестром Windows как с обычной файловой системой. В этой статье мы рассмотрим далеко не все возможности PowerShell. Вот некоторые полезные команды, которые нужно знать, для начала работы в PowerShell:

Get-Command - получить список доступных команд
Get-Help - получить справку по указанной команде
Get-Drive - получить список дисков
Set-Location - изменить текущее местоположение (аналог команды cd в cmd)
Set-Alias - создать псевдоним для команды 
Get-Date - вывести дату

Как и в cmd, поддерживается перенаправление ввода-вывода, например:

Get-Date > current-date.txt

При запуске PowerShell автоматически запускаются следующие сценарии (если они найдены).

Documents and Settings\All Users\Documents\Msh\profile.msh
Documents and Settings\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"

Дополнительные ссылки

http://www.thevista.ru/page.php?id=865

http://www.microsoft.com/technet/scriptcenter/ scripts/msh/default.mspx

http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

http://www.networkdoc.ru/files/insop/win2003/read.html?command.html

http://offline.computerra.ru/2006/625/251407/

http://www.cyberguru.ru/operating-systems/windows/windows2003-cmd.html

Командная строка при установке Windows Vista

Командную строку можно вызвать даже при установке Windows Vista - для этого во время установки нужно нажать Shift + F10


Командная строка при установке Vista

Команды для работы с файловой системой

type - просмотр файла
more - постраничный вывод файла
copy - копирование одного или нескольких файлов
move - перемещение одного или нескольких файлов (или переименование каталога)
del - удаление одного или нескольких файлов
ren - переименование файла
attrib - изменение атрибутов файла/каталога (скрытый, системный, только чтение, архивный)
fc - сравнение файлов
find - поиск текстовой строки в одном или нескольких файлах
grep - поиск текстовой строки (можно использовать регулярные выражения) в файле или в списке файлов
cd - смена каталога
dir - вывод содержимого каталога
tree - вывод дерева каталогов
md (или mkdir) - создание каталога
rd - удаление каталога или дерева каталогов


операторы сравнения


использование diskpart


активные соединения - netstat


список задач


использование pathping