Поделиться через


Invoke-CMQuery

Выполните запрос Configuration Manager.

Синтаксис

Invoke-CMQuery
      -InputObject <IResultObject>
      [-LimitToCollectionId <String>]
      [-DisableWildcardHandling]
      [-ForceWildcardHandling]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CMQuery
      -Id <String>
      [-LimitToCollectionId <String>]
      [-DisableWildcardHandling]
      [-ForceWildcardHandling]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CMQuery
      [-LimitToCollectionId <String>]
      -Name <String>
      [-DisableWildcardHandling]
      [-ForceWildcardHandling]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Описание

Используйте этот командлет для выполнения запроса на сайте Configuration Manager. Запросы Configuration Manager определяют выражение WMI Query Language (WQL) для получения сведений из базы данных сайта на основе предоставленных вами критериев. WQL похож на SQL, но по-прежнему проходит через поставщик SMS, а не непосредственно в базу данных. Поэтому WQL по-прежнему соответствует вашей конфигурации доступа на основе ролей.

При выполнении запроса сайт обрабатывает WQL-выражение и возвращает результаты в PowerShell. В зависимости от структуры инструкции WQL формат результатов может отличаться.

Запросы могут возвращать большинство типов объектов Configuration Manager, включая компьютеры, сайты, коллекции, приложения и данные инвентаризации. Дополнительные сведения см. в статье Общие сведения о запросах в Configuration Manager.

Примечание.

Запустите командлеты Configuration Manager с диска сайта Configuration Manager, например PS XYZ:\>. Дополнительные сведения см. в статье Начало работы.

Примеры

Пример 1. Просмотр и выполнение запроса по умолчанию

В этом примере сначала показан командлет Get-CMQuery для отображения свойств запроса по умолчанию This Site и его дочерних сайтов.

Затем отображается командлет Invoke-CMQuery для выполнения того же запроса и отображения результатов.

PS XYZ:\> Get-CMQuery -Id "SMS012"

SmsProviderObjectPath          : SMS_Query.QueryID="SMS012"
Comments                       : This site and all its subsites in the ConfigMgr hierarchy
Expression                     : SELECT SiteCode, SiteName, Version, ServerName FROM sms_siteandsubsites
LimitToCollectionID            :
LocalizedCategoryInstanceNames : {}
Name                           : This Site and its Subsites
QueryID                        : SMS012
ResultAliasNames               : {sms_siteandsubsites, sms_siteandsubsites, sms_siteandsubsites, sms_siteandsubsites}
ResultColumnsNames             : {sms_siteandsubsites.SiteCode, sms_siteandsubsites.SiteName,
                                 sms_siteandsubsites.Version, sms_siteandsubsites.ServerName}
TargetClassName                : sms_siteandsubsites

PS XYZ:\> Invoke-CMQuery -Id "SMS012"

SmsProviderObjectPath : SMS_SiteAndSubsites.SiteCode="XYZ"
ServerName            : cmserver.contoso.com
SiteCode              : XYZ
SiteName              : Production primary site
Version               : 5.00.9043.1000

Обратите внимание на то, что в выходных данных командлета Get-CMQuery используется простое WQL Expression . Он выбирает четыре атрибута из одного класса.

Обратите внимание, что выходные данные командлета Invoke-CMQuery являются простой таблицей.

Пример 2. Просмотр и выполнение сложного запроса

В этом примере сначала показан командлет Get-CMQuery для отображения свойств настраиваемого запроса.

Затем отображается командлет Invoke-CMQuery для выполнения того же запроса и отображения результатов.

PS XYZ:\> Get-CMQuery -Id "XYZ00002"

SmsProviderObjectPath          : SMS_Query.QueryID="XYZ00002"
Comments                       :
Expression                     : select SMS_R_System.Name, SMS_R_System.LastLogonUserName,
                                 SMS_G_System_OPERATING_SYSTEM.Caption from SMS_R_System inner join
                                 SMS_G_System_OPERATING_SYSTEM on SMS_G_System_OPERATING_SYSTEM.ResourceID =
                                 SMS_R_System.ResourceId where SMS_G_System_OPERATING_SYSTEM.Caption like "Microsoft Windows Server 2012%"
LimitToCollectionID            : XYZ0025F
LocalizedCategoryInstanceNames : {}
Name                           : Server 2016
QueryID                        : XYZ00002
ResultAliasNames               : {SMS_R_System, SMS_R_System, SMS_G_System_OPERATING_SYSTEM}
ResultColumnsNames             : {SMS_R_System.Name, SMS_R_System.LastLogonUserName,
                                 SMS_G_System_OPERATING_SYSTEM.Caption}
TargetClassName                : SMS_R_System

PS XYZ:\> Invoke-CMQuery -Id "XYZ00002"


SmsProviderObjectPath         : __GENERIC
SMS_G_System_OPERATING_SYSTEM :
                                instance of SMS_G_System_OPERATING_SYSTEM
                                {
                                        Caption = "Microsoft Windows Server 2012 R2 Datacenter";
                                };

SMS_R_System                  :
                                instance of SMS_R_System
                                {
                                        LastLogonUserName = "jqpublic";
                                        Name = "millcreek01";
                                };

Этот запрос содержит более сложное выражение , которое объединяет два класса. Результат запроса становится более сложным.

Параметры

-Confirm

Перед запуском командлет запросит подтверждение.

Тип:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-DisableWildcardHandling

Этот параметр обрабатывает подстановочные знаки как литеральные символы. Вы не можете объединить его с ForceWildcardHandling.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ForceWildcardHandling

Этот параметр обрабатывает подстановочные знаки и может привести к непредвиденному поведению (не рекомендуется). Его нельзя объединить с DisableWildcardHandling.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Id

Укажите идентификатор выполняемого запроса. Например, "XYZ00006".

Тип:String
Aliases:QueryId
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputObject

Укажите объект запроса для выполнения. Чтобы получить этот объект, используйте командлет Get-CMQuery .

Тип:IResultObject
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-LimitToCollectionId

Если запрос настроен так, чтобы запрашивать ограничивающую коллекцию, используйте этот параметр, чтобы указать идентификатор коллекции. Если свойство LimitToCollectionID запроса имеет значение <Prompt>и этот параметр не включается при выполнении запроса, командлет завершается ошибкой.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Name

Укажите имя выполняемого запроса.

Тип:String
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-WhatIf

Показывает, что произойдет при запуске этого командлета. Командлет не выполняется.

Тип:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

Выходные данные

System.Object