Создание клиентов wmi

Drilling down the aliases of WMIC in Command Line:

In our WMI query guide we will explain how to get help from WMIC command, by drilling down each step of the command till we reach the desired result.

Run in CMD:

This will give you all the switches and the aliases available. For example, you found that the alias for the Class “Win32_ComputerSystem” is “computersystem”. Now you want to know what the available verbs for that alias are:

This will give you different examples of the verbs, but basics are “GET” to fetch the information and “SET” to set a value in the property. So now we want to know what properties of that alias are available:

Off course most of them aren’t self-explanatory so you can run them in order to see their value:

After you run the query, you will see that the first line is the name of the Property and if you want to use it in a variable in a Batch file, then you will need to skip this line. We use this in a batch in order to filter it out:

Sometimes the returned value contains a space character or two before the value and after the value, so you will need to filter those too.

Bonus: Here are some WMI query VBScript examples.

Переключатели

backupfilename<>

Позволяет WMI создать резервную копию репозитория в указанном имени файла. Аргумент имени файла должен содержать полный путь к расположению файла. Для этого процесса требуется блокировка записи в репозитории, чтобы операции записи в репозиторий приостанавливались до завершения процесса резервного копирования.

Если путь к файлу не указан, он помещается в каталог %Windir%\System32.

restorefilenameflag<><>

Вручную восстанавливает репозиторий WMI из указанного файла резервной копии. Аргумент имени файла должен содержать полный путь к расположению файла резервной копии. Чтобы выполнить операцию восстановления, WMI сохраняет существующий репозиторий для обратной записи в случае сбоя операции. Затем репозиторий восстанавливается из файла резервной копии, указанного в аргументе имени файла . Если не удается получить монопольный доступ к репозиторию, существующие клиенты отключаются от WMI.

Аргумент флага должен иметь значение 1 (принудительное отключение пользователей и восстановление) или 0 (восстановление по умолчанию, если пользователи не подключены) и указывает режим восстановления.

/resyncperfwinmgmt-service-process-id<>

Регистрирует библиотеки производительности компьютера в WMI. Идентификатор WMI — это идентификатор процесса для службы WMI.

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

/standalonehost

Перемещает службу Winmgmt в автономный процесс Svchost с фиксированной конечной точкой DCOM. Конечная точка по умолчанию — «ncacn_ip_tcp.0.24158». Однако конечную точку можно изменить, запустив Dcomcnfg.exe. Дополнительные сведения о настройке фиксированного порта для WMI см. в разделе «Настройка фиксированного порта для WMI».

Аргумент уровня — это уровень проверки подлинности для процесса Svchost. WMI обычно выполняется как часть узла общей службы, и вы не можете увеличить уровень проверки подлинности только для WMI. Если уровень не указан, значение по умолчанию равно 4 (RPC_C_AUTHN_LEVEL_PKT или WbemAuthenticationLevelPkt).

WMI можно запускать более безопасно, увеличив уровень проверки подлинности до конфиденциальности пакетов (RPC_C_AUTHN_LEVEL_PKT_PRIVACY или WbemAuthenticationLevelPktPrivacy). Уровни проверки подлинности для Visual Basic и сценариев описаны в WbemAuthenticationLevelEnum. Сведения о C++см. в разделе «Настройка уровня безопасности процесса по умолчанию с помощью C++». Дополнительные сведения см. в разделе «Обслуживание безопасности WMI».

/sharedhost

Перемещает службу Winmgmt в общий процесс Svchost.

/verifyrepositorypath<>

Выполняет проверку согласованности в репозитории WMI. При добавлении параметра /verifyrepository без аргумента пути> выполняется проверка динамического< репозитория, используемого WMI. При указании аргумента пути можно проверить любую сохраненную копию репозитория. В этом случае аргумент пути должен содержать полный путь к сохраненной копии репозитория. Сохраненный репозиторий должен быть копией всей папки репозитория. Дополнительные сведения об ошибках, возвращаемых этой командой, см. в разделе «Примечания».

