在PowerShell中使用来自SCCM的WQL查询
我在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来列出当前的任务在每个工作站打印队列。我发现这里已经发布了几个问题,这些问题帮助我获得了这些。任何额外的帮助,将不胜感激。轻松点我,在这里仍然是一个新手。
如果从远程计算机运行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"
谢谢。还有一个问题,关于命名空间属性,我可以在哪里找到我需要的站点代码? – Ozar
这是客户的主要网站。如果您使用的是中心站点,您也可以使用它。如果你有权访问sccm-server,你会知道这一点。它在客户端和服务器的WMI中,客户端上的配置管理器控制面板以及服务器上的ConfigMgr控制台的窗口标题(+控制台内的许多地方)中列出。 –
您的控制台显示“连接到
这里的实际问题是什么? –
那么如何才能在PowerShell中使用SCCM中的WQL查询? – Ozar