Joao Dos Reis
Expert Microsoft SCCM
Using SCCM AdminService / WEB API
Il existe différentes manières de récupérer des informations sur SCCM, cela peut faire directement dans la console, via une query WMI sur le provider SCCM ou encore une requête SQL dans la base de données.
Cependant, lorsqu’aucune de ses solutions n’est disponible, il arrive qu’on développe des solutions pour effectuer ces actions sans passer par SCCM.
SCCM dispose d’une fonctionnalité appelée le « Service d’administration » disponible sur chaque provider SMS, il s’agit d’une API REST. Ce service va recevoir une requête HTTPS et va ensuite aller traiter les informations au travers de la WMI du provider ciblé ou de la base de données SCCM.
La requête devra être de la forme
https://<SMSProviderFQDN>/AdminService/wmi/<ClassName>?<Filters>
Où
- SMSProviderFQDN designe le FQDN du Provider SMS
- ClassName désigne la classe SMS qu’on cible comme par exemple SMS_R_SYSTEM ou SMS_R_USER ( le nom des classes est sensible à la cas)
- Filters designe les filtres sur les attributs recherchés / qu’on veut récupérer
Concrètement , imaginons un scénario où nous souhaitons récupérer des informations sur une machine depuis une machine ne pouvant contacter directement ni la couche WMI du provider ni la base de données SCCM , je vais utiliser le Powershell (toute autre manière d’effectuer une requête HTTPS fonctionne ) pour lancer ma requête vers ce dit provider.
La requête pour récupérer toutes les informations d’une machine à partir de son nom sera :
https://FQDNProvider/AdminService/wmi/SMS_R_SYSTEM?$filter=Name eq ‘DeviceName’&$select=*
La requête pour récupérer uniquement le nom et le resource ID d’une machine à partir de son nom sera :
https://FQDNProvider/AdminService/wmi/SMS_R_SYSTEM?$filter=Name eq ‘DeviceName’&$select= ResourceID
Il n’aura plus qu’à appeler ma requête en Powershell
Invoke-RestMethod -Method GET -Uri $query -UseDefaultCredentials
#Si l’utilisateur a les droits dans SCCM
Invoke-RestMethod -Method GET -Uri $query – Credential $(Get-Credential)
#Si on veut rentrer les credentials d’un compte ayant des droits dans SCCM
Dans le cas de la récupération du Resource ID, le retour sera de la forme suivante
Commentaires récents