通过powershell运行WQL查询

时间:2015-07-09 07:29:31

标签: powershell wql

我想知道如何使用powershell运行WQL查询。 这是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"

2 个答案:

答案 0 :(得分:3)

about_WQL帮助文件中所述,您可以使用以下2个cmdlet中的一个:Get-WmiObjectGet-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(Microsofts自己的CIMv2服务器实现)一起使用,而Get-CimInstance应该与任何符合CIMv2的服务器一起使用(尽管,AFAIK,WQL特定于WMI)。 / p>

在您的示例中,您可以将查询放入here-string以保持可读性:

$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

答案 1 :(得分:1)

简单如下:

Get-WmiObject -query $wqlQuery

标准别名为gwmi

如果超出默认的WMI namnespace,则提供-namespace参数。

(还有Get-CimInstance -query …,但我对此并不熟悉。)