Collecter le hardware hash avec Get-WindowsAutopilotInfo¶
Le hardware hash est l'empreinte matérielle unique d'un device Windows. Pour Autopilot v1, il doit être importé dans Intune avant que le device passe par l'OOBE. Get-WindowsAutopilotInfo est le script PowerShell de référence pour cette collecte.
Prérequis¶
Modules et outils PowerShell¶
| Composant | Rôle | Obligatoire |
|---|---|---|
Get-WindowsAutopilotInfo |
Script de collecte du hash | Oui |
Microsoft.Graph.Authentication |
Authentification Graph (upload direct) | Upload direct uniquement |
WindowsAutopilotIntune |
Module complémentaire (méthodes v2 Graph) | Upload direct uniquement |
| PowerShell 5.1 ou 7+ | Environnement d'exécution | Oui |
| NuGet provider | Requis par Install-Script / Install-Module |
Oui (auto-installé) |
Droits requis¶
- Administrateur local sur le device cible (ou exécution depuis le compte
defaultuser0pendant l'OOBE via Shift+F10)
- Administrateur local sur le device cible
- WinRM activé sur le device cible (
Enable-PSRemoting) - Pare-feu autorisant le port 5985 (HTTP) ou 5986 (HTTPS) vers la cible
- Administrateur local sur le device (ou droits WinRM pour la collecte distante)
- Compte Entra avec le rôle Intune Administrator ou Windows Autopilot deployment profile manager (minimum)
- Accès Internet vers
graph.microsoft.com
Collecte depuis l'OOBE
Pendant l'OOBE, le compte defaultuser0 dispose de droits limités. Ouvrir un terminal avec Shift+F10 puis exécuter PowerShell en tant qu'administrateur. Aucun module ne pouvant être installé depuis le Store en OOBE, préparer le script sur une clé USB ou le déposer en pré-boot via WinPE.
Installation du module¶
PowerShell Gallery (méthode standard)¶
# Installer le script depuis la PSGallery
Install-Script -Name Get-WindowsAutopilotInfo -Force -Scope AllUsers
# Vérifier la version installée
Get-InstalledScript -Name Get-WindowsAutopilotInfo | Select-Object Name, Version
Avec les modules Graph (pour l'upload direct)¶
# Installer les dépendances Graph
Install-Module -Name Microsoft.Graph.Authentication -Scope AllUsers -Force
Install-Module -Name WindowsAutopilotIntune -Scope AllUsers -Force
# Puis le script
Install-Script -Name Get-WindowsAutopilotInfo -Force -Scope AllUsers
Environnement sans accès Internet
Télécharger le script sur un poste connecté, puis le copier sur la cible :
Copier ensuite le dossier sur la machine isolée. Le script .ps1 peut être exécuté directement sans installation dans la PSGallery.
Commandes de collecte¶
Collecte locale — export CSV¶
Cas d'usage : technicien sur place, device pas encore connecté au réseau d'entreprise.
# Export dans un fichier CSV local
Get-WindowsAutopilotInfo -OutputFile C:\Temp\autopilot-hash.csv
# Export avec le numéro de série et le nom du device dans le nom de fichier
Get-WindowsAutopilotInfo -OutputFile "C:\Temp\$(hostname)-$(Get-Date -Format yyyyMMdd).csv"
# Ajouter un GroupTag (utile pour l'affectation de profil dynamique)
Get-WindowsAutopilotInfo -OutputFile C:\Temp\autopilot-hash.csv -GroupTag "SITE-PARIS"
# Ajouter un AssignedUser (pre-provisioning user-driven)
Get-WindowsAutopilotInfo -OutputFile C:\Temp\autopilot-hash.csv -AssignedUser "jean.dupont@contoso.com"
Contenu du CSV
Le fichier généré contient quatre colonnes : Device Serial Number, Windows Product ID, Hardware Hash, Group Tag (vide si non renseigné). C'est le format accepté directement par le portail Intune pour l'import manuel.
Collecte distante — WinRM¶
Cas d'usage : batch de devices accessibles sur le réseau, sans intervention physique.
# Un seul device distant
Get-WindowsAutopilotInfo -ComputerName PC-FINANCE-01 -OutputFile C:\Temp\autopilot-hash.csv
# Plusieurs devices — liste depuis un fichier texte
$computers = Get-Content C:\Temp\liste-devices.txt
Get-WindowsAutopilotInfo -ComputerName $computers -OutputFile C:\Temp\autopilot-hash-batch.csv
# Avec des credentials explicites (compte admin local commun)
$cred = Get-Credential
Get-WindowsAutopilotInfo -ComputerName PC-FINANCE-01 -Credential $cred -OutputFile C:\Temp\autopilot-hash.csv
WinRM et pare-feu
Avant de lancer la collecte distante, s'assurer que WinRM est actif sur chaque cible. Sur un parc déjà géré par Intune ou GPO, cela peut être poussé centralement :
# Sur la machine cible (à exécuter en admin local)
Enable-PSRemoting -Force
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
Ne jamais laisser TrustedHosts = * en production. Restreindre à la plage IP de la console d'administration après la collecte.
Upload direct vers Intune¶
Cas d'usage : atelier OEM ou MSP, device neuf, pas d'accès au portail Intune souhaité.
# Connexion Graph + upload immédiat
Get-WindowsAutopilotInfo -Online
# Avec GroupTag
Get-WindowsAutopilotInfo -Online -GroupTag "SITE-LYON"
# Avec AssignedUser
Get-WindowsAutopilotInfo -Online -AssignedUser "marie.martin@contoso.com" -GroupTag "FINANCE"
# Depuis un device distant avec upload direct
Get-WindowsAutopilotInfo -ComputerName PC-NEUF-42 -Online -GroupTag "POSTE-STD"
Flux d'authentification avec -Online
Le script ouvre une fenêtre de connexion Microsoft. Le compte doit avoir les droits Intune décrits dans les prérequis. L'upload passe par l'API Graph (/deviceManagement/importedWindowsAutopilotDeviceIdentities). Le device apparaît dans Intune → Devices → Enrollment → Windows → Windows Autopilot devices sous quelques minutes.
Délai de synchronisation
Après un upload via -Online ou via import CSV dans le portail, un délai de 15 à 60 minutes est normal avant que le profil Autopilot soit assigné au device. Ne pas lancer l'OOBE immédiatement après l'import. Attendre la confirmation dans le portail que le device affiche le bon Deployment Profile Status = Assigned.
Import CSV manuel dans le portail Intune¶
Si l'upload direct n'est pas possible, importer le CSV via le portail :
- Intune admin center →
Devices→Enrollment→Windows→Windows Autopilot devices Import→ sélectionner le fichier CSV généré parGet-WindowsAutopilotInfo- Attendre que le statut passe à Complete (rafraîchir manuellement)
- Assigner un profil Autopilot au device (directement ou via groupe dynamique sur le GroupTag)
Groupe dynamique sur GroupTag
Créer un groupe Entra dynamique avec la règle :
Tout device importé avec -GroupTag "SITE-PARIS" intégrera automatiquement ce groupe, et le profil Autopilot assigné au groupe s'appliquera sans action manuelle.
Tableau comparatif des méthodes¶
| Méthode | Commande clé | Résultat | Accès Internet | Droits requis | Idéal pour |
|---|---|---|---|---|---|
| Local → CSV | -OutputFile |
Fichier .csv local |
Non | Admin local | OOBE, device isolé, batch manuel |
| Distant → CSV | -ComputerName + -OutputFile |
Fichier .csv centralisé |
Non (réseau LAN) | Admin local + WinRM | Parc géré, collecte en masse avant expédition |
| Local → Upload direct | -Online |
Import Graph immédiat | Oui | Admin local + rôle Intune | Atelier OEM, device neuf avec accès Internet |
| Distant → Upload direct | -ComputerName + -Online |
Import Graph immédiat | Oui | Admin local + WinRM + rôle Intune | Console centrale MSP, batch avec upload auto |
| Import CSV portail | (portail Intune) | Import manuel | Oui (navigateur) | Rôle Intune | Consolidation de CSV issus de plusieurs sites |
Vérification post-import¶
# Via Graph (vérifier que le device est bien enregistré)
Connect-MgGraph -Scopes "DeviceManagementServiceConfig.Read.All"
Get-MgDeviceManagementImportedWindowsAutopilotDeviceIdentity |
Select-Object SerialNumber, State, AssignedUserPrincipalName |
Sort-Object SerialNumber
Dans le portail, le device doit afficher :
- Profile status :
Assigned(sinon vérifier l'assignation du profil au groupe) - Deployment profile : le nom du profil attendu
Device déjà existant dans Intune
Si le device est déjà enrôlé dans Intune (via OOBE standard ou MDM enrollment), l'enregistrement Autopilot se crée mais le profil ne s'appliquera qu'au prochain reset (Settings → Recovery → Reset this PC). Un re-enrôlement sans reset ne prend pas en compte le profil Autopilot.
Troubleshooting rapide¶
| Symptôme | Cause probable | Action |
|---|---|---|
Install-Script échoue sans erreur claire |
NuGet provider absent | Install-PackageProvider -Name NuGet -Force |
Erreur Access Denied sur la cible distante |
WinRM non activé ou droits insuffisants | Enable-PSRemoting -Force sur la cible |
Upload -Online bloqué après auth |
MFA ou Conditional Access bloquant | Utiliser un compte exempt de CA pour l'upload, ou exporter en CSV |
| Device importé mais profil non assigné | GroupTag ne correspond à aucun groupe dynamique | Vérifier la règle du groupe Entra et l'opérateur [OrderID]: |
| Délai > 1h après import | Sync Autopilot service lente | Forcer via Intune → Devices → Windows Autopilot devices → Sync |