Использование сценариев командного процессора всегда было одним из лучших способов управления сервером Windows, но написание гибких сценариев часто требует дополнительных утилит командной строки из вспомогательного инструментария операционной системы или средств независимого разработчика. Каждая новая версия Windows включала в базовую операционную систему несколько таких инструментов. В Windows Server 2003 реализовано более 60 новых инструментов командной строки. Предлагаю вниманию читателей описание 10 инструментов, предназначенных для работы со сценариями в Windows 2003.

10. Choice

Команда Choice, которой давным-давно следовало пополнить инструментарий Windows, предлагает выбрать один из доступных вариантов и возвращает введенное пользователем значение в сценарий в переменную окружения ERRORLEVEL. Например, чтобы попросить пользователя выбрать вариант 1, 2 или 3, следует ввести:

choice /c:123 Select an option

9. Clip

Команда Clip позволяет перенаправить результаты выполнения какой-либо команды в буфер обмена Windows, а также отправить содержимое буфера обмена команде. Например, чтобы перенаправить результаты выполнения команды Dir в буфер обмена, следует ввести:

dir | clip

8. Setx

Команда Setx присваивает переменной окружения значение, которое находится в сценарии, в файле или даже в разделе реестра. Например, чтобы установить переменную окружения MACHINE в значение Dell Precision 610, следует ввести:

setx machine «Dell Precision 610»

7. Waitfor

Команда Waitfor синхронизирует действия нескольких систем в сети. Waitfor может делать паузу при выполнении сценария, пока командный процессор либо не получит определенного сигнала, либо не отправит сигнал одной или нескольким системам в сети. Следующие команды ожидают сигнала Batchdone, затем используют параметр /si для отправки сигнала:
waitfor Batchdone

waitfor /si Batchdone

6.Timeout

Как и команда Pause, команда Timeout задерживает исполнение сценария на определенное число секунд. Чтобы сделать паузу на 10 секунд, нужно ввести:

timeout 10

5. Systeminfo

Команда Systeminfo выводит базовую системную информацию в файл или на стандартное устройство вывода. Информация, выводимая Systeminfo, включает имя хоста, версию операционной системы, тип процессора, время работоспособного состояния системы, каталог расположения Windows, суммарную системную память и контроллер регистрации. Например, чтобы послать системную информацию в файл mysystem.txt, следует ввести

systeminfo >> mysystem.txt

4.Where

Команда Where возвращает расположение всех файлов, которые совпадают с определенным образцом. Чтобы найти все файлы .inf, хранящиеся в папке C:winnt, нужно ввести

where /r c:winnt *.inf

3. Forfiles

Команда Forfiles выполняет определенную команду для каждого файла, удовлетворяющего заданному критерию поиска. Можно использовать шаблоны в именах файлов и выполнять поиск по датам. В той команде, которая выполняется в рамках Forfiles, также можно задействовать специальный набор переменных, содержащих информацию окружения, такие как имя файла, дата файла и размер. Следующая команда отображает имя файла, дату и размер для всех файлов, созданных более пяти дней назад:

forfiles /d -5 /C «cmd /c echo @fname @fdate @fsize»

2. Eventcreate

Команда Eventcreate записывает события в системный журнал. Eventcreate — это усовершенствованная утилита Logevent. Следующая команда добавляет пользовательскую запись в журнал Application:

eventcreate /t error /id 10 /l
application /D «MyScript ended with an error»

1. Eventquery

Команда Eventquery позволяет извлекать отдельные записи из одного или нескольких системных журналов, в том числе из журналов на удаленных системах. В отличие от других представленных здесь утилит, Eventquery является сценарием Windows Script Host (WSH), поэтому для ее работы нужно использовать cscript.exe. Следующая команда обращается к журналу Application и ищет запись, которую я создал с помощью Eventcreate:

cscript c:windowssystem32eventquery.vbs /l application /fi «id eq 10»

Майкл Оти — старший технический редактор Windows & .NET Magazine и президент компании TECA. С ним можно связаться по адресу: mikeo@teca.com.