/salvagerepository

Выполняет проверку согласованности в репозитории WMI и при обнаружении несоответствия перестраивает репозиторий. Содержимое несогласованного репозитория объединяется в перестроенный репозиторий, если его можно прочитать. Операция спасения всегда работает с репозиторием, который сейчас использует служба WMI. Дополнительные сведения об ошибках, возвращаемых этой командой, см. в разделе «Примечания».

% MOF-файлов, содержащих инструкцию препроцессора автоматического восстановления #pragma , восстанавливаются в репозитории.

/resetrepository

Репозиторий сбрасывается до начального состояния при первой установке операционной системы. MOF-файлы, содержащие инструкцию препроцессора автоматического восстановления #pragma , восстанавливаются в репозитории.

Переключатели

Глобальные коммутаторы используются для задания значений по умолчанию для среды WMIC. Текущее значение условий, заданных этими переключателями, можно просмотреть, введя команду CONTEXT .

/NAMESPACE

Пространство имен, в который обычно используется псевдоним. Значение по умолчанию — root\cimv2.

Пример: /NAMESPACE:\\root

WMIC пространства имен обычно ищет псевдонимы и другие сведения WMIC.

Пример: /ROLE:\\root

/NODE

Имена компьютеров, разделенные запятыми. Все команды синхронно выполняются на всех компьютерах, перечисленных в этом значении. Имена файлов должны иметь префикс &. Имена компьютеров в файле должны быть разделены запятыми или в отдельных строках.

Уровень олицетворения.

Пример: /IMPLEVEL:Anonymous

Уровень проверки подлинности.

Пример: /AUTHLEVEL:Pkt

Языкового стандарта.

Пример: /LOCALE:MS_411

Включите или отключите все привилегии.

Пример: /PRIVILEGES:ENABLE или /PRIVILEGES:DISABLE

/TRACE

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

Пример: /TRACE:ON или /TRACE:OFF

/RECORD

Записывает все выходные данные в XML-файл. Выходные данные также отображаются в командной строке.

Пример: **/RECORD:**MyOutput.xml

Как правило, команды удаления подтверждаются.

Пример: /INTERACTIVE:ON или /INTERACTIVE:OFF

/FAILFAST onoffTimeoutInMilliseconds||

Если этот параметр включен, компьютеры /NODE выполняют связь перед отправкой им команд WMIC. Если компьютер не отвечает, команды WMIC не отправляются на него.

Пример: «/FAILFAST:ON» или «/FAILFAST:OFF»

WMIC /FAILFAST:1000

/USER

Имя пользователя, используемое WMIC при доступе к компьютерам /NODE или компьютерам, указанным в псевдонимах. Появится запрос на ввод пароля. Имя пользователя нельзя использовать с локальным компьютером.

Пример: **/USER:**JSMITH

/PASSWORD

Пароль, используемый WMIC при доступе к компьютерам /NODE. Пароль отображается в командной строке.

Пример: **/PASSWORD:**password

/OUTPUT

Задает режим для всех перенаправлений выходных данных. Выходные данные не отображаются в командной строке, а назначение очищается до начала вывода. Допустимые значения: STDOUT, CLIPBOARD или имя файла.

Пример: /OUTPUT:CLIPBOARD

/APPEND

Задает режим для всех перенаправлений выходных данных. Выходные данные не отображаются в командной строке, а назначение не очищается до начала выходных данных, а выходные данные добавляются в конец текущего содержимого назначения. Допустимые значения: STDOUT, CLIPBOARD или имя файла.

Пример: /APPEND:CLIPBOARD

/AGGREGATE

Используется с параметром LIST и GET /EVERY . Если параметр AGGREGATE имеет значение ON, LIST и GET отображают результаты, когда все компьютеры в /NODE были возвращены или истекли. Если функция AGGREGATE отключена, функция LIST и GET отображают результаты сразу после их получения.

