2017-01-24 3 views
1

J'ai une requête dans SCCM qui va prendre une adresse IP de l'imprimante et retourner tous les postes de travail dans SCCM sur lesquels l'imprimante est installée. Je veux créer un script powershell qui prendra cette requête et utilisera les postes de travail qu'il retourne pour ensuite lister les travaux d'impression en cours dans la file d'attente d'impression sur le poste de travail.Utilisation de la requête WQL de SCCM dans powershell

Je sais que vous pouvez utiliser Get-CIMInstance -query pour interroger différentes choses dans WMI. Cela fonctionne bien si j'essaie de trouver de l'information localement. Toutefois, si je jette la requête WQL dans un Here-String et l'affecte à une variable, puis appelez-le avec Get-CIMInstance -query il renvoie une erreur en disant invalid query. La même chose se produit lorsque j'utilise Get-WmiObject -Namespace "root\wmi" -Query $WQlquery

Alors, comment pourrais-je utiliser la requête WQL de SCCM en Powershell? Voici un exemple de ce que j'ai jusqu'à présent:

$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 

En supposant que travaillé et a renvoyé une liste des ids de postes de travail, je puis utiliser Get-Printjob cmdlet à la liste les travaux en cours dans chaque file d'attente d'impression des postes de travail. J'ai déjà trouvé quelques questions qui m'ont aidé à aller aussi loin. Toute aide supplémentaire serait appréciée. Vas-y doucement, toujours un newb ici.

+0

Quelle est la question réelle ici? –

+0

Alors, comment pourrais-je utiliser la requête WQL de SCCM dans PowerShell? – Ozar

Répondre

2

Vous devez spécifier l'espace de noms pour le site sccm root\sms\site_SITECODE et le serveur sccm si vous l'exécutez à partir d'un ordinateur distant. Ex:

$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

Merci. Une question de plus, en ce qui concerne l'attribut namespace, où puis-je trouver le code de site dont j'ai besoin? – Ozar

+0

C'est le site principal pour les clients. Vous pouvez également utiliser le site central si vous l'utilisez. Si vous avez accès au serveur sccm, vous le saurez. Il est répertorié dans WMI sur le client et le serveur, le panneau de configuration du gestionnaire de configuration sur le client et dans le titre de la fenêtre de votre console ConfigMgr sur le serveur (+ beaucoup d'endroits dans la console). –

+0

Votre console indique "se connecter à - ". Dans le titre de la fenêtre de la console, on dit la même chose .. "Connecté à - Vous pouvez également regarder dans l'administration où les sites sont définis, la propriété du site pour tout appareil etc .. Il est à peu près partout: - –