/
/

Comment utiliser PowerShell pour exporter l’inventaire des appareils Azure inactifs à nettoyer

par Team Ninja
How to Use PowerShell to Export Inactive Azure Device Inventory for Cleanup blog banner image

Avec le temps, les appareils connectés à Microsoft Entra ID (anciennement Azure AD) peuvent devenir obsolètes, inactifs ou dupliqués. Disposer d’une liste des appareils inactifs ou obsolètes à nettoyer permet aux administrateurs informatiques d’agir en connaissance de cause, d’optimiser les licences et de conserver un environnement Azure propre.

Ce guide explique comment utiliser PowerShell et l’API Microsoft Graph pour identifier, exporter et automatiser le nettoyage Azure AD des appareils obsolètes joints au domaine.

Exporter le fichier CSV des appareils obsolètes joints à Azure AD : guide étape par étape

Pour supprimer les appareils inactifs dans Azure AD, il vous faut d’abord une liste de ces appareils. Cette section détaille pas à pas l’exportation du fichier CSV via PowerShell.

📌 Prérequis :

Voici ce qu’il faut réunir pour mener à bien l’exportation du fichier CSV :

  • des droits d’administrateur Azure AD ou Entra ID
  • un accès à l’API Microsoft Graph avec les autorisations suivantes :
    • Device.Read.All
    • Directory.Read.All
  • PowerShell 7+
  • le module Microsoft.Graph installé

De plus, vous aurez peut-être besoin d’un agent RMM et d’un accès au registre pour les étapes complémentaires après l’export du CSV.

Étape 1 : se connecter à Microsoft Graph et récupérer la liste des appareils

Procédez comme suit :

  1. Connectez-vous à Microsoft Graph et authentifiez la connexion à l’aide de la commande :

Connect-MgGraph -Scopes "Device.Read.All Directory.Read.All"

  1. Récupérez la liste des appareils avec la commande : $devices = Get-MgDevice -All

Étape 2 : filtrer les appareils Azure obsolètes ou inactifs

Identifiez les appareils Azure obsolètes ou inactifs à partir de leur dernière activité. Pour cela, définissez le seuil d’inactivité avec la commande :

$cutoff = (Get-Date).AddDays(-90)
$inactiveDevices = $devices | Where-Object {
$_.ApproximateLastSignInDateTime -lt $cutoff
}

💡 ASTUCE : pour obtenir une liste plus précise, vous pouvez aussi exclure les comptes de service et les objets hybrides avec cette commande :

$inactiveDevices = $inactiveDevices | Where-Object {
# Exclude Hybrid Azure AD Joined devices
$_.DeviceTrustType -ne "HybridAzureADJoined" -and
# Exclude Personally Owned devices (keep only Corporate owned)
$_.DeviceOwnership -eq "Company"
}

Autre méthode : repérer les utilisateurs inactifs dans Azure Active Directory

Vous pouvez également repérer les utilisateurs inactifs depuis le centre d’administration Entra. Rendez-vous dans Surveillance > Connexions, puis filtrez les utilisateurs qui ne se sont pas connectés sur une période donnée (30, 60 ou 90 jours, par exemple).

Étape 3 : exporter le fichier CSV

Pour exporter le fichier CSV, utilisez cette commande :

$inactiveDevices | Select-Object DisplayName, Id, DeviceId,
DeviceTrustType, ApproximateLastSignInDateTime |
Export-Csv -Path "C:\Reports\InactiveAzureDevices.csv" -NoTypeInformation

Une fois exporté, le CSV peut servir à la documentation, aux workflows de validation et à l’import dans des scripts de nettoyage.

Marquer les appareils pour un nettoyage local et supprimer les ordinateurs obsolètes d’Active Directory

Au-delà des trois étapes principales décrites plus haut, vous pouvez poursuivre le nettoyage avec les méthodes suivantes :

Marquer les appareils pour un nettoyage local dans le registre Windows via PowerShell

Le marquage des appareils est utile lorsque vous y accédez via un RMM ou des scripts. Une fois marqués, les outils RMM et de scripting identifient les appareils considérés comme obsolètes, ce qui leur permet de coordonner les actions de nettoyage en toute sécurité.

Exécutez cette commande dans PowerShell :

New-Item -Path "HKLM:\SOFTWARE\Org\DeviceCleanup" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\DeviceCleanup" -Name "CleanupStatus" -Value "MarkedInactive"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\DeviceCleanup" -Name "MarkedDate" -Value (Get-Date).ToString("u")

Exécutez la ligne suivante dans l’invite de commandes pour vérifier que les modifications ont bien été appliquées :

reg query HKLM\SOFTWARE\Org\DeviceCleanup

Supprimer les appareils obsolètes dans Azure AD

Il existe deux façons de nettoyer les appareils obsolètes, inactifs ou dupliqués dans Azure AD : via une suppression Microsoft Graph ou via le portail Azure.

Nettoyer un appareil via Microsoft Graph

Pour supprimer un appareil directement via Graph :

Remove-MgDevice -DeviceId $device.Id

⚠️ Important : cette commande entraîne une suppression immédiate et définitive. Les appareils ne sont pas placés dans une corbeille. À utiliser avec prudence.

Nettoyer un appareil obsolète joint à AD via le portail Azure

Le portail Azure propose une fonction de suppression en masse qui permet de nettoyer plusieurs appareils inactifs d’un coup. Rendez-vous dans Portail Azure > Entra ID > Appareils > Actions en masse > Supprimer.

Autres points à prendre en compte avant de nettoyer ou de marquer comme inactifs des appareils joints à AD

MFA (authentification forte) et stratégies d’accès conditionnel

Lorsqu’un appareil est lié à l’accès d’un utilisateur, vérifiez s’il intervient dans les flux MFA (authentification forte) ou d’accès conditionnel. Supprimer un appareil encore rattaché aux conditions d’accès d’un utilisateur risque de l’empêcher d’accéder aux applications de l’entreprise, aux VPN et à d’autres fichiers importants.

Licences

Intune, Microsoft Defender et d’autres outils Microsoft fonctionnent souvent avec une licence par appareil enregistré. Les appareils inactifs et dupliqués continuent généralement de consommer ces licences. Si votre entreprise compte beaucoup d’appareils obsolètes, envisagez un nettoyage pour libérer des licences et les réaffecter.

Environnements hybrides

Dans un environnement hybride, les appareils peuvent être joints soit via un AD local, soit via l’annuaire Entra. Supprimer un appareil hybride sans avoir confirmé son type de jonction peut poser problème, par exemple des états de jonction incohérents. Vérifiez toujours le statut de jonction hybride avant toute suppression.

Audit et documentation

Les opérations de nettoyage font généralement partie des processus de gestion informatique courants liés à la conformité, aux audits de sécurité et à la gestion des licences. Tenir un journal des appareils supprimés et de leur statut permet de garder une documentation cohérente et de s’assurer qu’aucune suppression non autorisée n’a eu lieu.

Résolution des problèmes courants

Le CSV n’est pas exporté

Ce problème survient lorsque l’export du CSV (étape 3) échoue. Les causes possibles : le chemin n’existe pas, l’utilisateur ne dispose pas des autorisations nécessaires, ou il a utilisé un chemin relatif qui ne se résout pas correctement dans la session. Pour y remédier, vérifiez le chemin de sortie ou utilisez le chemin complet dans $env: TEMP.

Autorisation refusée

Les utilisateurs qui n’incluent pas les scopes nécessaires lors de la connexion à Microsoft Graph peuvent être empêchés de récupérer les données des appareils. Pour éviter ou corriger ce refus d’autorisation, assurez-vous de disposer du rôle d’administrateur et des autorisations adéquats, et d’inclure les scopes de l’API Graph appropriés.

ApproximateLastSignInDateTime vide

Un champ ApproximateLastSignInDateTime vide signifie qu’aucune connexion n’a jamais eu lieu sur l’appareil ou que la télémétrie n’est pas disponible. Dans ce cas, recoupez les données de l’appareil avec d’autres outils comme Intune, votre RMM ou la dernière synchronisation AD avant de le marquer comme inactif.

Limitation (throttling) de Graph

Microsoft Graph limite le nombre de requêtes réalisables sur une période donnée, en particulier dans les grands environnements. Ajoutez des délais ou une pagination si vous travaillez sur des environnements volumineux.

Les services NinjaOne qui facilitent les workflows de nettoyage des appareils

En tant qu’outil, NinjaOne prend en charge le nettoyage des appareils inactifs grâce aux services suivants :

  • déploiement de scripts de nettoyage ou de marqueurs de registre sur l’ensemble des appareils
  • reporting des valeurs de registre (CleanupStatus, par exemple) pour un suivi au niveau des terminaux
  • alertes automatiques sur les terminaux marqués comme inactifs ou sans remontée depuis un seuil donné
  • marquage des appareils selon leur rôle, leur site ou leur statut en vue d’une action de suivi
  • visibilité sur l’historique de nettoyage et le renouvellement du parc, tous tenants confondus

Ces services font le lien entre le nettoyage des identités dans le cloud et les opérations sur les terminaux.

Gardez vos identités et vos licences bien rangées grâce à des audits et suppressions réguliers des appareils AAD

Auditer régulièrement l’inventaire des appareils Azure AD est indispensable pour une gouvernance des identités saine et une gestion efficace des licences. Ce guide a détaillé l’utilisation de PowerShell pour exporter votre premier fichier CSV, puis les étapes suivantes pour supprimer efficacement les appareils inactifs.

Sujets connexes :

FAQs

Ouvrez le centre d’administration Intune et rendez-vous dans Appareils > Règles de nettoyage des appareils. Activez Supprimer les appareils en fonction de la date de dernière connexion et ajustez la valeur du seuil (Intune accepte une valeur comprise entre 30 et 270 jours).

Les procédures de nettoyage aident les administrateurs informatiques et les MSP à garder un environnement allégé et plus sûr. Parmi les bénéfices d’un nettoyage régulier :

  • une surface d’exposition aux attaques réduite grâce à l’élimination des objets obsolètes
  • une meilleure hygiène du cycle de vie des terminaux
  • un appui aux initiatives de nettoyage pour Entra ID, Intune et Defender
  • la prévention du dépassement des limites d’objets appareils dans les environnements volumineux ou multi-tenant

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?

Termes et conditions NinjaOne

En cliquant sur le bouton « J’accepte » ci-dessous, vous indiquez que vous acceptez les termes juridiques suivants ainsi que nos conditions d’utilisation:

  • Droits de propriété: NinjaOne possède et continuera de posséder tous les droits, titres et intérêts relatifs au script (y compris les droits d’auteur). NinjaOne vous accorde une licence limitée pour l’utilisation du script conformément à ces conditions légales.
  • Limitation de l’utilisation: Les scripts ne peuvent être utilisés qu’à des fins personnelles ou professionnelles internes légitimes et ne peuvent être partagés avec d’autres entités.
  • Interdiction de publication: Vous n’êtes en aucun cas autorisé à publier le script dans une bibliothèque de scripts appartenant à, ou sous le contrôle d’un autre fournisseur de logiciels.
  • Clause de non-responsabilité: Le texte est fourni « tel quel » et « tel que disponible », sans garantie d’aucune sorte. NinjaOne ne promet ni ne garantit que le script sera exempt de défauts ou qu’il répondra à vos besoins ou attentes particulières.
  • Acceptation des risques: L’utilisation du script est sous votre propre responsabilité. Vous reconnaissez qu’il existe certains risques inhérents à l’utilisation du script, et vous comprenez et assumez chacun de ces risques.
  • Renonciation et exonération de responsabilité: Vous ne tiendrez pas NinjaOne pour responsable des conséquences négatives ou involontaires résultant de votre utilisation du script, et vous renoncez à tout droit ou recours légal ou équitable que vous pourriez avoir contre NinjaOne en rapport avec votre utilisation du script.
  • EULA: Si vous êtes un client de NinjaOne, votre utilisation du script est soumise au contrat de licence d’utilisateur final qui vous est applicable (End User License Agreement (EULA)).