Остальных по окончании занятий в большей степени интересовали новые возможности. Как убежденный сторонник технологии сценариев, я часто замечаю, что как только системные администраторы начинают применять ее в своей работе, они не расстаются с ней всю жизнь. С помощью сценариев можно быстро и качественно выполнять повторяющиеся операции. Например, если знать, как разработать сценарий, собирающий данные с нескольких удаленных узлов и представляющий информативный отчет, эта задача может из рутинной работы превратиться в развлечение.
В данной ситуации у многих системных администраторов в первую очередь возникает вопрос "С чего начать?". Для начинающего существует большая разница между написанием сценария из одной строки, отображающего на экране сообщение "Hello, World" и разработкой сложного сценария, содержащего около 200 строк кода и предназначенного для решения какой-либо важной задачи. Если вы новичок в этой области, то сначала, вероятно, попробуете выяснить, что может дать вам использование сценариев. Начинать знакомство с этой технологией проще всего с попытки запуска нескольких несложных, но полезных команд. После того как вы освоите основы, можно начинать повышать квалификацию и обращаться к подробным источникам информации о разработке сценариев, например, к специальной литературе.
В данной статье будет показана 101 команда для сценариев, каждая из которых отвечает на один из типичных вопросов "Как сделать…?". Здесь же имеется несколько примеров кода, которые помогут вам в освоении этой технологии на начальном этапе. Изучая приведенные примеры, вы познакомитесь с богатыми возможностями сценариев командной строки и убедитесь, что их использование может существенно облегчить работу, а также обеспечить высокую надежность, безопасность и точность при выполнении ваших повседневных обязанностей.
Обеспечение работоспособности команд сценариев
Прежде чем начинать эксперименты, следует убедиться, что все описанные здесь команды будут работать в имеющейся конфигурации. При этом нужно учитывать, что описанные команды тестировались на системах Windows XP Professional Edition Service Pack 1 (SP1) и Windows 2000 SP3. Для того чтобы облегчить новичкам старт, я сформулировал предварительные требования и рекомендации. Сначала давайте познакомимся с предварительными требованиями:
- Установите на компьютер все утилиты, которые необходимы для используемых здесь команд. Список соответствующих ресурсов приводится в таблице 1, а названия путей, которые я использовал на своей тестовой машине, могут послужить ориентирами местонахождения той или иной утилиты. Эти утилиты по большей части либо входят в состав пакетов Microsoft Windows 2000 Resource Kit и Windows 2000 Support Tools, либо являются встроенными командами, однако здесь используется и несколько свободно распространяемых утилит от независимых разработчиков.
- Отредактируйте код таким образом, что бы он содержал названия путей, соответствующих местам хранения утилит на вашей системе.
- Отредактируйте пути LDAP (Lightweight Directory Access Protocol) и другие необходимые данные, если сценарий не запрашивает ввод этих параметров.
Теперь рассмотрим несколько рекомендаций, которые позволят упростить процедуры запуска сценариев:
- Во многих примерах для организации ввода данных пользователем применяется команда Set /P. Если вы предпочитаете задавать имена серверов или пользователей в явном виде в тексте сценария, тогда удалите из его текста строку "(SET /P C=Enter computer name:) &" и замените переменные !C! и !U! на заданные в явном виде имена компьютеров, пользователей или другую информацию, ввод которой запрашивается сценарием.
- Сформировать рабочую среду для поочередного запуска сценариев можно путем создания соответствующего ярлыка. Обычно при внесении в сценарий дополнительного кода вы в одной строке задаете переменную, скажем, computername, а затем используете ее где-то далее в тексте сценария, например так, как показано ниже:
(SET /P C=Enter computer name:)
ECHO %C%
Но поскольку здесь мы собираемся работать со сценариями, состоящими из одной строки, необходимо найти способ установки переменной в одной строке. Если вы будете просто использовать команду Set /P в той же строке, где находится сама переменная, придется работать в том окружении командной строки, в котором перед этим была запущена команда Setlocal с дополнительным аргументом Enabledelayedexpansion.
В связи с этим, вместо того, чтобы перед каждым запуском сценария открывать окно командной строки и запускать в нем команду Setlocal Enabledelayedexpansion, можно воспользоваться приведенной ниже командой из одной строки и создать на рабочем столе ярлык OneLinerCmd:
C:ResourceKitReg.exe add
HKCUConsoleonelinercmd ScreenBufferSize=131072080
REG_DWORD & shortcut.exe -f
-t "%systemroot%system32cmd
.exe" -a "/V:ON" -d %system
drive% -n "%userprofile% desktopOneLiner Cmd"
В тексте статьи и эта, и другие команды размещаются на нескольких строках, однако если вы будете копировать их непосредственно из статьи и переносить в таком виде в командную строку, то учтите, что команды могут работать некорректно, если не преобразовать их в одну строку. В рассматриваемом коде для формирования соответствующей среды выполнения сценариев используется команда Cmd /V:ON, которая обеспечивает тот же результат, что и команда Setlocal. Обратите внимание, что при использовании данного ярлыка, созданного сценарием, увеличивается размер буфера экрана, что обеспечивает больший размер прокручиваемого окна командной строки для вывода получаемых данных.
- Перенос команд сценариев в окно командной строки лучше выполнять с помощью копирования и вставки. Для этого нужно выделить мышью тот код, который вы хотите запустить, а затем щелкнуть правой кнопкой мыши в окне командной строки для вставки выбранного кода в это окно. Если это сделать не удается, откройте окно свойств Properties командной строки, выберите закладку "Общие" (Options) и в ней включите флажки "Выделение мышью" (QuickEdit) и "Быстрая вставка" (Insert).
- Команды и утилиты, используемые в рассматриваемых сценариях, имеют гораздо больше возможностей, чем я описал в данной статье. Если вы столкнетесь с проблемами при запуске описанных команд в среде Windows 2003 или просто захотите просмотреть полный список аргументов команд для их дальнейшего использования, наберите в командной строке:
Имя команды /?
Также следует помнить, что некоторые утилиты, в частности, reg.exe и gpresult.exe, могут иметь несколько версий. Поэтому прежде чем использовать их, необходимо убедиться в том, что имеющаяся версия утилиты поддерживает синтаксис запуска, рассматриваемый в данной статье.
Команды для работы со службой AD через сценарии
Служба Active Directory (AD) является богатейшим источником информации. Но, к сожалению, оснастка Active Directory Users and Computers консоли Microsoft Management Console (MMC) предоставляет в наше распоряжение только простейшие функции экспорта списков, с помощью которых можно извлекать лишь ограниченное количество типов данных. Однако, применяя в сценариях несколько перечисленных ниже утилит из пакета Resource Kit, предназначенных для работы с AD, можно добраться до всего того изобилия информации, которое содержит эта служба.
1. Как экспортировать список всех компьютеров, которые являются членами домена Sales?
Csvde.exe -f C:complist.csv -r
"(objectClass=computer)" -d
"dc=sales,dc=yourcompany,dc=
com" -p subtree
2. Как найти путь LDAP к компьютеру из данного домена?
(SET /P C=Enter computer name:
) & For /f "tokens=1,2,3,*"
%i in ('CScript //nologo
C:supporttoolssearch.vbs
"LDAP://dc=sales,dc=your
company,dc=com" /Q /S:subtree
/C:"&(ObjectCategory=computer)
(cn=!C!)"') do ECHO %l
3. Как получить подробные сведения о результирующем наборе политик (Resultant Set of Policies – RSoP)?
(SET /P C=Enter computer name:
) & gpresult.exe /S !C!
4. Как найти в заданном организационном подразделении (OU) все компьютеры с Windows XP, на которых установлен пакет обновления SP1?
For /f "tokens=1,2,3,4" %i in
('CScript " //nologo
C:supporttoolssearch.vbs"
"LDAP://dc=sales,dc=your
company,dc=com" /Q /C:"&
(ObjectCategory=computer)
(operatingsystem=Windows XP
Professional)(operating
systemservicepack=service
pack 1)"^| find " objects."')
do ECHO %j
5. Как получить полный список компьютеров из заданного OU, включая те, что размещаются в дочерних OU?
For /f "tokens=3,* delims==,"
%i in ('CScript //nologo
C:supporttoolssearch.vbs
"LDAP://dc=sales,dc=your
company,dc=com" /S:subtree
/Q /C:"&(ObjectCategory=
computer)"') do ECHO %i,%j>>
D:PCs.csv
6. Как определить, у каких компьютеров данного OU заблокированы учетные записи?
For /f "tokens=*" %i in
('C:w2k3toolsdsquery.exe
computer "LDAP://dc=sales,dc=
yourcompany,dc=com" -disabled
') do @ECHO %i
7. Как найти в заданном OU все заблокированные учетные записи пользователей?
For /f "tokens=*" %i in
('C:w2k3toolsdsquery.exe
user "LDAP://dc=sales,dc=your
company,dc=com" -disabled')
do @ECHO %i
Управление компьютером с помощью команд сценариев
Многие из приведенных ниже управляющих команд позволяют опрашивать и настраивать компьютеры в удаленном режиме без необходимости локальной регистрации на них. Применение автоматизации для ежедневно выполняемых работ по управлению компьютерами позволит администратору сэкономить массу времени.
8. Как определить, включен ли удаленный компьютер с помощью команды Ping?
(SET /P C=Enter computer name:
) & (For /f %i in ('Ping -n 1
!C!^|Find "Reply"') do @ECHO
Online!)||(@ECHO Offline!)
9. Как определить, включен ли удаленный компьютер с помощью команды NBTstat?
(SET /P C=Enter computer name:
) & (For /f %i in ('NBTstat
-a !C!^|Find "found."') do
@ECHO Offline!)||(@ECHO
Online!)
10. Как определить, включен ли удаленный компьютер с помощью команды Net Use?
(SET /P C=Enter computer name:
) & (For /f "tokens=*" %i in
('@Net Use !C! 2^>NUL ^|
find "successfully."') do
@ECHO Online!)||(@ECHO
Offline!)
11. Как сравнить установки времени на локальном компьютере и на сервере, где выполняется регистрация (logon server)?
For /f "tokens=*" %i in ('Net
Time \%COMPUTERNAME% ^| find
/V "command"') do @ECHO
%i&For /f "tokens=*" %i in
('Net Time %LOGONSERVER% ^|
find /V /I "command"') do
@ECHO %i
12. Как сравнить установки времени на удаленном компьютере и на сервере, где выполняется регистрация (logon server)?
(SET /P C=Enter computer name:
) & For /f "tokens=*" %i in
('Net Time !C! ^| find /V
"command"') do @ECHO %i&For
/f "tokens=*" %i in ('Net
Time %LOGONSERVER% ^| find /V
"command"') do @ECHO %i
13. Как найти в домене Windows 2000 все компьютеры, в имени которых встречается слово "Sales"?
For /f "tokens=1 delims=$" %i
in ('C: esourcekitglobal
.exe "Domain Computers"
%LOGONSERVER% ^| Find "$" ^|
Find /i "SALES"') do @ECHO %i
14. Как найти в домене Windows NT 4.0 все компьютеры, в имени которых встречается слово "Sales"?
For /f "tokens=1 delims=$" %i
in (' C: esourcekitglobal
.exe "Domain Users" %LOGON
SERVER% ^| Find "$" ^| Find
/i "SALES"') do @ECHO %i
15. Как создать на рабочем столе ярлык для управления удаленным компьютером?
(SET /P C=Enter computer name
for shortcut: ) & "shortcut
.exe" -f -t "%SystemRoot%
system32compmgmt.msc" -a
"/computer=!C!" -d "%System
Root%system32" -n "%USER
PROFILE%desktop
!C!-CompMgmt"
16. Как проверить доверительные отношения между компьютером и его доменом?
(SET /P C=Enter computer name:
) & C:pstoolspsexec.exe -c
!C! C:supporttools etdiag
.exe /test:trust
17. Как получить системную информацию с удаленного компьютера?
(SET /P C=Enter computer name:
) & C:pstoolspsinfo.exe
!C!
18. Как получить подробный список всех служб, запущенных на удаленном компьютере?
(SET /P C=Enter computer name:
) & C:pstoolspslist.exe
!C!
19. Как просмотреть последние пять событий, зафиксированных в системном журнале System удаленного компьютера?
(SET /P C=Enter computer name:
) & C:pstoolspsloglist.exe
-n 5 system !C!
20. Как определить, обновлялись ли вирусные определения для антивируса McAfee за последние 7 дней?
(SET /P C=Enter computer name:
) & C:pstoolspsloglist.exe
-o mclogevent application -d
7 !C!
21. Как просмотреть в системном журнале удаленного компьютера 10 последних событий, связанных с регистрацией в системе?
(SET /P C=Enter computer name:
) & C:pstoolspsloglist.exe
-i 6009 -n 10 !C!
22. Как получить список учетных записей компьютеров, возраст пароля которых превышает 180 дней?
C:systools etpwage.exe
/Machines /v /Min:180 /Tabs
23. Как можно выключить и перезагрузить удаленный компьютер?
(SET /P C=Enter computer name:
) & C: esourcekitshutdown.exe
!C! /R /C
24. Я зарегистрировался на компьютере под своим именем и выполнил на нем некоторые работы по обслуживанию. Как в окне регистрации изменить имя пользователя на то, которое было в нем раньше?
(SET /P U=Enter User ID: ) &
C:
esourcekit
eg.exe add
"HKLMSOFTWAREMicrosoft
Windows NTCurrentVersion
Winlogon" /f /v DefaultUser
Name /d !U!
ПРИМЕЧАНИЕ: синтаксис использования утилиты reg.exe зависит от ее версии. Чтобы получить более подробную информацию о синтаксисе данной утилиты, наберите команду:
Reg /?
Установить обновление Reg.exe можно с помощью команды reg.exe /f.
25. Как посмотреть настройки хранителя экрана на удаленном компьютере?
(SET /P C=Enter computer name:
) & CScript //nologo
C:
esourcekitdesktop.vbs
/S !C!
26. Как получить полный список драйверов на локальном компьютере?
C: esourcekitdrivers.exe
27. Как получить полный список драйверов на удаленном компьютере?
(SET /P C=Enter computer name:
) & C:pstoolspsexec.exe
!C! /C C: esourcekit
drivers.exe
28. Как определить версию операционной системы и роль удаленного компьютера для систем Windows 2000 и Windows NT?
(SET /P C=Enter computer name:
) & C: esourcekitgettype
.exe !C!
29. Как можно на удаленном компьютере определить время последнего запуска и дату установки операционной системы?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitlistos.vbs
/S !C!
30. Как можно для удаленного компьютера получить информацию об установленных принтерах и о принтере, выбранном по умолчанию?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitlistprinters
.vbs /S !C!
31. Как посмотреть настройки параметров восстановления (recovery settings) на удаленном компьютере?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitosreconfig.vbs
/S !C!
32. Как увидеть настройки страничного файла на удаленном компьютере?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitpagefile.vbs
/L /S !C!
33. Как можно на удаленном компьютере определить, в каком пользовательском профиле имеются ярлыки программ?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitprogramgroups
.vbs /S !C!
34. Как просмотреть пути к исполняемым файлам процессов на удаленном компьютере?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitps.vbs /S !C!
35. Как можно быстро просмотреть запущенные на удаленном компьютере процессы?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitpstop.vbs /S
!C!
36. Как получить информацию о базовой конфигурации сервера, включая данные о пакетах Service Pack и дисковом пространстве?
(SET /P C=Enter computer name:
) & C: esourcekitsrvinfo
.exe !C!
37. Как получить список обновлений, установленных на удаленном компьютере?
(SET /P C=Enter computer name:
) & For /f "tokens=2 delims=
[:]" %i in (' C: esourcekit
srvinfo.exe -ns !C! ^|
Findstr "[0-9][0-9]]:"') do
@ECHO %i
38. Как получить информацию о периоде работоспособного состояния и данные "синего экрана" сервера?
(SET /P C=Enter computer name:
) & C: esourcekituptime.exe
/S /A !C!
39. Как получить информацию о потоках (thread)?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekit hread.vbs /S
!C!
40. Как определить, установлено ли на удаленном компьютере с Windows 2000 обновление для службы вызова удаленных процедур (RPC)?
(SET /P C=Enter computer name:
) & C: esourcekit eg.exe
Query "HKLMSOFTWARE
MicrosoftUpdatesWindows
2000SP5KB823980" !C!
|find /I "- KB823980"&&ECHO
SP Installed!||ECHO SP not
installed or node not
available!
Команды сценариев для работы с диском
Использование сценариев поможет существенно упростить процесс управления сменными и несменными дисковыми накопителями. Как и в случае команд для управления компьютером, многие из приведенных ниже команд работы с дисками позволяют выполнять из сценариев запросы к удаленным компьютерам для получения той или иной информации.
41. Как определить, имеются ли на дисках основного файлового сервера (имеющих обозначения от C до I) фрагменты недействительных данных, для которых при следующей перезагрузке будет запущена утилита Chkdsk?
For /D %i in (C D E F G H I) do
Chkntfs %i:
42. Как можно отключить возможность запуска утилиты Chkdsk при следующей перезагрузке для диска M, имеющего большой объем?
Chkntfs /X M:
43. Как изменить значение таймаута отмены запуска Chkdsk и задать значение 30 сек (вместо установленных по умолчанию 10 секунд), чтобы у администратора было больше времени для отмены запуска Chkdsk при загрузке?
Chkntfs /T:30
44. Как определить, какое значение таймаута для Chkdsk установлено на сервере?
Chkntfs /T
45. Как определить, активированы ли на удаленном компьютере какие-либо счетчики производительности для физических или логических дисков?
(SET /P C=Enter computer name:
) & Diskperf.exe !C!
46. Как получить с удаленного компьютера сведения о его дисководе CD-ROM и определить наличие в нем компакт-диска?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitcdromdrives
.vbs /S !C!
47. Как получить данные о дисковых разделах удаленного компьютера?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitdiskpartition
.vbs /S !C!
48. Как получить детальную информацию о физических дисковых накопителях удаленного компьютера?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitdrives.vbs /S
!C!
49. Как можно определить доступное пространство на дисках удаленного компьютера?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitlistfreespace
.vbs /S !C!
50. Как определить суммарный объем дискового пространства на удаленном компьютере?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitlistspace
.vbs /S !C!
51. Как получить данные о настройках параметров контроллера SCSI удаленного компьютера?
(SET /P C=Enter computer name:
) & CScript //nologo
C: esourcekitscsicontroller
.vbs /S !C!
Преобразование отдельных команд сценариев к виду, пригодному для использования в командных файлах
Итак, мы познакомились с командами сценариев, а теперь перейдем к замечаниям и рекомендациям. Эти сведения могут пригодиться при преобразовании команд для их дальнейшего применения в создаваемых командных (.bat) файлах:
- Для того чтобы преобразовать однострочные команды в сценарии, содержащие много строк, скопируйте строку кода в текстовый файл и сохраните его с расширением .bat.
- В самом начале сценария, до каких-либо других команд, поместите команду Setlocal Enabledelayedexpansion. Каждую из команд, объединенных символом одиночного амперсанда (&), следует разместить на отдельной строке, после чего символы амперсандов удалить.
- Если команда For должна запускаться через командный (.bat) файл, синтаксис ее запуска будет несколько иным. Если вы сохранили эту команду в виде .bat-файла, то все одиночные символы процента должны быть заменены в ней знаком двойного процента (например, вместо %i следует писать %%i). Если же вы хотите запустить эту команду непосредственно из командной строки, тогда, как и прежде, используйте знаки одиночного процента.
- Запуск .bat-файлов может выполняться либо двойным щелчком мыши, либо их перетаскиванием в окно командной строки с последующим запуском на выполнение нажатием клавиши Enter. Если необходимо, чтобы после запуска сценария двойным щелчком мыши окно командной строки оставалось открытым до нажатия на любую клавишу, включите в качестве последней строки кода сценария команду Pause.
- Если вы хотите ускорить процесс освоения технологии сценариев и не ограничиваться только знакомством с описанными здесь однострочными командами, изучите другие материалы сайта, опубликованные на нашем сайте.
- Постарайтесь раздобыть книгу Timothy Hill "Windows NT Shell Scripting" (Que, 1998), которая является лучшим справочным руководством по встроенным командам Windows и утилитам из пакета Resource Kit. Разумеется, с появлением новых версий утилит из Resource Kit синтаксис некоторых команд может меняться, однако эта работа по-прежнему остается весьма актуальной.
Команды сценариев для работы с файлами, принтерами и общими каталогами
С помощью сценариев можно создавать ресурсы с совместным доступом, выполнять аудит прав доступа и даже создавать файловые ресурсы общего пользования на кластере. Приведенные ниже примеры содержат много полезных команд, предназначенных для поиска файлов, удовлетворяющих некоторым критериям, автоматизации процедур удаления и получения информации о драйверах принтеров.
52. Как определить, доступен ли общий ресурс?
(SET /P CS=Enter servernamesharename: )
& (If Exist !CS! ECHO !CS! online) &
(If Not Exist !CS! ECHO !CS! offline)
53. Как выяснить, существуют ли в заданном каталоге файлы с расширением .xls?
If Exist computernamesharenamefoldername*.xls ECHO XLS file(s) exist
54. Как удалить все файлы из каталога Temp?
Del /Q /S %temp%*.*
55. Как удалить из каталога Temp все файлы, возраст которых превышает 10 дней?
Forfiles -p%temp% -s -m*.* -d-10 -c"CMD /C DEL /Q /F 0x22@PATH@FILE0x22"
ПРИМЕЧАНИЕ: В системе Windows 2003 команда Forfiles имеет другой синтаксис. Для получения полной информации о синтаксисе команды наберите в командной строке:
Forfiles /?
56. Как удалить все пустые папки из каталога Temp?
Forfiles -p%temp% -s -m* -c"CMD /C if @ISDIR==
TRUE RMDIR 0x22@PATH@FILE0x22 2>NUL&&echo
Deleted @RELPATH@FILE||Echo Deletion skipped"
ПРИМЕЧАНИЕ: В системе Windows 2003 команда Forfiles имеет другой синтаксис. Для получения полной информации о синтаксисе команды наберите в командной строке:
Forfiles /?
57. Как выяснить, сколько в заданном каталоге файлов .xls?
(SET /P TL=Enter target folder location: )
& SET counter=0 & For /f "tokens=1,2 delims=."
%i in ('dir /b !TL!*.xls') do @set /A counter+=1&@echo ) %i.%j
58. Как в заданном каталоге преобразовать имена файлов таким образом, чтобы все буквы имени стали строчными?
For /f "tokens=*" %i in
('Dir /l /b /a-d C:myfolder') do Ren "C:myfolder\%i" "%i"
59. Как определить размер конкретного файла в килобайтах?
For /f "tokens=4" %i in
('Dir /a-d /-c C:windowssystem32 toskrnl.exe ^|Find /i " ntoskrnl.exe "')
Do (Set /A size=%i/1024)
ПРИМЕЧАНИЕ: Команда Set /A имеет ограничение из девяти десятичных разрядов (максимальное значение 999999999). Если в математических операциях вы попытаетесь использовать значения, превышающие девять десятичных разрядов (числа ограничиваются 32-разрядной точностью), вы можете получить неверные результаты.
60. Как выяснить, сколько файлов находится в каталоге?
Set Counter=& For /f "tokens=*" %i in
('Dir /a-d /b %temp%') do @Set /A Counter+=1 & Echo )%i
61. Как создать на кластере новый файловый ресурс с общим доступом?
(CLUSTER clustername RESOURCE Sharename
/Create /Group:"GrpName" /Type:"File Share")
& (CLUSTER clustername RESOURCE Sharename
/PrivProp Path="R:MysharedFolder")
& (CLUSTER clustername RESOURCE Sharename
/PrivProp ShareName="Sharename")
& (CLUSTER clustername RESOURCE Sharename
/AddDependency:"Disk R:")
& (CLUSTER clustername RESOURCE Sharename
/Prop Description="Here is my description")
62. Как определить местонахождение открытых файлов на удаленном компьютере?
(SET /P C=Enter computer name:) & C:pstoolspsfile.exe !C!
63. Как получить информацию об имеющихся на удаленном компьютере общих ресурсах и разрешения на доступ к ним?
(SET /P C=Enter computer name: ) & C: esourcekit srvcheck.exe !C!
64. Как получить информацию о свойствах удаленного общего принтера?
CScript //nologo C: esourcekitprncfg.vbs -g -b servernameprinter
65. Как просмотреть только скрытые общие ресурсы удаленного компьютера?
(SET /P C=Enter computer name: )
& C: esourcekit mtshare.exe !C!|sort|find "$"
Команды сценариев для работы с аппаратными средствами
Информация о версии BIOS, модели сетевой платы, платы видеоадаптера или мыши, установленных на одном или нескольких компьютерах, может оказаться исключительно полезной при анализе проблем, связанных с драйверами устройств, установленными на клиенте. Для сбора информации можно воспользоваться приведенными ниже командами.
66. Как проверить BIOS на удаленном компьютере?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekitcheckbios.vbs /S !C!
67. Как получить информацию о свойствах видеоадаптера удаленного компьютера?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekitlistdisplayconfig.vbs /S !C!
68. Как получить информацию о плате видеоадаптера удаленного компьютера, включая данные о разрешении экрана?
(SET /P C=Enter computer name:)
& CScript //nologo C: esourcekitlstdpconinfo.vbs /S !C!
69. Как получить данные о параметрах указывающего устройства удаленного компьютера?
(SET /P C=Enter computer name:)
& CScript //nologo C: esourcekitpointdev.vbs /S !C!
70. Как получить данные о процессоре удаленного компьютера?
(SET /P C=Enter computer name:)
& CScript //nologo C: esourcekitprocessor.vbs /S !C!
71. Как собрать данные о конфигурации последовательного порта на удаленном компьютере?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekitserialport.vbs /S !C!
72. Как собрать данные о конфигурации звукового устройства на удаленном компьютере?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekitsounddevice.vbs /S !C!
73. Как получить информацию о драйвере накопителя на магнитной ленте?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekit apedrive.vbs /S !C!
Команды сценариев для работы с сетевыми параметрами
Современные сетевые среды имеют весьма сложную архитектуру, поэтому процедуры поиска неисправностей без применения технологии сценариев здесь могут оказаться весьма трудоемкими. В некоторых случаях, когда сетевой интерфейс не работает, единственный способ просмотреть настройки параметров сети состоит в том, чтобы физически зарегистрироваться на компьютере пользователя. Однако во многих других случаях для сбора сетевого трафика, выявления и решения проблем можно воспользоваться достаточно простыми сценариями.
74. Как увидеть результаты выполнения команды Ipconfig /ALL на удаленном компьютере?
(SET /P C=Enter computer name: )
& C:pstoolspsexec.exe !C! IPConfig /ALL
75. Как узнать адрес MAC (Media Access Control) удаленного компьютера?
(SET /P C=Enter computer name: ) & C: esourcekitgetmac.exe !C!
76. Как получить информацию о свойствах сетевого адаптера удаленного компьютера?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekitlistadapters.vbs /S !C!
77. Как получить информацию о сетевых протоколах, установленных на удаленном компьютере?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekit etworkprotocol.vbs /S !C!
78. Как получить информацию о привязках (bindings) сетевых протоколов на удаленном компьютере?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekitprotocolbinding.vbs /S !C!
Команды управления средой выполнения сценариев
Несколько несложных приемов помогут сделать среду выполнения сценариев более удобной. Приведенные ниже команды облегчат процедуры разработки и запуска сценариев в этой среде.
79. Как использовать блокнот Notepad для сохранения индивидуальных настроек (таких как размер шрифта) между сеансами командной строки?
C: esourcekit eg.exe Add HKCUSoftwareMicrosoftNotepad /v fSavePageSettings
/t REG_DWORD /d "00000001"
ПРИМЕЧАНИЕ: синтаксис использования утилиты reg.exe зависит от ее версии. Чтобы получить более подробную информацию о синтаксисе данной утилиты, наберите команду:
Reg /?
Установить обновление Reg.exe можно с помощью команды reg.exe /f.
80. Как создать на рабочем столе компьютера с Windows 2000 ярлык для оперативной подсказки по работе с командной строкой?
C:shortcut.exe -f -t "%SYSTEMROOT%hh.exe" -d "%SystemRoot%" -a
"ms-its:%WINDIR%Helpwindows.chm::/ntcmds.htm" -n
"%USERPROFILE%desktopW2KCommandLineHelp"
81. Как создать на рабочем столе компьютера с Windows XP ярлык для оперативной подсказки по работе с командной строкой?
C:shortcut.exe -f -t "%windir%hh.exe" -d "%windir%" -a
"ms-its:%windir%Help tcmds.chm::/ntcmds.htm" -n
"%USERPROFILE%desktopXPCommandLineHelp"
82. Как определить, сколько времени требуется для выполнения сценария или команды?
C: esourcekit imethis.exe dir /S /AD /B
Команды сценариев для управления параметрами безопасности
Вопросы безопасности лежат в основе почти всего того, что мы делаем как системные администраторы. Приведенные ниже команды позволят автоматизировать с помощью сценариев те рутинные процедуры, связанные с обеспечением безопасности, с которыми администраторы имеют дело ежедневно.
83. Как подключиться к другому компьютеру, используя учетную запись, отличную от той, под которой я зарегистрировался?
(SET /P C=Enter computer name: )
& (SET /P U=Enter user name: ) & NET USE !C!IPC$ * /USER:!U!
84. Как получить информацию об идентификаторе SID удаленного компьютера?
(SET /P C=Enter computer name: ) & C:pstoolspsgetsid.exe !C!
85. Как получить список тех пользователей домена, которые имеют право на удаленный доступ (remote access)?
(SET /P D=Enter Domain name: ) & C: esourcekit asusers.exe %D%
86. Как организовать рассылку сообщения через Net Send всем членам локальной группы Administrators при локальной регистрации в системе?
For /f "tokens=1,2 delims= " %i in ('C: esourcekitshowmbrs.exe
\%computername%administrators ^| Find /v "Members"')
Do Net Send %j Test Message
Сценарии работы со службами
Безусловно, для получения информации о запущенных в системе службах, а также для их запуска и остановки может использоваться оснастка Computer Management консоли MMC, однако процесс заметно усложняется, если требуется управлять несколькими узлами. К тому же современные концепции безопасности требуют, чтобы администратор более тщательно отслеживал, какие службы установлены и запущены на той или иной системе. Приведенные ниже команды расширят возможности администратора, позволяя ему быстро собирать необходимые данные, не щелкая мышью в соответствующей оснастке каждого компьютера.
87. Как получить список имеющихся на компьютере служб?
(SET /P C=Enter computer name: ) & C: esourcekit etsvc.exe !C! /List
88. Как определить, запущена ли на сервере служба Web?
(SET /P C=Enter computer name: ) & C: esourcekit etsvc.exe !C! W3SVC /query
89. Как получить перечень остановленных служб с удаленного компьютера?
(SET /P C=Enter computer name: ) & C: esourcekitsclist.exe -s !C!
Команды сценариев для управления пользователями и группами
Создание учетных записей пользователей и групп, а также процедуры аудита могут занимать большую часть рабочего времени администратора сети предприятия. К счастью, существуют богатый выбор утилит для работы с пользователями и группами, примеры работы которых приведены ниже.
90. Как определить, членом скольких групп я являюсь?
Set cntr=0&for /f "tokens=1,2,3,4 delims=[]" %i in
('C:joewarememberof.exe -q -u %USERDOMAIN%\%USERNAME%')
do (SET /A cntr+=1) & (ECHO ^) %l)
91. Как определить, членом скольких групп является другой пользователь?
(SET /P USER=Enter domainnameusername: )
& set cntr=0&for /f "tokens=1,2,3,4 delims=[]"
%i in ('C:joewarememberof.exe -q -u %USER%')
do (SET /A cntr+=1) & (ECHO ^) %l)
92. Как выяснить, когда заканчивается срок действия учетной записи определенного пользователя (который является членом того домена, где находится учетная запись пользователя, зарегистрировавшегося локально)?
(SET /P U=Enter user name: ) & C:joewareaccexp.exe
!U! -q -s %LOGONSERVER%
93. Как определить, кто в данный момент локально зарегистрировался на удаленном компьютере?
(SET /P C=Enter computer name: ) & C:pstoolspsloggedon.exe -L !C!
94. Как получить данные по истории регистрации в системе пользователей на заданном компьютере?
(SET /P C=Enter computer name: ) &
C:systools etusers.exe !C! /history /local
95. Как получить список учетных записей пользователей, возраст пароля которых находится в интервале между 90 и 180 днями?
C:systools etpwage.exe /Users /v /Min: 90 /Max:180 /Tabs
96. Как выяснить, какие пользователи являются членами локальной группы?
C: esourcekitlocal.exe "groupname" domainname
97. Как выяснить, какие пользователи являются членами глобальной группы?
C: esourcekitglobal.exe "groupname" domainname
98. Как узнать, в каком организационном подразделении (OU) находится моя пользовательская учетная запись?
C:joewareusername.exe -Q -format 1
99. Как получить список пользователей, ассоциированных с процессами, запущенными на удаленном компьютере?
(SET /P C=Enter computer name: )
& C: esourcekitpulist.exe !C!
100. Как просмотреть содержимое папок "Автозагрузка" (StartUp) для всех пользователей (All Users) и в пользовательских профилях?
(SET /P C=Enter computer name: )
& CScript //nologo C: esourcekitstartup.vbs /S !C!
101. Как получить данные об основных параметрах учетной записи, включая сведения о ее блокировке?
(SET /P DU=Enter domainUsername: )
& For /f "tokens=1,2 delims=" %i in ("%DU%")
do CScript //nologo C: esourcekituseraccount.vbs /D %i /N %j
Таблица 1. Общедоступные утилиты для сценариев
Утилита | Где взять |
Accexp.exe | Joeware.net (http://www.joeware.net/win32/index.html) |
CDRomDrives.vbs | Windows 2000 Resource Kit |
CheckBIOS.vbs | Windows 2000 Resource Kit |
Chkntfs.exe | Встроенная команда |
Cluster.exe | Встроенная команда |
Csvde.exe | Built-in (Windows 2000 Server) |
Desktop.vbs | Windows 2000 Resource Kit |
DiskPartition.vbs | Windows 2000 Resource Kit |
Diskperf.exe | Встроенная команда |
Drivers.exe | Windows 2000 Resource Kit |
Drives.vbs | Windows 2000 Resource Kit |
Dsquery.exe | Windows 2003 Support Tools |
Forfiles.exe | Windows 2000 Resource Kit |
Getmac.exe | Windows 2000 Resource Kit |
Gettype.exe | Windows 2000 Resource Kit |
Global.exe | Windows 2000 Resource Kit |
Gpresult.exe | Встроенная команда XP (имеет немного другой синтаксис в Windows 2000 Resource Kit) |
Ipconfig.exe | Встроенная команда |
ListAdapters.vbs | Windows 2000 Resource Kit |
ListDisplayConfig.vbs | Windows 2000 Resource Kit |
ListFreeSpace.vbs | Windows 2000 Resource Kit |
ListOS.vbs | Windows 2000 Resource Kit |
ListPrinters.vbs | Windows 2000 Resource Kit |
ListSpace.vbs | Windows 2000 Resource Kit |
Local.exe | Windows 2000 Resource Kit |
LStdpConInfo.vbs | Windows 2000 Resource Kit |
Memberof.exe | Joeware.net |
Nbtstat.exe | Встроенная команда |
Net Time | Встроенная команда |
Net Use | Встроенная команда |
Netdiag.exe | Windows 2000 Support Tools |
Netpwage.exe | SystemTools.com (http://www.systemtools.com/free.htm) |
Netsvc.exe | Windows 2000 Resource Kit |
Netusers.exe | SystemTools.com |
NetworkProtocol.vbs | Windows 2000 Resource Kit |
OSReconfig.vbs | Windows 2000 Resource Kit |
Pagefile.vbs | Windows 2000 Resource Kit |
Ping | Встроенная команда |
PointDev.vbs | Windows 2000 Resource Kit |
PrnCfg.vbs | Windows 2000 Resource Kit |
Processor.vbs | Windows 2000 Resource Kit |
ProgramGroups.vbs | Windows 2000 Resource Kit |
ProtocolBinding.vbs | Windows 2000 Resource Kit |
Ps.vbs | Windows 2000 Resource Kit |
Psexec.exe | Sysinternals PsTools (http://www.sysinternals.com/ntw2k/utilities.shtml) |
Psfile.exe | Sysinternals PsTools |
Psgetsid.exe | Sysinternals PsTools |
Psinfo.exe | Sysinternals PsTools |
Pslist.exe | Sysinternals PsTools |
Psloggedon.exe | Sysinternals PsTools |
Psloglist.exe | Sysinternals PsTools |
PStop.vbs | Windows 2000 Resource Kit |
Pulist.exe | Windows 2000 Resource Kit |
Rasusers.exe | Windows 2000 Resource Kit |
Reg.exe | Windows 2000 Resource Kit (синтаксис встроенной команды XP немного другой) |
Rmtshare.exe | NT Server 4.0 Resource Kit |
Sclist.exe | Windows 2000 Resource Kit |
SCSIController.vbs | Windows 2000 Resource Kit |
Search.vbs | Windows 2000 Support Tools |
SerialPort.vbs | Windows 2000 Resource Kit |
Shortcut.exe | Microsoft Windows NT Server 4.0 Resource Kit Supplement 2 |
Showmbrs.exe | Windows 2000 Resource Kit |
Shutdown.exe | Windows 2000 Resource Kit |
SoundDevice.vbs | Windows 2000 Resource Kit |
Srvcheck.exe | Windows 2000 Resource Kit |
Srvinfo.exe | Windows 2000 Resource Kit |
StartUp.vbs | Windows 2000 Resource Kit |
TapeDrive.vbs | Windows 2000 Resource Kit |
Thread.vbs | Windows 2000 Resource Kit |
Timethis.exe | Windows 2000 Resource Kit |
Uptime.exe | Windows 2000 Resource Kit |
UserAccount.vbs | Windows 2000 Resource Kit |
Username.exe | Joeware.net |