2017-01-24 61 views
1

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

我知道你可以使用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

这里的实际问题是什么? –

+0

那么如何才能在PowerShell中使用SCCM中的WQL查询? – Ozar

回答

2

如果从远程计算机运行sccm站点,则需要指定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" 
+0

谢谢。还有一个问题,关于命名空间属性,我可以在哪里找到我需要的站点代码? – Ozar

+0

这是客户的主要网站。如果您使用的是中心站点,您也可以使用它。如果你有权访问sccm-server,你会知道这一点。它在客户端和服务器的WMI中,客户端上的配置管理器控制面板以及服务器上的ConfigMgr控制台的窗口标题(+控制台内的许多地方)中列出。 –

+0

您的控制台显示“连接到 - ”。在控制台的窗口标题中,它表示相同..“连接到 - 。您还可以查看管理站点的定义,任何设备的网站属性等。它几乎无处不在。: - ) –