Пример: /AGGREGATE:OFF или /AGGREGATE:ON

Перечисление WMI с помощью C++

Помимо выполнения базового перечисления, можно задать несколько флагов и свойств, чтобы повысить производительность перечисления. Дополнительные сведения см. в разделе «Улучшение производительности перечисления».

Перечисление набора объектов в WMI

  1. Создайте интерфейс IEnumWbemClassObject , описывающий набор объектов, которые требуется перечислить.

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

    Объект Метод
    Класс
    Экземпляр
    Результат запроса
    Уведомление о событии
  2. Обход возвращаемого перечисления с помощью нескольких вызовов IEnumWbemClassObject::Next или IEnumWbemClassObject::NextAsync.

Дополнительные сведения см. в разделе «Управление сведениями о классе и экземпляре».

OC Windows NT, основные характеристики.

Первая версия ОС Windows NT появилась в 1993г.

Windows NT – многопользовательская, многозадачная, многопоточная ОС. Отличительными чертами этой ОС являются:

– встроенная сетевая поддержка. Windows NT изначально создавалась с учетом работы в вычислительной сети., поэтому в интерфейс пользователя встроены функции совместного использования сетевых файлов, устройств и объектов.

– приоритетная многозадачность, позволяющая приложениям с более высоким приоритетом вытеснять менее приоритетные приложения, что приводит к более эффективному использованию машинного времени ввиду автоматической ликвидации зависания системы при выполнении «сбойного» приложения.

– присутствие достаточно мощных средств защиты файлов различных пользователей от несанкционированного доступа. Наличие многоуровневого доступа к ресурсам с назначением пользователям уровня доступа в соответствии с их компетенцией.

– поддержка нескольких файловых систем ( кроме FAT ), имеет свою файловую систему NTFS.

– поддержка широкого спектра компьютерных платформ.

ОС Windows NT имеет 2 сетевые модификации:

1. Windows NT Workstation. Предназначена для установки на рабочих станциях с возможностью организации одноранговых сетей.

2. Windows NT Server. Позволяет реализовать полноценную сеть с выделенным сервером. Сервер сети может выступать как: сервер печати, файл-сервер, сервер приложений, сервер Интернета и т.д.

Проектировалась ОС Windows NT для реализации модели «клиент-сервер» и оринтировалась на мощную машину сервер, выделяющую по запросу клиента нужные ему вычислительные ресурсы – вычисления выполняются на сервере, а результаты расчетов передаются клиенту. В первую очередь система ориентируется на выполнение таких приложений, которые свойственны: серверу баз данных SQL, серверу информационного обмена, серверу Интернета, серверу связи с мэйнфреймами.

Поиск определенного экземпляра ресурса WMI

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

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

  • Вызов Session.Enumerate с параметрами фильтра и диалекта для создания запроса.

  • Вызов SWbemServices.Get. Для Session.Get необходимо указать одно или несколько конкретных значений ключей перед вопросительным знаком (?).

    Формат универсального кода ресурса (URI) для конкретного экземпляра: .

    Класс WMI может иметь несколько ключей. Пары «имя-значение» ключа разделяются знаком «+». В этом случае формат: .

    Синтаксис WinRM для получения одноэлементного объекта WMI отличается от WMI. Одноэлементный класс — это класс WMI, определенный таким образом, чтобы разрешено использовать только один экземпляр. Win32_CurrentTime или Win32_WMISetting являются примерами одноэлементного класса WMI.

    Синтаксис WMI для одноэлементных элементов показан в следующем примере кода VBScript.

    В следующем примере показан одноэлементный синтаксис WinRM, который не использует «@».

  • Добавление селектора в объект ResourceLocator или IWSManResourceLocator .

    В следующем примере кода VBScript показано, как использовать селектор для получения определенного экземпляра Win32_Processor.

