在 powershell 中使用来自 SCCM 的 WQL 查询

Using WQL query from SCCM in powershell

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

我知道您可以使用 Get-CIMInstance -query 在 WMI 中查询不同的内容。如果我想在本地查找信息,那效果很好。但是,如果我将 WQL 查询转储到 Here-String 并将其分配给一个变量,然后使用 Get-CIMInstance -query 调用它,它 return 就会出现一个错误 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

假设工作正常并 return 编辑了工作站 ID 列表,然后我将使用 Get-Printjob cmdlet 列出每个工作站打印队列中的当前作业。我发现这里已经发布了一些帮助我走到这一步的问题。任何额外的帮助将不胜感激。对我放轻松,这里还是个新手。

您需要为 sccm 站点 root\sms\site_SITECODE 和 sccm-server 指定命名空间,如果您是 运行 来自远程计算机的。例如:

$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"