Запустить запрос WQL с помощью powershell

Я хочу знать, как запустить запрос WQL с помощью powershell. Вот запрос WQL

Select UAR.User, UAR.Application, UAR.CurrentState from sms_fullcollectionmembership as FCM
INNER JOIN SMS_UserApplicationRequest as UAR ON UAR.User=FCM.SMSID
where FCM.CollectionID="100104"

person Rocx    schedule 09.07.2015    source источник


Ответы (2)


Как описано в файле справки about_WQL, вы можете использовать один из следующих 2 командлета: Get-WmiObject или Get-CimInstance, либо можно использовать ускоритель типа [wmisearcher]:

Используя Get-WmiObject:

 $queryNameVersion = "Select Name, Version from Win32_Bios"
 Get-WmiObject -Query $queryNameVersion

Используя Get-CimInstance:

 $queryNameVersion = "Select Name, Version from Win32_Bios"
 Get-CimInstance -Query $queryNameVersion

Используя [wmisearcher]:

 $searcher = [wmisearcher]"Select Name, Version from Win32_Bios"
 $searcher.Get()

Get-WmiObject предназначен для работы с WMI (собственная реализация сервера Microsoft CIMv2), тогда как Get-CimInstance должен работать с любым сервером, совместимым с CIMv2 (хотя, насколько мне известно, WQL специфичен для WMI).


В вашем примере вы можете поместить запрос в здесь-строку, чтобы сохранить читабельность:

$SCCMQuery = @'
Select UAR.User, UAR.Application, UAR.CurrentState from sms_fullcollectionmembership as FCM
INNER JOIN SMS_UserApplicationRequest as UAR ON UAR.User=FCM.SMSID
where FCM.CollectionID="100104"
'@
$Results = Get-WmiObject -Namespace "root\SMS\Site_Name" -Query $SCCMQuery
person Mathias R. Jessen    schedule 09.07.2015
comment
Не могли бы вы взглянуть на этот вопрос "> stackoverflow.com/questions/31324415/ - person Rocx; 09.07.2015

Так просто как:

Get-WmiObject -query $wqlQuery

Стандартный псевдоним gwmi.

Укажите параметр -namespace, если он находится за пределами пространства имен WMI по умолчанию.

(Есть также Get-CimInstance -query …, но я не знаком с этим.)

person Richard    schedule 09.07.2015
comment
Любой из них должен работать, Get-CIMInstance делает то, что Get-WMIObject и многое другое, поэтому он делает то же самое в отношении запросов WMI. - person Vesper; 09.07.2015