我在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列出每个工作站打印队列中的当前作业。我已经发现这里发布了一些问题,这些问题帮助我做到了这一点。任何额外的帮助将不胜感激。对我来说很容易,这里仍然是个新手。
答案 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"