Вывести список всех классов wmi на локальном компьютере

Обновлено: 07.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

ClassName – имя класса

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

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

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

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

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

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

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

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

Определяет тип сервера (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

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

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

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

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

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

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

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

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

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

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

process call create cmd.exe

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

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

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

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

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

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

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

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

service list brief

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

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

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

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

netsh firewall add portopening TCP 135 DCOM_TCP135

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

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

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

wmic share get caption,name,path

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

= 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

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

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

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

,где 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

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще :)

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Основы работы с WMI через Powershell

WMI (Windows Management Instrumentation) - это технология, с помощью которой можно получить и изменить достаточно широкий перечень параметров Windows.

Для примера мы хотим узнать информацию о процессоре. Мы можем использовать команду CMD sysinfo или Powershell Get-ComputerInfo, но увидеть только часть информации. С помощью WMI мы можем получить почти всю информацию.

Для получения всех классов WMI в Powershell мы можем использовать:

Мы получим все классы для пространства имен root\cimv2 т.к. оно стоит по умолчанию. Если мы хотим использовать другое, то его нужно указать с ключом -Namespace.

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

Где:
-ComputerName - имя компьютера

WMI работает на 135 порту, а так же привилегированная учетная запись с правами на WMI и DCOM.

Либо у нас должен работать PSRemoting (тогда мы будем использовать Ivoke-Command). Весь процесс описан тут.

Навигация по посту

Получение свойств класса через Powershell WMI

Если мы еще не знаем какой класс нам нужен, а вывод очень большой, то мы можем немного отфильтровать результат. На примере я искал классы где в имени есть BIOS:

Если мы выведем свойства класса операционной системы, то не увидим названия:

Получение класса WMI Powershell

Часть свойств можно получить и так:

Для того что бы отобразить все свойства нужно выполнить:

Получение всех свойств через WMI Powershell

Либо можно объявить результат в переменную:

Получить все значения переменной:

Все значения WMI Powershell

И затем вызывать через переменную. Так я получу название:

Поиск свойств в Powershell WMI

У нас два способа поиска нужных свойств. Первый через ключ -Filter:

Фильтрация свойств WMI Powershell

Но если мы напишем что-то не так, то увидим язык WQL (WMI Query Language):

Т.е. мы можем писать и запрос WQL:

Вызов методов WMI через Powershell

Этот метод запустит Notepad.exe на удаленном компьютере AD. В $cred будут храниться учетные данные, если мы будем запускать процесс под другим пользователем.

Есть другой подход, с другой командой:

Отмечу, что вызвать процесс в графической оболочке нельзя, он будет запущен в бэкграунде. Связано это с тем, что Microsoft против что бы вторгались в интерактивный сеанс пользователя кому-либо (не моя цитата). Один из вариантов решения этого помещать задачи в планировщике.

Для того что бы увидеть остальные команды по работе с WMI в Powershell можно запустить:

Команда WMIC (Windows Management Instrumentation Command) используется для получения сведений об оборудовании и системе, управления процессами и их компонентами, а также изменения настроек с использованием возможностей инструментария управления Windows ( W indows M anagement I nstrumentation или WMI) .

Инструментарий управления Windows (WMI) – это набор программных средств, обеспечивающий управление системой с использованием сценариев, выполняемых в среде Windows Script Host ( ранее - Windows Scripting Host ) или в командной строке с помощью утилиты WMIC.EXE . Windows Script Host или сокращенно WSH - это компонент Microsoft Windows, предназначенный для запуска сценариев на скриптовых языках JScript и VBScript. Сценарии WSH обычно используются в тех случаях, когда требуется выполнить набор каких-либо действий, требующих написания относительно сложного исходного кода, но нередко в повседневной практике администрирования, удобнее воспользоваться возможностями командной строки WMIC .

Технология WMI — это расширенная и адаптированная под Windows реализация стандарта Web-Based Enterprise Management ( WBEM ), принятого многими крупными компаниями в качестве универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML. В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. Практически, WMI, основанный на CIM, является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.

Программные средства WMI устанавливаются по умолчанию и включают в себя следующие компоненты:

wmimgmt.msc – оснастка консоли MMC, позволяющая в целом управлять самой системой WMI на выбранном компьютере.

Winmgmt.exe – консольная утилита управления WMI. Выполняет аналогичные действия, что и консоль MMC wmimgmt.msc. Кроме того, в Windows 2000 является исполняемым файлом сервиса WMI в системе. Для запуска из консоли используется с опцией /exe (winmgmt.exe /exe). Начиная с Windows XP, исполняемым файлом WMI является библиотека wmisvc.dll , загружаемая с помощью хост-контроллера svchost.exe (Generic Host Process for Win32 Services). В Windows 7-10 утилита winmgmt.exe позволяет выполнить конфигурирование службы WMI как для группы SVChost под именем netsvcs , так и для отдельной группы с именем Winmgmt . В среде Windows 10 группировка служб, запускаемых с помощью svchost.exe , практически не используется – большинству служб соответствует свой собственный процесс svchost.exe.