Разрешения по умолчанию для пространств имен WMI

Группы безопасности по умолчанию:

  • Прошедшие проверку пользователи
  • LOCAL SERVICE
  • СЕТЕВАЯ СЛУЖБА
  • Администраторы (на локальном компьютере)

Разрешения доступа по умолчанию для прошедших проверку подлинности пользователей, LOCAL SERVICE и NETWORK SERVICE:

  • Выполнение методов
  • Полная запись
  • Включить учетную запись

Учетные записи в группе «Администраторы» имеют все права, доступные для них, включая редактирование дескрипторов безопасности. Однако из-за контроля учетных записей (UAC) элемент управления WMI или скрипт должен выполняться при повышенной безопасности. Дополнительные сведения см. в разделе «Контроль учетных записей пользователей» и WMI.

Иногда скрипт или приложение должны включить права администратора, такие как SeSecurityPrivilege, для выполнения операции. Например, скрипт может выполнить метод GetSecurityDescriptor класса Win32_Printer без SeSecurityPrivilege и получить сведения о безопасности в списке управления доступом по усмотрению (DACL)дескриптора безопасности объекта принтера. Однако сведения saCL не возвращаются в скрипт, если только привилегия SeSecurityPrivilege не будет доступна и включена для учетной записи. Если у учетной записи нет прав доступа, ее нельзя включить. Дополнительные сведения см. в разделе «Выполнение привилегированных операций».

Получение событий WMI с помощью Просмотр событий

Файл WMITracing.log содержит события, которые трассируются WMI. Однако это двоичный файл. Чтобы увидеть эти события в формате, доступном для чтения людьми, используйте Просмотр событий.

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

Просмотр событий WMI в Просмотр событий

  1. Откройте средство просмотра событий. В меню «Вид » щелкните «Показать журналы аналитики и отладки». Найдите журнал канала трассировки для WMI в разделе «Журналы приложений и служб» | Microsoft | Windows | Действие WMI.
  2. Щелкните правой кнопкой мыши журнал трассировки и выберите пункт «Свойства журнала». Установите флажок «Включить ведение журнала «, чтобы запустить трассировку событий WMI. Дополнительные сведения о каналах см. в разделе «Журналы событий» и «Каналы» в журнале событий Windows.
  3. События WMI отображаются в окне событий для WMI-Activity. Дважды щелкните событие в списке, чтобы просмотреть подробные сведения. Событие можно просмотреть в XML-представлении или в понятном формате.

В поле «Идентификатор события » отображается значение, содержащее следующие сведения.

Событие 1

Начало последовательности событий для определенной операции. Одно вхождение для каждой последовательности.

Поля событий для события 1:

  • GroupOperationID — это уникальный идентификатор, используемый для всех событий, сообщающихся для конкретного клиента.
  • OperationId указывает последовательность операций.
  • Операция указывает подключение или запрос к WMI.
  • Пользователь указывает учетную запись, которая выполняет запрос к WMI путем выполнения скрипта или CIM Studio.
  • Пространство имен показывает пространство имен WMI, к которому выполняется подключение.

Например, скрипт может запрашивать все экземпляры класса WMI, например Win32_Service. Первая операция может быть подключением к WMI.

Событие 2

События, составляющие операцию. Одно или несколько вхождений в последовательности.

Поля событий для события 2:

  • GroupOperationID указывает последовательность, в которой происходит событие.
  • GroupOperationID указывает последовательность, в которой происходит событие.
  • ProviderName указывает имя поставщика, который предоставляет данные.
  • Путь — это путь WMI к объекту.

Например, операция может быть перечислением Win32_Service.

Событие 3

Конец последовательности событий для определенной операции. Одно вхождение для каждой последовательности.

Отображается только GroupOperationID .

Устранение неполадок Windows

