Вывести список всех классов wmi на локальном компьютере
Команда 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, то сначала выполняется форматирование, а затем – преобразование.
Examples
Перечисление WMI с помощью VBScript
Если вы не узнаете путь к объекту для конкретного экземпляра или хотите получить все экземпляры для конкретного класса, используйте метод SwbemServices. инстанцесоф , чтобы вернуть перечисление SWbemObjectSet для всех экземпляров класса. Кроме того, можно запросить WMI с помощью SwbemServices. ExecQuery , чтобы получить тот же набор объектов.
Следующая процедура описывает, как перечислить экземпляры класса с помощью VBScript.
Перечисление экземпляров класса с помощью VBScript
Перечислите экземпляры с помощью вызова метода SwbemServices. инстанцесоф .
Метод инстанцесоф Возвращает коллекцию или набор объектов, с помощью которых можно выполнить перечисление. Дополнительные сведения см. в разделе доступ к коллекции. Возвращаемая коллекция фактически является объектом SWbemObjectSet , поэтому можно вызывать любой из методов этого объекта.
Если вы хотите получить экземпляр класса WMI в другом пространстве имен или на другом компьютере, укажите компьютер и пространство имен в моникере. Дополнительные сведения см. в разделе Создание скрипта WMI. Это работает только при наличии соответствующих прав доступа. Дополнительные сведения см. в разделе поддержание безопасности WMI и выполнение привилегированных операций.
Получите отдельные экземпляры, которые вы хотите использовать с помощью методов коллекций.
В следующем примере кода извлекается объект SwbemServices , а затем выполняется метод инстанцесоф для вывода свойства Size для всех экземпляров логических дисков на локальном компьютере.
Синтаксис
Example 5: Stop a service on a remote computer
This example stops the WinRM service on a remote computer. Get-WmiObject gets the instance of the WinRM service object on Server01. Then, it invokes the StopService method of the Win32_Service WMI class on that object.
This is equivalent to using the Stop-Service cmdlet.
Пример 1. Получение процессов на локальном компьютере
В этом примере показано, как получить процессы на локальном компьютере.
Вывод свойств, отличных от используемых по умолчанию, с помощью командлетов Format
Если необходимо показать сведения, содержащиеся в классе Win32_OperatingSystem, которые не выводятся по умолчанию, можно воспользоваться командлетом Format. Например, если нужно показать сведения о количестве доступной памяти, введите:
В именах свойств в командлете Format-Table допускаются подстановочные знаки, поэтому последний элемент конвейера может быть сокращен до Format-Table -Property Total*Memory*, Free* .
Сведения о памяти можно представить в более понятном виде, отформатировав список с помощью следующей команды:
Gets instances of Windows Management Instrumentation (WMI) classes or information about the available classes.
Description
Starting in PowerShell 3.0, this cmdlet has been superseded by Get-CimInstance .
The Get-WmiObject cmdlet gets instances of WMI classes or information about the available WMI classes. To specify a remote computer, use the ComputerName parameter. If the List parameter is specified, the cmdlet gets information about the WMI classes that are available in a specified namespace. If the Query parameter is specified, the cmdlet runs a WMI query language (WQL) statement.
The Get-WmiObject cmdlet does not use Windows PowerShell remoting to perform remote operations. You can use the ComputerName parameter of the Get-WmiObject cmdlet even if your computer does not meet the requirements for Windows PowerShell remoting or is not configured for remoting in Windows PowerShell.
Beginning in Windows PowerShell 3.0, the __Server property of the object that Get-WmiObject returns has a PSComputerName alias. This makes it easier to include the source computer name in output and reports.
Example 1: Get processes on the local computer
This example get the processes on the local computer.
Вывод списка классов WMI
Первая проблема, с которой сталкивается большинство пользователей WMI, — это выяснение того, что можно сделать с помощью инструментария WMI. Классы WMI описывают ресурсы, которыми можно управлять. Имеются сотни классов WMI, некоторые из которых содержат множество свойств.
Командлет Get-CimClass решает эту проблему, предоставляя сведения об инструментарии WMI. Список классов WMI, доступных на локальном компьютере, можно получить, введя команду:
Те же сведения можно извлечь на удаленном компьютере, указав в параметре ComputerName имя или IP-адрес компьютера.
Список классов, возвращаемый удаленным компьютером, может различаться в зависимости от операционной системы компьютера и определенных расширений WMI, добавленных установленными приложениями.
При использовании командлетов CIM для подключения к удаленному компьютеру на последнем должен быть запущен инструментарий WMI, а используемая учетная запись должна входить в группу локальных администраторов на удаленном компьютере. В удаленной системе можно не устанавливать оболочку PowerShell. Это позволяет администрировать операционные системы, на которых не запущена оболочка PowerShell, но есть инструментарий WMI.
Outputs
PSObject or System.Management.Automation.RemotingJob
When you use the AsJob parameter, the cmdlet returns a job object. Otherwise, the object that Get-WmiObject returns depends on the value of the Class parameter.
Вывод сведений о классе WMI
Если имя класса WMI уже известно, можно немедленно получить сведения о нем. Например, одним из классов WMI, используемых для получения сведений о компьютере, является Win32_OperatingSystem.
Хотя показаны все параметры, команда может быть представлена в более короткой форме. Параметр ComputerName не является обязательным при подключении к локальной системе. Мы покажем это, чтобы продемонстрировать наиболее общий случай и напомнить об этом параметре. По умолчанию параметр Namespace имеет значение root/CIMV2 и может быть опущен. В конце концов, большинство командлетов позволяет опускать имя типовых параметров. Если в командлете Get-CimInstance не указано имя для первого параметра, PowerShell считает его параметром Class. Это значит, что последнюю команду можно было ввести в таком виде:
Класс Win32_OperatingSystem имеет больше свойств, чем показано здесь. Можно воспользоваться командлетом Get-Member, чтобы показать все свойства. Свойства класса WMI автоматически доступны, как и другие свойства объекта:
Выходные данные
PSObject или System.Management.Automation.RemotingJob
При использовании параметра AsJob командлет возвращает объект задания. В противном случае возвращаемый объект Get-WmiObject зависит от значения параметра Class .
Пример 6. Получение BIOS на локальном компьютере
В этом примере извлекается информация BIOS с локального компьютера. Параметр Property командлета Format-List используется для отображения всех свойств возвращаемого объекта в списке. По умолчанию отображаются только подмножества свойств, определенных в Types.ps1xml файле конфигурации.
Учетные данные нельзя использовать при нацеливание на локальный компьютер.
Примеры
Example 3: Get WMI classes in the root or default namespace of the local computer
This example gets the WMI classes in the root or default namespace of the local computer.
Example 6: Get the BIOS on the local computer
This example gets the BIOS information from the local computer. The Property parameter of the Format-List cmdlet is used to display all properties of the returned object in a list. By default, only the subset of properties defined in the Types.ps1xml configuration file are displayed.
Credentials cannot be used when targeting the local computer.
Примечания
Чтобы получить доступ к сведениям о WMI на удаленном компьютере, командлет необходимо запустить в рамках учетной записи, которая является членом группы локальных администраторов на удаленном компьютере. Кроме того, контроль доступа по умолчанию в пространстве имен WMI удаленного репозитория можно изменить, предоставив права доступа другим учетным записям.
Только некоторые свойства каждого класса WMI отображаются по умолчанию. Набор свойств, который отображается для каждого класса WMI, указан в файле конфигурации Types.ps1xml. Чтобы получить все свойства объекта WMI, используйте Get-Member командлеты или Format-List командлеты.
Пример 4. Получение именованной службы на нескольких компьютерах
В этом примере возвращается служба WinRM на компьютерах, указанных значением параметра ComputerName .
Оператор конвейера (|) отправляет выходные данные командлету Format-List , который добавляет свойство PSComputerName в выходные данные по умолчанию. PSComputerName — это псевдоним свойства __Server возвращаемых Get-WmiObject объектов. Этот псевдоним появился в PowerShell 3.0.
Перечисление WMI с помощью C++
Помимо выполнения базового перечисления, можно задать несколько флагов и свойств, чтобы повысить производительность перечисления. Дополнительные сведения см. в разделе повышение производительности перечисления.
Перечисление набора объектов в WMI
Создайте интерфейс иенумвбемклассобжект , описывающий набор объектов, которые требуется перечислить.
Объект иенумвбемклассобжект содержит список, описывающий набор объектов WMI. Можно использовать методы иенумвбемклассобжект для перечисления пересылаемых объектов, пропустить объекты, начать с начала и скопировать перечислитель. В следующей таблице перечислены методы, используемые для создания перечислителей для различных типов объектов WMI.
Инструментарий управления Windows (WMI) является ключевой технологией системного администрирования Windows, поскольку предоставляет широкий спектр сведений в унифицированном виде. Так как спектр возможностей инструментария WMI достаточно широк, командлет Get-CimInstance PowerShell для доступа к объектам WMI наиболее полезный. Мы рассмотрим, как командлет CimCmdletst обращается к объектам WMI и как использовать объекты WMI для выполнения определенных задач.
Inputs
None
You cannot pipe input to Get-WmiObject .
Syntax
Example 4: Get a named service on multiple computers
This example gets the WinRM service on the computers specified by the value of the ComputerName parameter.
A pipeline operator (|) sends the output to the Format-List cmdlet, which adds the PSComputerName property to the default output. PSComputerName is an alias of the __Server property of the objects that Get-WmiObject returns. This alias was introduced in PowerShell 3.0.
Parameters
Gets or sets a value that indicates whether the objects that are returned from WMI should contain amended information. Typically, amended information is localizable information, such as object and property descriptions, that is attached to the WMI object.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Runs the command as a background job. Use this parameter to run commands that take a long time to finish.
When you use the AsJob parameter, the command returns an object that represents the background job and then displays the command prompt. You can continue to work in the session while the job finishes. If Get-WmiObject is used on a remote computer, the job is created on the local computer, and the results from remote computers are automatically returned to the local computer. To manage the job, use the cmdlets that contain the Job cmdlets. To get the job results, use the Receive-Job cmdlet.
To use this parameter with remote computers, the local and remote computers must be configured for remoting. Additionally, you must start Windows PowerShell by using the "Run as administrator" option in Windows Vista and later versions of Windows. For more information, see about_Remote_Requirements.
For more information about Windows PowerShell background jobs, see about_Jobs and about_Remote_Jobs.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
- -1: Unchanged
- 0: Default
- 1: None (No authentication in performed.)
- 2: Connect (Authentication is performed only when the client establishes a relationship with the application.)
- 3: Call (Authentication is performed only at the beginning of each call when the application receives the request.)
- 4: Packet (Authentication is performed on all the data that is received from the client.)
- 5: PacketIntegrity (All the data that is transferred between the client and the application is authenticated and verified.)
- 6: PacketPrivacy (The properties of the other authentication levels are used, and all the data is encrypted.)
Specifies the authority to use to authenticate the WMI connection. You can specify standard NTLM or Kerberos authentication. To use NTLM, set the authority setting to ntlmdomain: , where identifies a valid NTLM domain name. To use Kerberos, specify kerberos:\ . You cannot include the authority setting when you connect to the local computer.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the name of a WMI class. When this parameter is used, the cmdlet retrieves instances of the WMI class.
Type: | String |
Aliases: | ClassName |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the target computer for the management operation. Enter a fully qualified domain name (FQDN), a NetBIOS name, or an IP address. When the remote computer is in a different domain than the local computer, the fully qualified domain name is required.
The default is the local computer. To specify the local computer, such as in a list of computer names, use "localhost", the local computer name, or a dot (.).
This parameter does not rely on Windows PowerShell remoting, which uses WS-Management. You can use the ComputerName parameter of Get-WmiObject even if your computer is not configured to run WS-Management remote commands.
Type: | String [ ] |
Aliases: | Cn |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies whether direct access to the WMI provider is requested for the specified class without any regard to its base class or to its derived classes.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Enables all the privileges of the current user before the command makes the WMI call.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a Where clause to use as a filter. Uses the syntax of the WMI Query Language (WQL).
Do not include the Where keyword in the value of the parameter. For example, the following commands return only the logical disks that have a DeviceID of 'c:' and services that have the name 'WinRM' without using the Where keyword.
Get-WmiObject Win32_LogicalDisk -filter "DeviceID = 'c:' "
Get-WmiObject win32_service -filter "name='WinRM'"
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the impersonation level to use.
- 0: Default. Reads the local registry for the default impersonation level. The default is usually set to Impersonate.
- 1: Anonymous. Hides the credentials of the caller.
- 2: Identify. Allows objects to query the credentials of the caller.
- 3: Impersonate. Allows objects to use the credentials of the caller.
- 4: Delegate. Allows objects to permit other objects to use the credentials of the caller.
Gets the names of the WMI classes in the WMI repository namespace that is specified by the Namespace parameter.
If you specify the List parameter, but not the Namespace parameter, Get-WmiObject uses the Root\Cimv2 namespace by default. This cmdlet does not use the Default Namespace registry entry in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting registry key to determine the default namespace.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the preferred locale for WMI objects. Enter a value in MS_ format.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
When used with the Class parameter, the Namespace parameter specifies the WMI repository namespace where the specified WMI class is located. When used with the List parameter, it specifies the namespace from which to gather WMI class information.
Type: | String |
Aliases: | NS |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the WMI class properties that this cmdlet gets information from. Enter the property names.
Type: | String [ ] |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Runs the specified WMI Query Language (WQL) statement. This parameter does not support event queries.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Searches the current namespace and all other namespaces for the class name that is specified by the Class parameter.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the maximum number of WMI operations that can be executed simultaneously. This parameter is valid only when the AsJob parameter is used in the command.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Перечисление WMI с помощью PowerShell
Если вы не узнаете путь к объекту для конкретного экземпляра или хотите получить все экземпляры для конкретного класса, используйте Get-WmiObjectс именем класса в параметре -Class . Если вы хотите использовать запрос, можно использовать параметр -Query .
Следующая процедура описывает, как перечислить экземпляры класса с помощью PowerShell.
Перечисление экземпляров класса с помощью PowerShell
Перечислите экземпляры с помощью вызова командлета Get-WmiObject .
Командлет Get-WmiObject Возвращает коллекцию из одного или нескольких объектов WMI, с помощью которых можно выполнить перечисление. Дополнительные сведения см. в разделе доступ к коллекции.
Если вы хотите получить экземпляр класса WMI в другом пространстве имен или на другом компьютере, укажите компьютер и пространство имен в параметрах -Computer и -Namespace соответственно. Дополнительные сведения см. в разделе Создание скрипта WMI. Это работает только при наличии соответствующих прав доступа. Дополнительные сведения см. в разделе поддержание безопасности WMI и выполнение привилегированных операций.
Получите отдельные экземпляры, в которых вы хотите использовать элементы коллекции.
В следующем примере кода извлекается коллекция PowerShell, а затем отображается свойство Size для всех экземпляров логических дисков на локальном компьютере.
- Добавьте ссылку на сборку ссылки на Microsoft. Management. Infrastructure . (эта сборка поставляется в Windows составе пакета средств разработки программного обеспечения (SDK) для Windows 8.)
- Добавьте инструкцию using для пространства имен Microsoft. Management. Infrastructure .
- Создайте экземпляр объекта CimSession . В следующем фрагменте используется стандартное значение localhost для метода CimSession. Create .
- Вызовите метод CimSession. куеринстанцес , передав требуемое пространство имен CIM и WQL для использования. следующий фрагмент кода возвратит два экземпляра, представляющие два стандартных процесса Windows, в которых свойство handle (представляющее идентификатор процесса или PID) имеет значение 0 или 4.
- Перебрать возвращенные объекты CimInstance .
В следующем образце кода перечисляются все экземпляры класса _ процесса Win32 (который представляет активные процессы) на локальном компьютере и выводится имя каждого процесса.
В реальном приложении вы определите в качестве параметров имя компьютера ("localhost") и пространство имен CIM ("root \ CIMV2"). В этом примере в целях простоты они были жестко закодированы.
Если вы не узнаете путь к объекту для конкретного экземпляра или хотите получить все экземпляры для конкретного класса, используйте объект манажементкласс для получения манажементобжектколлектион , содержащего все экземпляры данного класса в пространстве имен WMI. Кроме того, можно запросить WMI с помощью манажементобжектсеарчер , чтобы получить один и тот же набор объектов.
Перечислите экземпляры с помощью вызова манажементкласс.GetEnumerator.
Метод WebMethod Возвращает коллекцию или набор объектов, с помощью которых можно выполнить перечисление. Дополнительные сведения см. в разделе доступ к коллекции. Возвращаемая коллекция фактически является объектом манажементобжектколлектион , поэтому можно вызывать любой из методов этого объекта.
Если вы хотите получить экземпляр класса WMI в другом пространстве имен или на другом компьютере, укажите компьютер и пространство имен в параметре path . Дополнительные сведения см. в разделе Создание скрипта WMI. Это работает только при наличии соответствующих прав доступа. Дополнительные сведения см. в разделе поддержание безопасности WMI и выполнение привилегированных операций.
Получите отдельные экземпляры, в которых вы хотите использовать элементы коллекции.
Примеры использования 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.
Пример командного файла, который отображает основные сведения об оборудовании и операционной системе компьютера:
Перечисление — это процесс перемещения по набору объектов и, возможно, изменения каждого объекта. Например, можно перечислить набор объектов Win32 _ дискдриве , чтобы найти конкретный серийный номер. Обратите внимание, что хотя можно перечислить любой объект, Инструментарий WMI возвращает только те объекты, к которым у вас есть доступ.
Перечисления больших наборов данных могут потребовать большого количества ресурсов и снизить производительность. Дополнительные сведения см. в разделе повышение производительности перечисления. Вы также можете запросить данные с более конкретным запросом. Дополнительные сведения см. в разделе запрос WMI.
В этом разделе обсуждаются следующие разделы:
Параметры
Выполняет команду как фоновое задание. Используйте этот параметр для запуска команд, на завершение которых требуется много времени.
При использовании параметра AsJob команда возвращает объект, который представляет фоновое задание, а затем отображает командную строку. Можно продолжить работу в рамках данного сеанса, пока задание завершается. Если Get-WmiObject используется на удаленном компьютере, задание создается на локальном компьютере, а результаты удаленных компьютеров автоматически возвращаются на локальный компьютер. Для управления заданием используйте командлеты, которые содержат командлеты задания. Чтобы получить результаты задания, используйте Receive-Job командлет.
Для использования этого параметра с удаленными компьютерами локальный и удаленный компьютеры должны быть настроены для удаленного взаимодействия. Кроме того, необходимо запустить Windows PowerShell с параметром "Запуск от имени администратора" в Windows Vista и более поздних версиях Windows. Дополнительные сведения см. в разделе about_Remote_Requirements.
Дополнительные сведения о фоновых заданиях Windows PowerShell см. в разделах about_Jobs и about_Remote_Jobs.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает уровень проверки подлинности, используемый для подключения к WMI. Допустимые значения:
- -1: без изменений
- 0: по умолчанию
- Нет (проверка подлинности не выполнена.)
- Подключение (проверка подлинности выполняется только в том случае, если клиент устанавливает связь с приложением.)
- Вызов (проверка подлинности выполняется только в начале каждого вызова, когда приложение получает запрос.)
- Пакет (проверка подлинности выполняется для всех данных, полученных от клиента.)
- PacketIntegrity (все данные, передаваемые между клиентом и приложением, проходят проверку подлинности и проверяются).)
- 6: PacketPrivacy (используются свойства других уровней проверки подлинности и все данные шифруются).)
Указывает центр сертификации, используемый для проверки подлинности подключения к WMI. Можно выбрать стандартную проверку подлинности NTLM или Kerberos. Чтобы использовать NTLM, задайте для параметра центра значение ntlmdomain: , где идентифицирует допустимое доменное имя NTLM. Чтобы использовать Kerberos, укажите kerberos:\ . Параметр authority не может быть указан при подключении к локальному компьютеру.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Задает имя класса WMI. Если используется этот параметр, командлет возвращает экземпляры класса WMI.
Type: | String |
Aliases: | ClassName |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает целевой компьютер для операции управления. Введите полное доменное имя (FQDN), netBIOS-имя или IP-адрес. Если удаленный компьютер находится в домене, отличном от домена локального компьютера, необходимо указать полное доменное имя.
По умолчанию это локальный компьютер. Чтобы указать локальный компьютер (например, в списке имен компьютеров), используйте localhost, имя локального компьютера или точку (.).
Этот параметр не зависит от удаленного взаимодействия Windows PowerShell, которое использует командлет WS-Management. Параметр ComputerName Get-WmiObject можно использовать, даже если компьютер не настроен для выполнения WS-Management удаленных команд.
Type: | String [ ] |
Aliases: | Cn |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает, запрашивается ли прямой доступ к поставщику WMI для данного класса безотносительно базового класса или его наследуемых классов.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Включает все привилегии текущего пользователя перед вызовом WMI в команде.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает предложение Where для использования в качестве фильтра. Использует синтаксис языка запросов WMI (WQL).
Не включайте ключевое слово Where в значение параметра. Например, следующие команды возвращают только логические диски с DeviceID для "c:" и службы с именем WinRM без использования ключевого слова Where.
Get-WmiObject Win32_LogicalDisk -filter "DeviceID = 'c:' "
Get-WmiObject win32_service -filter "name='WinRM'"
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Получает имена классов WMI в пространстве имен репозитория WMI, который указан параметром Namespace.
Если указать параметр List , но не параметр пространства имен , Get-WmiObject используется пространство имен Root\Cimv2 по умолчанию. Этот командлет не использует запись реестра пространства имен по умолчанию в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting разделе реестра для определения пространства имен по умолчанию.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
При использовании с параметром Class параметр Namespace указывает пространство имен репозитория WMI, где располагается указанный класс WMI. При использовании с параметром List указывается пространство имен, из которого собирается информация о классе WMI.
Type: | String |
Aliases: | NS |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает свойства класса WMI, из которой этот командлет получает сведения. Введите имена свойств.
Type: | String [ ] |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Запускает указанную инструкцию языка запросов WMI (WQL). Этот параметр не поддерживает очереди событий.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Ищет текущее пространство имен и все остальные пространства имен для имени класса, указанного параметром Class.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Указывает максимальное количество операций WMI, которые можно выполнить одновременно. Этот параметр действителен только в том случае, если параметр AsJob используется в команде.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Получает или задает значение, которое указывает, должны ли объекты, возвращаемые из WMI, содержать измененные сведения. Обычно измененные сведения — это сведения, подлежащие локализации: например, описания объекта и свойства, вложенные в объект WMI.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Задает используемый уровень олицетворения.
Допустимые значения для этого параметра:
- Значение по умолчанию. Считывает локальный реестр для уровня олицетворения по умолчанию. Обычно для олицетворения задано значение по умолчанию.
- 1: Анонимный. Скрывает учетные данные вызывающей стороны.
- Определение. позволяет объектам запрашивать учетные данные вызывающей стороны.
- 3: олицетворения. позволяет объектам использовать учетные данные вызывающей стороны.
- Делегат. Позволяет объектам разрешать другим объектам использовать учетные данные вызывающей стороны.
Указывает предпочтительный язык для объектов WMI. Введите значение в формате MS_.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Нет
Невозможно передать входные данные в Get-WmiObject .
Примеры использования 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 , рассмотренный выше и полные пути исполняемых файлов относительно удаленной системы.
Описание
Начиная с PowerShell 3.0 этот командлет был заменен Get-CimInstance .
Командлет Get-WmiObject получает экземпляры классов WMI или сведения о доступных классах WMI. Чтобы указать удаленный компьютер, используйте параметр ComputerName. Если указан параметр List, командлет получает сведения о классах WMI, доступных в указанном пространстве имен. Если указан параметр Query, командлет запускает инструкцию языка запросов WMI (WQL).
Командлет Get-WmiObject не использует Windows PowerShell удаленного взаимодействия для выполнения удаленных операций. Параметр ComputerName командлета Get-WmiObject можно использовать, даже если компьютер не соответствует требованиям для удаленного взаимодействия Windows PowerShell или не настроен для удаленного взаимодействия в Windows PowerShell.
Начиная с Windows PowerShell 3.0, свойство __Server объекта, возвращающего Get-WmiObject псевдоним PSComputerName. Это упрощает включение имени исходного компьютера во входные данные и отчеты.
Пример 3. Получение классов WMI в корневом или стандартном пространстве имен локального компьютера
В этом примере возвращаются классы WMI в корневом или стандартном пространстве имен локального компьютера.
Notes
To access WMI information on a remote computer, the cmdlet must run under an account that is a member of the local administrators group on the remote computer. Or, the default access control on the WMI namespace of the remote repository can be changed to give access rights to other accounts.
Only some of the properties of each WMI class are displayed by default. The set of properties that is displayed for each WMI class is specified in the Types.ps1xml configuration file. To get all properties of a WMI object, use the Get-Member or Format-List cmdlets.
Получает экземпляры классов инструментария управления Windows (WMI) или сведения о доступных классах.
Пример 5. Остановка службы на удаленном компьютере
В этом примере служба WinRM останавливается на удаленном компьютере. Get-WmiObject возвращает экземпляр объекта службы WinRM на Server01. Затем он вызывает метод StopService класса WMI Win32_Service в этом объекте.
Это эквивалентно использованию командлета Stop-Service .
Примеры использования 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 , рассмотренный выше и полные пути исполняемых файлов относительно удаленной системы.
Пример 2. Получение служб на удаленном компьютере
В этом примере возвращаются службы на удаленном компьютере. Параметр ComputerName указывает IP-адрес удаленного компьютера. По умолчанию текущая учетная запись пользователя должна быть членом группы "Администраторы " на удаленном компьютере.
Example 2: Gets services on a remote computer
This example gets the services on a remote computer. The ComputerName parameter specifies the IP address of a remote computer. By default, the current user account must be a member of the Administrators group on the remote computer.
Читайте также: