WMI на службе системного администратора.

Posted by

Windows Management Instrumentation (WMI) — это базовая технология как для управления так и для слежения за работой платформы Windows.

Только пользователи локальной группы «Администраторы» имеют право запускать .

В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. CIM является расширяемой моделью, что позволяет программам, системам и драйверам добавлять в неё свои классы, объекты, методы и свойства.

Важной особенностью WMI является то, что хранящиеся в нём объекты соответствуют динамическим ресурсам, то есть параметры этих ресурсов постоянно меняются, поэтому параметры таких объектов не хранятся постоянно, а создаются по запросу потребителя данных. Хранилище свойств объектов WMI называется репозиторием и расположено в системной папке операционной системы Windows:

%SystemRoot%\Windows\System32\wbem\Repository

Так как WMI построен по объектно-ориентированному принципу, то все данные операционной системы представлены в виде объектов и их свойств и методов.

Все классы группируются в пространства имен, которые иерархически упорядочены и логически связаны друг с другом по определенной технологии или области управления. В WMI имеется одно корневое пространство имен Root, которое в свою очередь имеет 4 подпространства: CIMv2, Default, Security и WMI.

Классы имеют свойства и методы и находятся в иерархической зависимости друг от друга, то есть классы-потомки могут наследовать или переопределять свойства классов-родителей, а также добавлять свои свойства.

Свойства классов используются для однозначной идентификации экземпляра класса и для описания состояния используемого ресурса. Обычно все свойства классов доступны только для чтения, хотя некоторые из них можно модифицировать определенным методом. Методы классов позволяют выполнить действия над управляемым ресурсом.

Каждому экземпляру класса можно обратиться по полному пути, который имеет следующую структуру:

[\\ComputerName\NameSpace][:ClassName][.KeyProperty1=Value1][,KeyProperty2=Value2]…]

где

ComputerName – имя компьютера

NameSpace – название пространства имен

ClassName – имя класса

KeyProperty1=Value1, KeyProperty2=Value2 – свойства объекта и значения, по

которому он идентифицируется.

Пример обращения к процессу с именем «Calc.exe», который запущен на локальной машине:

\\.\CIMv2:Win32_Process.Name=»Calc.exe»

Экземпляры классов могут генерировать события, к которым можно подписываться. При наступлении события WMI автоматически создает экземпляр того класса, которому соответствует это событие. Такой механизм удобно использовать для выполнения определенной команды при наступлении определенного события, то есть следить за состоянием объектов операционной системы.

Общая безопасность в WMI реализуется на уровне операционной системы, а дополнительная политика безопасности основана на уровнях пространств имен и протокола DCOM. То есть если пользователь не имеет права делать какое-то действие через операционную систему, он не сможет это сделать и через WMI. Если же пользователю дано какое-то право в операционной системе, то это ещё не означает, что это право будет и в WMI, так как в WMI действуют дополнительные параметры безопасности на уровне пространств имен.

Для вызова удаленных процедур WMI использует модель DCOM. В случае если возникает ошибка «Dcom Access Denied» то действия будут следующими: меня «Выполнить»->»dcomcnfg»->»Службы компонентов(Component Services)->Компьютеры->Мой компьютер->Свойства(правая кнопка мыши)->вкладка Безопасность COM Уровни олицетворения могут принимать следующие значения:

Anonymous Анонимный WMI-объект не может получить информацию о пользователе — доступ по такому типу не предоставляется
Identify Идентификация WMI-объект запрашивает маркер доступа пользователя — доступ предоставляется только локально
Impersonate Олицетворение WMI-объект имеет такие же права, какие имеет пользователь — рекомендуемый уровень для выполнения команд на удаленном компьютере
Delegate Делегирование WMI-объект может обратиться от имени пользователя к другому WMI-объекту — нерекомендуемый уровень, так как команды можно выполнять удаленно через цепочку из нескольких компьютеров

Уровни аутентификации (подлинности) могут принимать следующие значения:

None Отсутствует Проверка подлинности отсутствует
Default По умолчанию Стандартные настройки безопасности, которые задаются компьютером-целью команды
Connect Подключение Проверка только во время подключения к компьютеру-цели команды, проверка в ходе работы отсутствует
Call Вызов Проверка подлинности при каждом запросе к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
Pkt Пакет Проверка подлинности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
PktIntegrity Целостность пакета Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
PktPrivacy Секретность пакета Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки и содержимое пакетов подписываются и шифруются