Wbemtest.exe – графическая утилита для интерактивной работы с WMI. Удобна для тестирования классов и методов, просмотра свойств и т. п.

Wmic.exe – консольная утилита для вызова объектов и методов WMI (WMI Console) – присутствует только в Windows XP и более поздних версиях Windows.

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

Основной каталог данных WMI при стандартной установке Windows - C:\Windows\System32\wbem .

Формат командной строки:

wmic [глобальные параметры]

Если параметры командной строки отсутствуют, то утилита wmic.exe переходит в интерактивный режим, с отображением приглашения к вводу команд:

Подсказку по работе с утилитой wmic.exe можно получить по команде:

wmic /? - отобразить общую справку.

wmic /?:BRIEF - отобразить краткую справку.

wmic /?:FULL - отобразить полную стправку.

Содержание общей справки:

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

VOLUMEUSERQUOTA - Управление квотами для индивидуальных томов хран.

Содержимое полной справки, получаемой по команде wmic /?:full :

Класс (Class) – Класс – это определение объекта WMI. Например, класс процесс (process) определяет все характеристики любого процесса, но не ссылается на какой-либо конкретный процесс.

Объект (Object) – Иногда называется экземпляром класса (instance); Это конкретный набор данных WMI, определенное проявление класса.

Действие (Action) – Также называется методом (method). Действие – это доступная для выполнения функция класса или объекта WMI, некоторая операция, которую мы можете заставить выполнить класс или объект. Например, завершение процесса объектом Process с использованием метода delete, как это рассматривается ниже.

Свойства - параметры объекта.

Путь объекта - путь WMI для использования при обращении к экземпляру или классу.

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

Утилита WMIC создана для удобства применения WMI непосредственно из командной строки, поэтому наиболее используемые классы WMI доступны под заранее определенными псевдонимами (ALIAS). Также, имеется возможность самостоятельного определения псевдонимов для тех классов, для которых это еще не сделано, или добавить новые псевдонимы для тех классов WMI, которые уже их имеют.

Утилита WMIC предоставляет три основных параметра для управления отображением данных:

/OUTPUT – вывод во внешний файл.

/FORMAT – позволяет форматировать информацию.

/TRANSLATE – настройка вывода специальных символов.

Кроме вывода в файл, возможен вывод в буфер обмена, если задан параметр /OUTPUT:CLIPBOARD . В качестве дополнительного средства протоколирования вместо параметра /OUTPUT можно использовать параметр /RECORD: . Для отмены протоколирования в интерактивном режиме используется параметр /RECORD:””

Форматы выводимых данных:

CSV – вывод данных в одну строку, с разделителем в виде запятой.

HFORM – информация отображается в виде списка, оформленного в HTML-формате. Отображается две колонки - название объекта и его значение.

HTABLE – формат вывода данных в виде HTML таблицы.

LIST – вывод свойства и его значения происходит в отдельной строке.

MOF – собственно, информация преобразуется в формат MOF.

RAWXML – вывод данных в XML файл.

TABLE – табличный формат вывода данных.

VALUE – аналогично значению LIST.

XML – вывода данных в XML файл, но с дополнительной информацией.

Параметр /TRANSLATE используется совместно с оператором GET в тех случаях, когда есть необходимость вывода символов, стандартно используемых для форматирования текста или разделения полей. В среде WMIC поддерживаются таблицы BasicXml и NoComma

Необходимо учитывать тот факт, что формат вывода данных и их вид будет зависеть от порядка следования параметров /TRANSLATE и /FORMAT:

- Если /TRANSLATE следует раньше чем /FORMAT, то сначала выполняется преобразование, а затем форматирование выводимых данных.

- Если /FORMAT идет раньше /TRANSLATE, то сначала выполняется форматирование, а затем – преобразование.

Примеры использования WMIC для работы с процессами.

Список псевдонимов, доступный на локальном компьютере можно получить с помощью команды:

wmic alias list brief

Для класса Win32_Process предусмотрен псевдоним Process . Соответственно, для получения подсказки можно воспользоваться командой:

Отображаемая справка для Windows 10:

Для получения списка процессов используется параметр LIST . Для получения подсказки по форматам и параметрам LIST можно использовать команду:

wmic process list /?

Для получения списка процессов, отображаемого в кратком формате, используется команда:

wmic process list brief

Пример выводимой информации:

Для вывода сведений о процессах в html-файл:

wmic /output:c:\proclist.htm process list /format:htable

Параметр /output задает имя файла с результатами, а параметр /format - формат выводимых данных.

wmic /output:proclist1.htm process list /format:hform - вывод результатов в HTML-файл в виде списка процессов с двумя колонками из названия свойства и его значения.

Для получения списка процессов на удаленной системе используется команда:

wmic /user:"Admin" /password:"admpass" /node:"Comp0" process list brief

В команде указываются имя пользователя и пароль для подключения к удаленной системе указанной параметром /node: . Если имя пользователя и пароль не заданы, то используется учетная запись текущего пользователя. Вместо имени компьютера можно задавать его IP-адрес:

wmic /node:”192.168.1.132” process list brief

Если имена компьютеров содержат специальные символы, то они должны заключаться в двойные кавычки:

wmic /node:”server-01” process list brief

Возможно указание списка имен или IP-адресов удаленных компьютеров:

wmic /node:”server-01”,”192.168.0.1” process list brief

Параметр /node может включать либо список компьютеров, либо имя текстового файла со списком. Файл должен содержать имена компьютеров, разделенные запятой, или набор строк с именами по одному в строке. При использовании списка удаленных компьютеров из файла, перед его именем в параметре /node должен присутствовать символ @ :

wmic /node:”@C:\comps.txt” process list brief

При обработке списка компьютеров, взятого из текстового файла, какие-либо из перечисленных компьютеров могут быть выключены, поэтому, для сокращения времени выполнения команды, желательно использовать параметр /FAIFAST:ON , который позволит исключить применение команды по отношению к узлам, не отвечающим на эхо-запрос (не отвечающим на ping):

wmic /failfast:on /node:”@C:\comps.txt” process list status

Для опроса состояния конкретного процесса, например браузера Chrome можно использовать команду:

wmic process where name=”chrome.exe” list status

Для принудительного завершения процесса используется команда:

wmic process where name=”chrome.exe” delete

wmic process where name=”chrome.exe” call terminate

Для запуска программы на локальном компьютере:

wmic process call create "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" Для запуска программ на удаленных компьютерах используется параметр /node , рассмотренный выше и полные пути исполняемых файлов относительно удаленной системы.

Примеры использования WMIC для получения сведений о компонентах системы.

WMIC OS LIST BRIEF - отобразить краткие сведения о системе.

wmic OS GET Name - отобразить версию ОС Windows и устройство загрузки.

WMIC OS GET csname,bootdevice,localdatetime - отобразить имя компьютера, устройство загрузки, локальные дату и время.

WMIC OS GET locale, oslanguage, codeset - отобразить данные локализации Windows

WMIC OS GET osarchitecture /value - отобразить архитектуру системы (разрядность Windows, например - значение OSArchitecture=64-bit для 64-разрядной системы)

WMIC QFE list brief - отобразить список обновлений Quick Fix Engineering (QFE) Windows.

wmic qfe list brief | find “311” - отобразить список обновлений Windows, в названии которых присутствует 311 .

WMIC QFE get hotfixid,description,installedOn - отобразить список обновлений Windows, включающий название, краткое описание и дату установки.

WMIC DISKDRIVE get name,size,model - отобразить список физических дисков, содержащих название модели, имя в системе и размер.

WMIC PARTITION list brief - отобразить список всех разделов на всех дисках.

WMIC LOGICALDISK list brief - отобразить список логических дисков.

WMIC LOGICALDISK where drivetype=4 get FreeSpace,ProviderName - отобразить свободное место и путь для сетевых дисков (drivetype=4)

WMIC LOGICALDISK where drivetype!=4 get freespace, description - отобразить свободное место и описание для локальных дисков, включая CD/DVD и съемные устройства хранения данных.

WMIC LOGICALDISK where description='Local Fixed Disk' get deviceid, volumename - отобразить идентификаторы (буквы дисков) и метки томов для всех локальных логических дисков.

WMIC SERVICE list brief | more - отобразить список системных служб в постраничном режиме.

WMIC SERVICE where state=”running” GET caption,name,state /format:list - отобразить список, включающий отображаемые имена, короткие имена и статус работающих системных служб.

WMIC SERVICE where state=”Stopped” GET caption,name,state /format:list - отобразить список, включающий отображаемые имена, короткие имена и статус остановленных системных служб.

WMIC SERVICE where name='WinRM' CALL STARTSERVICE - запустить службу удаленного управления Windows (WinRM)

WMIC SERVICE where name='WinRM' GET name,state - проверить состояние службы WinRM.

WMIC PRINTER LIST STATUS - отобразить список принтеров и их состояние.

WMIC BASEBOARD list brief - отобразить общую информацию о материнской плате компьютера.

wmic bios get Manufacturer - отобразить сведения о производителе BIOS.

wmic bios get smbiosbiosversion - отобразить версию BIOS.

wmic bios get Description - отобразить описание производителя BIOS.

WMIC MEMORYCHIP list brief - отобразить сведения о модулях памяти компьютера.

WMIC MEMORYCHIP GET Devicelocator,Capacity - отобразить сведения о размещении и емкости модулей памяти DIMM.

Пример командного файла, который отображает основные сведения об оборудовании и операционной системе компьютера:

Инструментарий управления Windows (WMI) является ключевой технологией системного администрирования Windows, поскольку предоставляет широкий спектр сведений в унифицированном виде. Так как спектр возможностей инструментария WMI достаточно широк, командлет Get-CimInstance PowerShell для доступа к объектам WMI наиболее полезный. Мы рассмотрим, как командлет CimCmdletst обращается к объектам WMI и как использовать объекты WMI для выполнения определенных задач.

Вывод списка классов WMI

Первая проблема, с которой сталкивается большинство пользователей WMI, — это выяснение того, что можно сделать с помощью инструментария WMI. Классы WMI описывают ресурсы, которыми можно управлять. Имеются сотни классов WMI, некоторые из которых содержат множество свойств.

Командлет Get-CimClass решает эту проблему, предоставляя сведения об инструментарии WMI. Список классов WMI, доступных на локальном компьютере, можно получить, введя команду:

Те же сведения можно извлечь на удаленном компьютере, указав в параметре ComputerName имя или IP-адрес компьютера.

Список классов, возвращаемый удаленным компьютером, может различаться в зависимости от операционной системы компьютера и определенных расширений WMI, добавленных установленными приложениями.

При использовании командлетов CIM для подключения к удаленному компьютеру на последнем должен быть запущен инструментарий WMI, а используемая учетная запись должна входить в группу локальных администраторов на удаленном компьютере. В удаленной системе можно не устанавливать оболочку PowerShell. Это позволяет администрировать операционные системы, на которых не запущена оболочка PowerShell, но есть инструментарий WMI.

Вывод сведений о классе WMI

Если имя класса WMI уже известно, можно немедленно получить сведения о нем. Например, одним из классов WMI, используемых для получения сведений о компьютере, является Win32_OperatingSystem.

Хотя показаны все параметры, команда может быть представлена в более короткой форме. Параметр ComputerName не является обязательным при подключении к локальной системе. Мы покажем это, чтобы продемонстрировать наиболее общий случай и напомнить об этом параметре. По умолчанию параметр Namespace имеет значение root/CIMV2 и может быть опущен. В конце концов, большинство командлетов позволяет опускать имя типовых параметров. Если в командлете Get-CimInstance не указано имя для первого параметра, PowerShell считает его параметром Class. Это значит, что последнюю команду можно было ввести в таком виде:

Класс Win32_OperatingSystem имеет больше свойств, чем показано здесь. Можно воспользоваться командлетом Get-Member, чтобы показать все свойства. Свойства класса WMI автоматически доступны, как и другие свойства объекта:

Вывод свойств, отличных от используемых по умолчанию, с помощью командлетов Format

Если необходимо показать сведения, содержащиеся в классе Win32_OperatingSystem, которые не выводятся по умолчанию, можно воспользоваться командлетом Format. Например, если нужно показать сведения о количестве доступной памяти, введите:

В именах свойств в командлете Format-Table допускаются подстановочные знаки, поэтому последний элемент конвейера может быть сокращен до Format-Table -Property Total*Memory*, Free* .

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

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


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

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

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

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

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

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

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

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

[\ComputerNameNameSpace][: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

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

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

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

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

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

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

/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)

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

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

process call create cmd.exe

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

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

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

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

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

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

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

/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-POLLROOTCIMV2: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) В разделе реестра HKLMSOFTWAREMICROSOFTOLE установите значение EnableDCOM в «Y», а также EnableRemoteConnect в «Y». Значение EnableRemoteConnect по умолчанию «N».

2) В разделе реестра HKLMSOFTWAREMicrosoftwbemcimom установите значение AutostartWin9X в «2». Установите значение EnableAnonConnections в «1».

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

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:idcns.html service where startname=»LocalSystem» get Caption,name,started

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

wmic share get caption,name,path

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

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

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

wmic sysdriver where name=’beep’ call PauseService

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

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

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

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

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

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

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

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

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

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

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

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

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

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

= 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

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

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

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

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

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

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

Читайте также: