Wmi namespace что это
Пространства имен и классы диспетчера конфигурации WMI для отчетов Configuration Manager
При установке диспетчера конфигурации создается несколько пространств имен Windows инструментов управления (WMI), и в зависимости от пространства имен в каждом пространстве имен могут создаваться сотни классов. Кроме того, на каждом сайте могут быть классы, которые могут не иметь другие сайты в зависимости от определенных параметров сайта, отслеживаемого инвентаризации и так далее.
Пространства имен WMI, созданные диспетчером конфигурации
Следующие пространства имен WMI создаются диспетчером конфигурации:
Извлечение пространств имен и классов configuration Manager WMI с помощью Visual Basic скрипта
Простой способ перечислить классы, связанные с диспетчером конфигурации, созданные на вашем сайте, — это запустить сценарий microsoft Visual Basic. В следующем скрипте будут сканировать все классы в каждом из перечисленных выше пространств имен WMI и выводит результаты в текстовый файл.
Запуск скрипта для сканирования пространств имен и классов WMI
Скопируйте следующий код в Блокнот:
Создайте папку C: \ WMIScan.
Сохраните сценарий WMIScan.vbs в папке \ C: WMIScan.
Откройте окно командной строки.
Тип C. \ WMIScan \WMIScan.vbs/sitecode:ABC и нажмите кнопку Ввод. Обязательно замените ABC соответствующим кодом сайта.
В вышеуказанной командной строке предполагается, что сценарий запускается с сервера сайта Configuration Manager. Чтобы подключиться к WMI на удаленном сервере сайта, используйте аргумент /computername для указания удаленного компьютера. Например, чтобы подключиться к коду сайта ABC на компьютере1, необходимо ввести C:\WMIScan\WMIScan.vbs/sitecode:ABC/computer:Computer1 в командной строке.
Сценарий создает текстовый файл (в C: WMIScan) со всеми классами WMI в каждом из пространств имен WMI для Configuration Manager при запуске на сервере основного сайта \ Configuration Manager. Кроме того, создается файл журнала с перечислением всех отсканированных пространств имен и успешной проверкой. Следует помнить, что некоторые пространства имен не будут присутствовать на некоторых серверах сайтов в зависимости от того, какие параметры были настроены.
Access to WMI Namespaces
WMI uses a standard Windows security descriptor to control access to WMI namespaces. When you connect to WMI, either through the WMI «winmgmts» moniker or a call to IWbemLocator::ConnectServer or SWbemLocator.ConnectServer, you connect to a specific namespace.
The following information is discussed in this topic:
WMI Namespace Security
WMI maintains namespace security by comparing the access token of the user connecting to the namespace with the security descriptor of the namespace. For more information about Windows security, see Access to WMI Securable Objects.
Be aware that, starting with WindowsВ Vista, User Account Control (UAC) affects access to WMI data and what can be configured with the WMI Control. For more information, see Default Permissions on WMI Namespaces and User Account Control and WMI.
Access to WMI namespaces is also affected when the connection is from a remote computer. For more information, see Connecting to WMI on a Remote Computer, Securing a Remote WMI Connection, and Connecting Through Windows Firewall.
Providers must rely on the impersonation setting for the connection to determine if the client script or application should receive data. For more information about script and client applications, see Setting Client Application Process Security. For more information about provider impersonation, see Developing a WMI Provider.
WMI Namespace Auditing
WMI uses the namespace System access control lists (SACL) to audit namespace activity. To enable auditing of WMI namespaces, use the Security tab on the WMI Control to change the auditing settings for the namespace.
Auditing is not enabled during the installation of the operating system. To enable auditing, click the Auditing tab in the standard Security window. Then you can add an auditing entry.
Group Policy for the local computer must be set to allow auditing. You can enable auditing by running the Gpedit.msc MMC snap-in and setting Audit Object Access under Computer Configuration > Windows Settings > Security Settings > Local Policies > Audit Policy.
An auditing entry edits the SACL of the namespace. When you add an auditing entry, it is either a user, group, computer, or built-in security principal. After adding the entry, you can set the access operations that result in Security Log events. For example, for the group Authenticated Users, you can click Execute Methods. This setting results in Security Log events whenever a member of the Authenticated Users group executes a method in that namespace. The Event ID for WMI events is 4662.
Your account must be in the Administrators group and running under elevated privilege to change the auditing settings. The built-in Administrator account can also change the security or auditing for a namespace. For more information about running in elevated mode, see User Account Control and WMI.
WMI auditing generates success or failure events for attempts to access WMI namespaces. The service does not audit the success or failure of provider operations. For example, when a script connects to WMI and a namespace, it may fail because the account under which the script is running does not have access to that the namespace or may attempt an operation, such as editing the DACL, that is not granted.
If you are running under an account in the Administrators group, you can view the namespace auditing events in the Event Viewer user interface.
Types of Namespace Events
WMI traces the following types of events in the Security Event Log:
The operation must successfully complete two steps for an Audit Success. First, WMI grants access to the client application or script based on the client SID and the namespace DACL. Second, the requested operation matches the access rights in the namespace SACL for that user or group.
WMI denies access to the namespace, but the requested operation matches the access rights in the namespace SACL for that user or group.
Namespace Access Settings
You can view the namespace access rights for various accounts on the WMI Control. These constants are described in Namespace Access Rights Constants. You can change the access to a WMI namespace using the WMI Control or programmatically. For more information, see Changing Access Security on Securable Objects.
WMI audits changes in all of the access permissions listed in the following list except for the Remote Enable permission. The changes are logged as audit success or failure corresponding to the Edit Security permission.
Permits the user to execute methods defined on WMI classes. Corresponds to the WBEM_METHOD_EXECUTE access permission constant.
Permits full read, write, and delete access to WMI classes and class instances, both static and dynamic. Corresponds to the WBEM_FULL_WRITE_REP access permission constant.
Permits write access to static WMI class instances. Corresponds to the WBEM_PARTIAL_WRITE_REP access permission constant.
Permits write access to dynamic WMI class instances. Corresponds to the WBEM_WRITE_PROVIDER access permission constant.
Permits read access to WMI class instances. Corresponds to the WBEM_ENABLE access permission constant.
Permits access to the namespace by remote computers. Corresponds to the WBEM_REMOTE_ACCESS access permission constant.
Permits read-only access to DACL settings. Corresponds to the READ_CONTROL access permission constant.
Permits write access to DACL settings. Corresponds to the WRITE_DAC access permission constant.
Default Permissions on WMI Namespaces
The default security groups are:
The default access permissions for the Authenticated Users, LOCAL SERVICE, and NETWORK SERVICE are:
Accounts in the Administrators group have all rights available to them, including editing security descriptors. However, because of User Account Control (UAC), the WMI Control or the script must be running at elevated security. For more information, see User Account Control and WMI.
Sometimes a script or application must enable an administrator privilege, such as SeSecurityPrivilege, to carry out an operation. For example, a script can execute the GetSecurityDescriptor method of the Win32_Printer class without SeSecurityPrivilege and get the security information in the discretionary access control list (DACL) of the printer object security descriptor. However, the SACL information is not returned to the script unless the SeSecurityPrivilege privilege is available and enabled for the account. If the account does not have the privilege available, then it cannot be enabled. For more information, see Executing Privileged Operations.
Администрирование с помощью WMI
В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. CIM является расширяемой моделью, что позволяет программам, системам и драйверам добавлять в нее свои классы, объекты, методы и свойства.
WMI, основанный на CIM, также является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.
Важной особенностью WMI является то, что хранящиеся в нем объекты соответствуют динамическим ресурсам, то есть параметры этих ресурсов постоянно меняются, поэтому параметры таких объектов не хранятся постоянно, а создаются по запросу потребителя данных. Хранилище свойств объектов WMI называется репозиторием и расположено в системной папке операционной системы Windows:
Так как WMI построен по объектно-ориентированному принципу, то все данные операционной системы представлены в виде объектов и их свойств и методов.
Все классы группируются в пространства имен, которые иерархически упорядочены и логически связаны друг с другом по определенной технологии или области управления. В WMI имеется одно корневое пространство имен Root, которое в свою очередь имеет 4 подпространства: CIMv2, Default, Secutiry и WMI.
Классы имеют свойства и методы и находятся в иерархической зависимости друг от друга, то есть классы-потомки могут наследовать или переопределять свойства классов-родителей, а также добавлять свои свойства.
Свойства классов используются для однозначной идентификации экземпляра класса и для описания состояния используемого ресурса. Обычно все свойства классов доступны только для чтения, хотя некоторые из них можно модифицировать определенным методом. Методы классов позволяют выполнить действия над управляемым ресурсом.
Каждому экземпляру класса можно обратиться по полному пути, который имеет следующую структуру:
Пример обращения к процессу с именем «Calc.exe», который запущен на локальной машине:
Экземпляры классов могут генерировать события, к которым можно подписываться. При наступлении события WMI автоматически создает экземпляр того класса, которому соответствует это событие. Такой механизм удобно использовать для выполнения определенной команды при наступлении определенного события, то есть следить за состоянием объектов операционной системы.
Общая безопасность в WMI реализуется на уровне операционной системы, а дополнительная политика безопасности основана на уровнях пространств имен и протокола DCOM. То есть если пользователь не имеет права делать какое-то действие через операционную систему, он не сможет это сделать и через WMI. Если же пользователю дано какое-то право в операционной системе, то это еще не означает, что это право будет и в WMI, так как в WMI действуют дополнительные параметры безопасности на уровне пространств имен.
Каждый объект операционной системы имеет свое описание безопасности (SD) со своим списком доступа (ACL), в котором перечислены идентификаторы пользователей (SID) и их привилегии. Каждое пространство имен может иметь собственное SD со своим ACL, где пользователям могут быть назначены разрешения на чтение данных, выполнение методов, запись классов и данных и другие. Данные о дополнительных разрешениях хранятся в репозитории WMI. Отдельные классы из пространств имен не имеют собственных описаний безопасности, они наследуют их от своего пространства имен.
По умолчанию администратор компьютера имеет полные права на использование WMI, а остальные пользователи могут лишь вызывать методы, считывать данные и записывать в репозиторий экземпляры классов провайдеров WMI.
Для доступа к инфраструктуре WMI используется протокол DCOM, через который пользователь подключается к WMI. Чтобы определить, какие права будут у подключившегося пользователя, используется механизмы олицетворения и аутентификации протокола DCOM.
Уровни олицетворения могут принимать следующие значения:
Уровни аутентификации (подлинности) могут принимать следующие значения:
None | Отсутствует | Проверка подлинности отсутствует |
Default | По умолчанию | Стандартные настройки безопасности, которые задаются компьютером-целью команды |
Connect | Подключение | Проверка только во время подключения к компьютеру-цели команды, проверка в ходе работы отсутствует |
Call | Вызов | Проверка подлинности при каждом запросе к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется |
Pkt | Пакет | Проверка подлинности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется |
PktIntegrity | Целостность пакета | Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется |
PktPrivacy | Секретность пакета | Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки и содержимое пакетов подписываются и шифруются |
Запросы WQL обычно применяются в скриптах, но их также можно протестировать в программе Wbemtest и в консольной утилите Wmic (утилита wmic не требует написания ключевого слова SELECT и полей выборки)
Общий синтаксис запроса WQL выглядит так:
В скриптах для подключения к WMI используются два метода: с использованием локатора (SWbemLocator) и с использованием моникера (WinMgmts). Метод локатора позволяет установить соединие с пространством имен от имени определенной учетной записи. Метод моникера разрешает подключаться к WMI только от имени текущей учетной записи.
Использование этого метода необходимо, когда в сценарии нужно явно задать имя и пароль учетной записи для подключения к WMI. Объект SWbemLocator создается так:
Подключение к репозиторию WMI производится с помощью метода ConnectServer:
Безопасность объекта указывается с помощью свойства Security_, в котором указывается уровень олицетворения и привилегии.
Пример использования локатора:
Пример использования моникера:
Метод Get используется для возвращения определения класса или экземпляра управляемого ресурса:
Пример использования метода Get:
Метод ExecQuery используется для выполнения запросов на языке WQL:
Пример использования метода ExecQuery:
Метод ExecMethod используется для выполнения метода указанного объекта:
Пример использования метода ExecMethod:
Указанные выше методы работают в синхронном и полусинхронном режиме, то есть программа или сценарий не выполняет следующую команду или запрос до тех пор, пока не получит ответ от текущего запущенного метода.
Аналогично синхронным методам WMI позволяет выполнять команды асинхронно, то есть не дожидаться результатов выполнения очередного запроса и продолжать работу сценария или программы. Названия таких асинхронных методов имеют окончание «Async», а работа с ними почти не отличается от обычных методов, но должны быть использованы два обязательных параметра: ссылка на специальный объект «слив событий» и контекстная информация объекта.
Пример использования асинхронного метода:
Рассмотренные выше методы возвращают объекты и коллекции объектов, которые обладают своими методами и свойствами. Информацию о всех свойствах и методах, поддерживаемых конкретным объектом, можно получить с помощью такого скрипта:
Пример использование класса CIM_DataFile для переименования файлов:
Аналогично приведенному примеру можно совершать и другие действия с файлами, так как класс CIM_DataFile поддерживает методы: копирование, удаление, переименование, NTFS-сжатие, смена разрешений, смена владельца.
Пример использования классов оборудования компьютера для получения информации о количестве портов USB 2.0 и используемых USB-устройствах:
Пример использования класса свойств принтеров для получения информации о настройках принтеров:
Ресурсы WMI доступны не только через скрипты, к ним можно обращаться из других языков программирования и даже из программ.
Существует два способа обращения к WMI через Visual Basic.NET.
Первый способ берет свое начало из скриптов VBS. Он использует обращение к инстументу winmgmts, как это делалось в методе моникера:
Пример запроса модели комьютера (консольное приложение)
Второй способ является более правильным с точки зрения Visual Studio. Он использует классSystem.Managementдля запросов к WMI, в котором указываются пространство WMI, параметры подключения и WQL запрос:
Использование полученных объектов аналогично использованию в скриптах.
Пример запроса сервисов локального комьютера (консольное приложение):
В качестве примера прораммы использования WMI в Visual Basic.Net представлено консольное приложение управления сервисом печати компьютера. Приложение запрашивает модель компьютера и выводит результат в консоль. После чего запрашивает состояние сервиса печати и, если он остановлен, предлагает запустить его.
Приложение разделено на две части: класс, который компилируется в динамическую библиотеку DLL, и программа, которая собирается в исполняемый файл EXE.
Листинг файла WMIClass.vb:
Листинг файла TestModule.vb:
Инструмент Scriptomatic предствляет из себя HTA-приложение, которое генерирует код, использующий WMI, на VBSScript, JScript, Perl и Python. Сам по себе WMI может оказаться трудным для изучения, поэтому рекомендуется использовать Scriptomatic для освоения классов WMI, а также для быстрого создания шаблонов обращения к ресерсум WMI. Scriptomatic позволяет выбрать интересующий объект WMI, а затем генерирует код на указанном языке программирования. Полученный код можно выполнить непосредственно в оболочке программы, а результаты вывести в консоль, текстовый файл, HTML, Excel или XML. Инструмент доступен на сайте Microsoft по этой ссылке.
Программа WMI Code Creator представляет из себя генератор кода, который использует WMI для получения информации и для осуществления задач упраления компьютерами. Программа может помочь научиться использовать WMI-скрипты и WMI-приложения для управления как локальным, так и удаленным компьютером. Инструмент доступен на сайте Microsoft по этой ссылке.
Используя WMI Code Creator можно найти любую информацию о компьютере: имя и версия операционной системы, свободное место на диске, состояние сервисов и так далее. Можно выполнить метод из WMI класса для осуществления управления компьютером: создать или удалить сервис, запустить или закрыть программы, назначить разрешения на папку или файл и многое другое. Этот инструмент так же позволяет просматривать доступное WMI-пространство и WMI-классы, чтобы найти нужную для программирования инстанцию с ее описанием, свойствами, методами и примером использования.
Помимо скриптов WMI может применяться и в полноценных программах, то есть программисты могут внедрять запросы к WMI в исполняемый код, завязывая свою программу с работой WMI, благодаря чему программа становится проще и легче, но зависимой от правильности работы Windows Management Instrumentation.
Configuration Manager WMI namespaces and classes for Configuration Manager reports
When Configuration Manager is installed, there are several Windows Management Instrumentation (WMI) namespaces created, and depending on the namespace, hundreds of classes can be created under each namespace. Also, each site might have classes that other sites might not have depending on the specific site settings, the inventory that is tracked, and so forth.
WMI namespaces created by Configuration Manager
The following WMI namespaces are created by Configuration Manager:
How to retrieve Configuration Manager WMI namespaces and classes by using a Visual Basic script
An easy way to list the Configuration ManagerпїЅrelated classes that have been created on your site is to run a Microsoft Visual Basic script. The following script will scan all of the classes within each of the WMI namespaces listed above and output the results to a text file.
To run the script to scan the WMI namespaces and classes
Copy the following code into Notepad:
Create a folder named C:\WMIScan.
Save the script as WMIScan.vbs in the C:\WMIScan folder.
Open a Command Prompt window.
Type C:\WMIScan\WMIScan.vbs /sitecode:ABC and then press Enter. Make sure to replace ABC with the appropriate site code.
The above command line assumes that the script is run from a Configuration Manager site server. To connect to WMI on a remote site server, use the /computer: argument to specify the remote computer. For example, to connect to site code ABC on Computer1, you would type C:\WMIScan\WMIScan.vbs /sitecode:ABC /computer:Computer1 in the command line.
The script creates a text file (in C:\WMIScan) with all of the WMI classes in each of the WMI namespaces for Configuration Manager when run on a Configuration Manager primary site server. A log file is also created listing all of the namespaces scanned and whether the scan was successful. Be aware that some namespaces will not be present on some site servers, depending on which options have been configured.
Доступ к пространствам имен WMI
WMI использует стандартный дескриптор безопасности Windows для управления доступом к пространствам имен WMI. При подключении к WMI с помощью моникера WMI «винмгмтс» или вызова ивбемлокатор:: коннектсервер или SWbemLocator. коннектсервервы подключаетесь к определенному пространству имен.
В этом разделе рассматриваются следующие сведения:
Безопасность пространства имен WMI
WMI обеспечивает безопасность пространства имен, сравнивая маркер доступа пользователя, подключающегося к пространству имен, с дескриптором безопасности пространства имен. дополнительные сведения о Windows безопасности см. в разделе доступ к защищаемым объектам WMI.
Доступ к пространствам имен WMI также влияет на подключение к удаленному компьютеру. дополнительные сведения см. в статьях подключение к wmi на удаленном компьютере, защита удаленного wmi-подключенияи подключение через брандмауэр Windows.
Чтобы определить, должен ли клиентский скрипт или приложение принимать данные, поставщики должны использовать параметр олицетворения. Дополнительные сведения о скриптах и клиентских приложениях см. в разделе Установка параметров безопасности процессов для клиентских приложений. Дополнительные сведения об олицетворении поставщика см. в разделе Разработка поставщика WMI.
Аудит пространства имен WMI
Групповая политика для локального компьютера должно быть настроено для разрешения аудита. аудит можно включить, запустив оснастку MMC Gpedit. msc и настроив доступ к объектам аудита в разделе конфигурация компьютера > Windows Параметры > безопасность Параметры > локальные политики > аудит политики.
Запись аудита изменяет список SACL пространства имен. При добавлении записи аудита это может быть пользователь, группа, компьютер или встроенный субъект безопасности. После добавления записи можно задать операции доступа, которые приводят к событиям журнала безопасности. Например, для пользователей, прошедших проверку подлинности группы, можно нажать кнопку выполнить методы. Этот параметр приводит к возникновению событий журнала безопасности каждый раз, когда член группы «Пользователи, прошедшие проверку подлинности» выполняет метод в этом пространстве имен. Идентификатор события для событий WMI — 4662.
Чтобы изменить параметры аудита, ваша учетная запись должна быть в группе администраторов и запущена с повышенными привилегиями. Встроенная учетная запись администратора также может изменить безопасность или аудит пространства имен. Дополнительные сведения о работе в режиме с повышенными правами см. в разделе Управление учетными записями пользователей и инструментарий WMI.
Аудит WMI создает события успешных или неудачных попыток доступа к пространствам имен WMI. Служба не выполняет аудит успешных или неудачных операций поставщика. Например, при подключении сценария к WMI и пространству имен может произойти сбой, так как учетная запись, под которой выполняется сценарий, не имеет доступа к этому пространству имен или может пытаться выполнить операцию, например изменение списка DACL, которое не предоставлено.
Если вы используете учетную запись в группе «Администраторы», то можете просмотреть события аудита пространства имен в Просмотр событий пользовательском интерфейсе.
Типы событий пространства имен
Инструментарий WMI отслеживает в журнале событий безопасности следующие типы событий:
Аудит выполнен успешно
Операция должна успешно завершить два шага для успешного выполнения аудита. Во первых, WMI предоставляет доступ к клиентскому приложению или скрипту на основе идентификатора безопасности клиента и DACL пространства имен. Во вторых, запрошенная операция соответствует правам доступа в списке SACL пространства имен для этого пользователя или группы.
Инструментарий WMI запрещает доступ к пространству имен, но запрошенная операция соответствует правам доступа в списке SACL пространства имен для этого пользователя или группы.
Параметры доступа к пространству имен
Вы можете просмотреть права доступа к пространству имен для различных учетных записей в элементе управления WMI. Эти константы описаны в статье константы прав доступа к пространству имен. Доступ к пространству имен WMI можно изменить с помощью элемента управления WMI или программно. Дополнительные сведения см. в разделе Изменение параметров безопасности доступа к защищаемым объектам.
WMI выполняет аудит изменений во всех разрешениях на доступ, перечисленных в следующем списке, за исключением разрешения на удаленную включение. Изменения регистрируются при успешном аудите или сбое, соответствующем разрешению на изменение безопасности.
Включить учетную запись
Разрешает доступ на чтение к экземплярам класса WMI. Соответствует константе WBEM _ для разрешения доступа.
Разрешает доступ только для чтения к параметрам DACL. Соответствует константе разрешения на _ Управление доступом на чтение.
Разрешения по умолчанию для пространств имен WMI
Группы безопасности по умолчанию:
Разрешения на доступ по умолчанию для пользователей, прошедших проверку подлинности, ЛОКАЛЬную службу и СЕТЕВую службу:
Учетные записи в группе «Администраторы» имеют все доступные права, включая изменение дескрипторов безопасности. Однако из-за контроля учетных записей (UAC) элемент управления WMI или скрипт должен работать с повышенной безопасностью. Дополнительные сведения см. в разделе Управление учетными записями пользователей и инструментарий WMI.
Иногда скрипт или приложение должны включать права администратора, например SeSecurityPrivilege, для выполнения операции. Например, сценарий может выполнить метод жетсекуритидескриптор класса _ принтера Win32 без SeSecurityPrivilege и получить сведения о безопасности в списке управления доступом на уровне пользователей (DACL) дескриптора безопасностиобъекта принтера. Однако сведения о SACL не возвращаются в скрипт, если только привилегии SeSecurityPrivilege недоступны и не включены для учетной записи. Если у учетной записи нет доступных привилегий, ее нельзя включить. Дополнительные сведения см. в разделе выполнение привилегированных операций.