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

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

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisableWildcardHandling

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ForceWildcardHandling

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

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

Type:String
Aliases:QueryId
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

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

Type:IResultObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LimitToCollectionId

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

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

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

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

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

Microsoft.ConfigurationManagement.ManagementProvider.IResultObject

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

System.Object