wmimgmt.msc — оснастка консоли управления MMC для настройки WMI на локальном компьютере.

winmgmt.exe — консольная утилита управления WMI локального компьютера.

wbemtest.exe — графическая утилита для взаимодействия со структурой WMI на локальном или удаленном компьютере.

wmic.exe — консольная утилита для взаимодействия со структурой WMI на локальном компьютере.

mofcomp.exe — компилятор MOF-файлов для расширения структуры WMI, управления библиотекой классов WMI и восстановления репозитория.

Сейчас я покажу практические примеры используемые в моей повседневной работе:

Удаление больших файлов с расширением .log

wmic datafile where «drive=’с:’ and Extension=’.log’ and FileSize>’100000′» call delete

Список заблокированный учетных записей(вывод в файл на диске с:)

Wmic /output:»c:\useraccount.html» useraccount where (Status=’Degraded’) list full /format:htable

Определение архитектуры (Как пример на Server 2008)

 wmic OS get OSArchitecture

 

Определяет тип сервера (Server 2008)

Команда возвращает числовое значение. Для Windows 2008 Server они следующие:

     7 = Windows Server 2008 Standard Edition (full installation)

    8 = Windows Server 2008 Datacenter Edition (full installation

    10 = Windows Server 2008 Enterprise Edition (full installation)

    12 = Windows Server 2008 Datacenter Edition (core installation)

    13 = Windows Server 2008 Standard Edition (core installation)

    14 = Windows Server 2008 Enterprise Edition (core installation)

    42 = Hyper-V Server 2008

            wmic OS get OperatingSystemSKU

 Как подключаться удаленным системам.

            /node:<имя_компа>

            /user:<имя_пользователя>

            /pass:<пасс_пользователя>

Завершить процесс по названию.

wmic.exe process where name=»calc.exe» delete

Wmic process where (caption=”notepad.exe”) call terminate

 Получить более подробную справку по запуску команд.

process call /?:full

 Если необходимо получить сведения о службе оповещения на компьютере

/node:<имя_компьютера> service where name=»alerter» list

 

 Вывод сведений на экран

            process where (name=»explorer.exe») get caption,commandline,handle

 

Чтобы представить вывод в файл в табличном режиме

            /output:c:\table.htm process get /format:htable

path win32_process.name=»explorer.exe» get caption,commandline,handle

 

При соединении с удалёнными системами можно брать имена компьютеров из текстового файла (server1,server2,server3)

/node:@c:\nodes.txt

context

 Сохранение во внешнем XML-файле историю запускаемых в текущей сессии wmic-команд и результаты их выполнения.

            /record:c:\outwmic.xml

 Чтобы запустить новый процесс

            process call create cmd.exe

 Подключение к другому компьютеру возможно ещё так

            /node:server /user:test /password:»password»

            /node:<ip_address>

            /user:Domain\name

 Чтобы перезагрузить компьютер

            /privileges:enable

            /node:user os where (csname=»user») call win32shutdown 2

 Чтобы выключить компьютер

            /node:user os where (csname=»user) call win32shutdown 1

 Вывод свойств операционной системы

            os get /value

 Вывод информация о состоянии всех зарегистрированных служб на компьютерах server1, server2, server3

            /node:server1,server2,server3 /output:c:\service.htm service get name,displayname,state /format:htable

 Запуск и остановка служб

            /node:server1 service where (name=»squid.exe») call startservice

Принудительно выключить компьютер

            wmic os where primary=»TRUE» call win32shutdown 6

            \\FORD-POLL\ROOT\CIMV2:Win32_OperatingSystem.Name=»Microsoft Windows XP Professional|C:\\WINDOWS|\\Device\\Harddisk0\\Partition1″

 Для того чтобы запустить сервис надо (вывести список сервисов в системе)

            service list brief

            service where (name=»<имя_сервиса>») call startservice || stopservice

            /output:c:\service.html service list full /format:htable

 Чтобы работало wmic, надо

            Служба WMI должна быть помещена в автозапуск, а также должно быть разрешено соединение по DCOM:

1) В разделе реестра HKLM\SOFTWARE\MICROSOFT\OLE установите значение EnableDCOM в «Y», а также EnableRemoteConnect в «Y». Значение EnableRemoteConnect по умолчанию «N».

2) В разделе реестра \HKLM\SOFTWARE\Microsoft\wbem\cimom установите значение AutostartWin9X в «2». Установите значение EnableAnonConnections в «1».

3) Добавьте файл Winmgmt.exe в автозагрузку. Файл находится в каталоге \Windows\WBEM.

Модели DCOM сопоставлен TCP-порт 135.

netsh firewall add portopening TCP 135 DCOM_TCP135

 Удаленно включаем службу удаленный рабочий стол (Remote Desktop)

             Wmic /node:»servername» /user:»user@domain» /password:»password» RDToggle where ServerName=»server name» call SetAllowTSConnections 1

 Вывод служб которые запускают с правами LocalSystem

            /output:c:\id\cns.html service where startname=»LocalSystem» get Caption,name,started

 Список шар на локальном машине

            wmic share get caption,name,path

 Перечисление  всех путей к папкам из которых запущены программы

            wmic.exe process get «ExecutablePath»,  «ProcessID»

 Драйверы в системе возможно останавливать или запускать например:

            net stop beep

            net start beep

            sc stop beep

            sc start beep

            wmic sysdriver where name=’beep’ call PauseService

  методы класса Win32_SystemDriver

            StartService    -> запускает службу или драйвер

            StopService     -> останавливает службу или драйвер

            PauseService  -> переводит службу или драйвер в состояние паузы

            ResumeService           -> восстанавливает состояние драйвера или службы

            InterrogateService     -> заставляет службу или драйвер обновить своё состояние в SCM

            UserControlService               -> позволяет послать службе или драйверу пользовательское сообщение.

            Create -> создаёт новую службу или драйвер

            Change           -> изменяет службы или драйвер

            ChangeStartMode      -> изменяет режим запуска службы или драйвера

            Delete             -> удаляет службу или драйвер

 Выключаем локальную машину.

                ping -n seconds 127.0.0.1>nul&wmic OS WHERE Primary=»TRUE» CALL Win32Shutdown 6

где seconds — желаемое число секунд +1; Win32Shutdown 6 — 6 = 2 (reboot) + 4 (force). Никакого видимого сообщения о перезагрузке выведено не будет.

 Полезные информационные сборки параметров.

wmic computersystem get domain, EnableDaylightSavingsTime, Manufacturer, Model, PartOfDomain, TotalPhysicalMemory, username

wmic bios get Caption, Manufacturer, SMBIOSBIOSVersion, Version

wmic baseboard get Manufacturer, Model, Product, SerialNumber, Version

wmic cpu get deviceID, Addresswidth, MaxClockSpeed, Name, Manufacturer, ProcessorID

wmic logicaldisk where drivetype=3 get name, freespace, systemname, filesystem, size, volumeserialnumber

            drivetype::

                                   = 1 NoRootDirectory             The drive does not have a root directory.

                                   = 2 Removable           The drive is a removable storage device, such as a floppy disk drive or a USB flash drive.

                                   = 3 Fixed        The drive is a fixed disk.

                                   = 4 Network   The drive is a network drive.

                                   = 5 CDRom    The drive is an optical disc device, such as a CD or DVD-ROM.

                                   = 6 Ram          The drive is a RAM disk.

 Задание приоритета процессору

            wmic process where «name=’notepad.exe'» call setpriority 64

 Выполнение команд через wmic

            просто вставляем в командную строку

            wmic process call create ‘cmd.exe /c ping 10.30.10.101’

 Прописываем DNS-суффиксы удаленно

            wmic /node: /failfast:on nicconfig call SetDNSSuffixSearchOrder (ford-i.ru,tc-toyota.local,lexus.local)

 Прописываем DNS-сервера

            nicconfig where index=8 call setdnsserversearchorder («10.30.5.2″,»10.30.5.3»)

             ,где index= указывает номер интерфейса в системе на котором у вас поднята сеть

 Команды загружаемые при входе системы

            wmic startup list full && system

wmic:root\cli>/output:c:\startup_full.html startup  list  full  /format:htable

wmic:root\cli>/output:c:\startup_system.html startup  list  system  /format:htable

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

двадцать + 20 =