При работе с Windows 10, 8 и Windows 7 пользователи нередко сталкиваются с некоторыми распространенными неполадками, связанными с работой сети, установкой обновлений и приложений, устройств и другими. И в поиске решения проблемы обычно попадают на сайт наподобие этого.

При этом в Windows присутствуют встроенные средства устранения неполадок для самых распространенных проблем и ошибок, которые в «базовых» случаях оказываются вполне работоспособны и для начала следует попробовать только их. В Windows 7 и 8 устранение неполадок доступно в «Панели управления», в Windows 10 — в «Панели управления» и специальном разделе «Параметров».

Инструмент «Управление компьютером» можно запустить, нажав клавиши Win+R на клавиатуре и введя compmgmt.msc или найти соответствующий пункт в меню «Пуск» в разделе «Средства администрирования Windows».

В управлении компьютером находится целый набор системных утилит Windows (которые можно запустить и отдельно), перечисленные далее.

Планировщик заданий

Планировщик заданий предназначен для запуска тех или иных действий на компьютере по расписанию: с помощью него, например, можно настроить автоматическое подключение к Интернету или раздачу Wi-Fi с ноутбука, настроить задачи обслуживания (например, очистки) при простое и многое другое.

Запуск планировщика заданий возможен также из диалогового окна «Выполнить» — taskschd.msc .

Просмотр событий

Просмотр событий Windows позволяет посмотреть и отыскать при необходимости те или иные события (например, ошибки). Например, выяснить, что мешает выключению компьютера или почему не устанавливается обновление Windows. Запуск просмотра событий возможен также по нажатию клавиш Win+R, команда eventvwr.msc .

Монитор ресурсов

Утилита «Монитор ресурсов» предназначена для оценки использования ресурсов компьютера запущенными процессами, причем в более подробном виде, чем диспетчер устройств.

Для запуска монитора ресурсов вы можете выбрать пункт «Производительность» в «Управлении компьютером», затем нажать «Открыть монитор ресурсов». Второй способ запуска — нажакть клавиши Win+R, ввести perfmon /res и нажать Enter.

Управление дисками

При необходимости разделить диск на несколько разделов, изменить букву диска, или, скажем, «удалить диск D», многие пользователи загружают стороннее ПО. Иногда это оправдано, но очень часто всё то же самое можно сделать с помощью встроенной утилиты «Управление дисками», запустить которую можно, нажав клавиши Win+R на клавиатуре и введя diskmgmt.msc в окно «Выполнить», а также по правому клику по кнопке Пуск в Windows 10 и Windows 8.1.

Отладка/запись событий WMI

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

  1. Открыть Просмотр Событий (Event Viewer, Eventvwr).
  2. В меню Вид, выбрать Отобразить аналитический и отладочный журналы.
  3. В дереве в левом фрейме разворачиваем пункт Журналы приложений и служб (Applications and Service Logs) → Microsoft → Windows → WMI Activity
  4. Правую кнопку мыши на пункте Trace и выбираем Включить журнал (Enable Log). Если выбрать Свойства из того же меню, то можно увидеть куда пишутся события трассировки: .

The Basics

We’re not really going to be looking at what you can do with WMI in general, except by way of demonstrating some
functionality within the module. There are no few examples around the web of what you can do with the technology
(and you can do most things with it if you try hard enough). Some links are at the bottom of the document.

Connecting

Most of the time, you’ll simply connect to the local machine with the defaults:

import wmi
c = wmi.WMI()

If you need to connect to a different machine, specify its name as the first parameter:

import wmi
c = wmi.WMI("other_machine")

Querying

The most common thing you’ll be doing with WMI is finding out about various parts of your system. That involves
determining which WMI class to interrogate and then treating that as an attribute of the Python WMI object:

import wmi
c = wmi.WMI()
for os in c.Win32_OperatingSystem():
    print(os.Caption)

