在PowerShell中使用SCCM中的WQL查询

时间:2017-01-24 20:17:48

标签: powershell printing sccm wql

我在SCCM中有一个查询,它将获取打印机IP地址并返回SCCM中安装了打印机的所有工作站。我想创建一个powershell脚本,它将获取所述查询并使用它返回的工作站,然后列出工作站上打印队列中的当前打印作业。

我知道你可以使用Get-CIMInstance -query来查询WMI中的不同内容。如果我试图在本地查找信息,这很有效。但是,如果我将WQL查询转储到Here-String并将其分配给变量,然后使用Get-CIMInstance -query调用它,则会返回错误invalid query。当我使用Get-WmiObject -Namespace "root\wmi" -Query $WQlquery

时会发生同样的事情

那么我如何才能在PowerShell中使用SCCM的WQL查询?这是我到目前为止的一个例子:

$WQLquery = @"
select SMS_R_System.Name from
SMS_R_System inner join
SMS_G_System_PRINTER_DEVICE on
SMS_G_System_PRINTER_DEVICE.ResourceID = 
SMS_R_System.ResourceId where 
SMS_G_System_PRINTER_DEVICE.PortName like "10.10.10.10"
"@

Get-CIMInstance -query $WQLquery

假设已经工作并返回了工作站ID列表,我将使用Get-Printjob cmdlet列出每个工作站打印队列中的当前作业。我已经发现这里发布了一些问题,这些问题帮助我做到了这一点。任何额外的帮助将不胜感激。对我来说很容易,这里仍然是个新手。

1 个答案:

答案 0 :(得分:2)

如果您是从远程计算机运行sccm网站,则需要为sccm网站root\sms\site_SITECODE和sccm服务器指定命名空间。例如:

$WQLquery = @"
select SMS_R_System.Name from
SMS_R_System inner join
SMS_G_System_PRINTER_DEVICE on
SMS_G_System_PRINTER_DEVICE.ResourceID = 
SMS_R_System.ResourceId where 
SMS_G_System_PRINTER_DEVICE.PortName like "10.10.10.10"
"@

Get-WmiObject -Query $WQLquery -ComputerName "SCCMSERVER" -Namespace "root\sms\site_PRI"