Меняем окна на консольДенис Колисниченко Хакер, номер #101, стр. 154 (dhsilabs@mail.ru, www.dkws.org.ua) Администрирование Windows 2003 из командной строкиПарадоксально, но факт: утилиты командной строки в Windows никогда не привлекали внимания ни пользователей, ни администраторов, но в тоже время состав и возможности этих утилит обогащаются каждый год. О том, как работать в командной строкеНаиболее часто используемой утилитой командной строки является сам командный интерпретатор - cmd.exe. Именно его мы запускаем, когда нам нужно поработать с командной строкой. Интерпретатор cmd пришел на смену command.com из мира DOS и Windows 9x. Когда торопишься или просто не хочешь ждать завершения первой команды, можно ввести сразу несколько команд, разделив их амперсандом: команда1 & команда2 & ... & командаN Если эту последовательность команд приходится выполнять часто, целесообразно создать командный файл - обычный текстовый файл с расширением cmd. Каждая команда записывается в отдельной строке, но можно и использовать амперсанды. Иногда нужно проанализировать результат первой команды, а только потом, если результат успешен, выполнить вторую команду. Это можно реализовать с помощью двойного амперсанда: команда1 && команда2 Вторая команда будет выполнена, если код завершения первой команды равен нулю (норма? корд равен нулю?) (успешное завершение). Не успел прочитать, что написала тебе программа? Тогда вывод можно передать программе 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 довольно много программ для диагностики и мониторинга сети, причем некоторые администраторы даже не подозревают об их существовании:
Особого внимания заслуживают команды net и netstat. С помощью первой можно произвести много различных операций. Введи команду net без параметров - в ответ получишь список команд:
Получить справку по конкретной команде можно так: 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 <имя_сценария> Пример сценария diskpartselect 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-утилиты:
Синтаксис всех DS-команд похож, используй «/?» для получения справки. Для диагностики контроллера домена (DC) используется утилита DcDiag из комплекта Support Tools. Если запустить ее без параметров, то запустится 27 тестов DC (к слову, в Windows 2000 было 22 теста). Другие командыДля выполнения заданной команды в строго определенное время можно использовать планировщик at. Есть возможность задать дату запуска команды, время, интервал (например, каждый день). Программа может работать в интерактивном режиме (параметр /interactive). Если боишься редактировать файл boot.ini в блокноте, воспользуйся программой bootcfg, которая позволяет избежать ошибок при редактировании этого файла. Иногда полезно опросить драйверы устройств. Для этого используется команда driverquery. Windows PowerShellВозможности стандартного командного интерпретатора 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 можно по адресу www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx. Там же ты найдешь и полное руководство по PowerShell. Оболочка PowerShell - это интерактивный командный интерпретатор. С его помощью можно создавать сценарии, позволяющие администраторам автоматизировать управление системными задачами как на сервере, так и на других компьютерах сети. PowerShell, в отличие от cmd, предоставляющего доступ только к файловой системе, позволяет управлять всей операционной системой и ее приложениями. Например, мы можем работать с реестром Windows как с обычной файловой системой. Вот некоторые полезные команды, которые нужно знать для начала работы в PowerShell:
Как и в cmd, поддерживается перенаправление ввода/вывода, например: Get-Date > current-date.txt При запуске PowerShell автоматически запускаются следующие сценарии (если они найдены):
Сценарий - это обычный текстовый файл, содержащий команды 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" WWW
Группы, на которые можно условно разделить все команды Win2003
Команды для работы с файловой системой
|