Black Avatar Cute - Free image on Pixabay

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>

  • 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