The «which WMI class to interrogate» part of that earlier sentence is not always so easy as it sounds. However,
with a good search engine at your disposal, you can be pretty much assured that someone somewhere has done the same
thing as you albeit with a different language. There are some helpful links at the bottom of this document, but I
often simply stick «WMI thing-to-do» into my search engine of choice and scan the results for convincing answers.

Note that, although there is only, in this case, one Operating System, a WMI query always returns a list, possibly
of one item. The items in the list are wrapped by the Python module for attribute access. In this case, the
Win32_OperatingSystem class has several attributes, one of which is .Caption, which refers to the name of the
installed OS.

Monitoring

WMI has the concept of events. There are two types, intrinsic and extrinsic, which are discussed below. The Python
module makes the difference as transparent as it can. Say you wanted to track new processes starting up:

import wmi
c = wmi.WMI()
process_watcher = c.Win32_Process.watch_for("creation")
while True:
    new_process = process_watcher()
    print(new_process.Caption)

Note that you must pass one of «creation», «deletion», «modification» or «operation» to the .watch_for method. If
not, slightly odd errors will result.

..  versionadded:: 1.3.1
    If you don't specify a notification type to an intrinsic event then
    "operation" will be assumed, which triggers on any change to an object of that class.

Updating

Some, but by no means all, WMI classes allow for the possibility of writing information back. This you do by
setting attributes as usual in Python. Note that the class may let you do this without complaint even though
nothing useful has happened. To change the display name of a service, for example, you need to call the service’s
.Change method. You can update the displayName attribute directly without error, but it will have no effect.

The most typical place in which you’ll set an attribute directly is when you’re creating a whole new object from a
class’s .new method. In that case you can either set all the parameters as keyword arguments to the .new call or
you can specify them one by one afterwards.

Methods

Some WMI classes have methods to operate on them. You can call them as though they were normal class or instance
methods in Python. From version 1.3.1, parameters can be positioned; before that, they must be named. If you wanted
to stop the (running) RunAs service, whose short name is «seclogon»:

import wmi
c = wmi.WMI()
for service in c.Win32_Service(Name="seclogon"):
    result, = service.StopService()
    if result == 0:
        print("Service", service.Name, "stopped")
    else:
        print("Some problem")
    break
else:
    print("Service not found")

Команды

Следующие команды WMIC доступны в любое время. Дополнительные сведения см. в командах WMIC.

CLASS

Экранирование из режима псевдонима по умолчанию WMIC для доступа к классам в схеме WMI напрямую. Дополнительные сведения о доступных классах WMI см. в разделе WMI.

Пример: класс WMIC /OUTPUT:c:\ClassOutput.htm Win32_SoundDevice

PATH

Экранирование из режима псевдонима по умолчанию WMIC для доступа к экземплярам в схеме WMI напрямую.

Пример: WMIC /OUTPUT:c:\PathOutput.txt PATH Win32_SoundDevice GET /VALUE

Отображение текущих значений всех глобальных коммутаторов.

Пример: WMIC CONTEXT

Выход из WMIC.

Пример: WMIC QUIT

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

Поставщик событий — это com-компонент, который отправляет событие в WMI. Вы можете создать поставщик событий для отправки события в приложении C++ или C#. Большинство поставщиков событий управляют объектом для WMI, например приложением или аппаратным элементом. Дополнительные сведения см. в разделе «Написание поставщика событий».

Событие времени или повторения — это событие, которое происходит в определенное время.

WMI предоставляет следующие способы создания временных или повторяющихся событий для приложений:

  • Стандартная инфраструктура событий Майкрософт.
  • Специализированный класс таймера.

Дополнительные сведения см. в разделе «Получение события по времени» или «Повторяющееся». При написании поставщика событий учитывайте сведения о безопасности, определенные в разделе «Безопасное предоставление событий».

Рекомендуется скомпилировать постоянные подписки на события в пространство имен \root\subscription. Дополнительные сведения см. в разделе «Реализация подписок на постоянные события между пространствами имен».

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: