Подключение к подсистеме WMI. Получение списка классов
Работа в Windows PowerShell с объектными моделями WMI, COM и .NET
Одна из основных задач, для решения которых создавалась оболочка PowerShell, было получение из командной строки доступа к различным объектным инфраструктурам, поддерживаемым операционной системой Windows. Раньше к подобным объектам можно было обращаться либо из полноценных приложений с помощью интерфейса прикладного программирования (API), либо из сценариев WSH. В любом случае для использования внешних объектов приходилось писать программный код и изучать их структуру, что значительно затрудняло работу с ними и препятствовало широкому распространению технологий автоматизации среди системных администраторов и пользователей Windows.
Для решения этой проблемы в PowerShell были разработаны специальные командлеты, позволяющие в интерактивном режиме из оболочки обращаться к объектам WMI, COM и .NET.
Доступ к WMI
В предыдущих лекциях мы уже обращались к объектам WMI из сценариев на языках VBScript и JScript, а также из оболочки WMIC. В PowerShell экземпляры объектов WMI можно получать с помощью командлета Get-WmiObject.
Подключение к подсистеме WMI. Получение списка классов
Для обращения к определенному объекту WMI нужно знать наименование класса, к которому он относится (например, Win32_Process или Win32_Service ). PowerShell позволяет в интерактивном режиме получить список всех классов WMI на локальном или удаленном компьютере. Для этого нужно выполнить командлет Get-WmiObject с параметром List:
PS C:\> Get-WmiObject -List
__SecurityRelatedClass __NTLMUser9X
__PARAMETERS __SystemSecurity
__NotifyStatus __ExtendedStatus
Win32_PrivilegesStatus Win32_TSNetworkAdapterSettingError
Win32_TSRemoteControlSettingError Win32_TSEnvironmentSettingError
Win32_TSSessionDirectoryError Win32_TSLogonSettingError
Win32_TerminalError Win32_JobObjectStatus
Win32_TerminalServiceSettingError Win32_TSPermissionsSettingError
Win32_TSClientSettingError Win32_TSGeneralSettingError
Win32_TSSessionSettingError __SystemClass
. . .
18.1.
В данном примере выводится список классов WMI на локальном компьютере. Если вам нужно подключиться к подсистеме WMI другой машине, то ее имя или IP-адрес нужно указать в качестве значения параметром ComputerName, например:
PS C:\> Get-WmiObject –ComputerName 10.169.1.15 -List
__SecurityRelatedClass __NTLMUser9X
__PARAMETERS __SystemSecurity
__NotifyStatus __ExtendedStatus
Win32_PrivilegesStatus Win32_TSNetworkAdapterSettingError
Win32_TSRemoteControlSettingError Win32_TSEnvironmentSettingError
. . .
PS C:\> Get-WmiObject –ComputerName Comp1 -List
__SecurityRelatedClass __NTLMUser9X
__PARAMETERS __SystemSecurity
__NotifyStatus __ExtendedStatus
Win32_PrivilegesStatus Win32_TSNetworkAdapterSettingError
Win32_TSRemoteControlSettingError Win32_TSEnvironmentSettingError
. . .
18.2.
По умолчанию командлет Get-WmiObject подключается к пространству имен Root\CIMV2. Сменить это пространство имен позволяет параметр Namespace, в качестве значения которого указывается нужное наименование. Например:
PS C:\> Get-WmiObject -Namespace Root -List
__SecurityRelatedClass __NTLMUser9X
__PARAMETERS __SystemSecurity
__NotifyStatus __ExtendedStatus
__SystemClass __Provider
__Win32Provider __thisNAMESPACE
__IndicationRelated __EventGenerator
. . .
18.3.
Дата добавления: 2018-03-01; просмотров: 795;