Sommaire
ToggleDans cet article, je vais vous présenter un moyen de collecter via Intune les logs relatifs à Intune de vos appareils enrôlés et de les uploader sur Azure file.
Contexte
Par défaut, Intune n’offre pas beaucoup de possibilités pour faire du troubleshooting sur un poste.
Pour cela, il faut souvent aller sur la machine, vérifier les journaux d’évènements, fichiers de logs Intune…
Vous souhaitez pouvoir collecter ces logs sans bouger et de manière sécurisée via un certificat.
Note: J’expliquerais dans un autre article comment mettre en place la zone permettant d’uploader nos fichiers de logs.
D’autres méthodes ?
Je présenterais dans d’autres articles, différentes manières de procéder :
- Partie 1: Collecter les logs d’un appareil et les uploader sur Azure File
- Partie 2: Collecter les logs d’un appareil et les uploader sur GitHub
- Partie 3: Collecter les logs d’un appareil et les upload
Les scripts
Le script est disponible sur GitHub, sur le lien ci-dessous :
Prérequis
Win32 Prep tool
Nous allons utiliser l’outil Win32 Prep tool pour créer une application Win32 contenant notre script.
Celui-ci est disponible ici.
Contenu Azure
Pour la partie upload nous aurons besoin des choses suivantes sur Azure :
- Un groupe de ressources
- Un compte de stockage
- Une Azure file share
- Une App registration avec certificat
Création du certificat
Pour créer le certificat, nous utiliserons le script suivant :
Création de l’app avec certificat
Pour créer l’App registration il faudra procéder comme ci-dessous :
- Installer le module Az, comme ci-dessous :
Install-module Az -AllowClobber
- Saisir Connect -AZAccount
- Utiliser le code ci-dessous :
# Create the certificate
$Intune_Cert = New-SelfSignedCertificate -CertStoreLocation "cert:\LocalMachine\My" `
-Subject "CN=IntuneLogCert" `
-KeySpec KeyExchange
$keyValue = [System.Convert]::ToBase64String($Intune_Cert.GetRawCertData())
Exporter le certificat
Nous aurons besoin d’exporter le certificat dans le but de l’utiliser sur d’autres appareils.
Nous exporterons le certificat sous la forme d’un fichier pfx nommé : intune_cert.pfx
Ci-dessous le code pour l’exporter:
# Export the certificate
$Certificate_PFX_Path = "path\intune_cert.pfx" # Where to export the pfx
$Intune_Cert = Get-ChildItem -Path Cert:\LocalMachine\My\ | Where-Object {$_.Subject -match "IntuneLogCert"}
$PFX_PWD = "intune" | ConvertTo-SecureString -AsPlainText -Force
Export-PfxCertificate -Cert $Intune_Cert -FilePath $Certificate_PFX_Path -Password $PFX_PWD
Importer le certificat
Avant d’importer le certificat, nous allons exporter le mot de passe de celui-ci, de manière sécurisée dans un fichier texte.
Ce fichier nommé cert_import.txt sera utilisé plus tard.
Ci-dessous le code pour faire cela :
# Export password to secure file
$Cert_PWD_File = "password secure file path\cert_import.txt"
[Byte[]] $Encrypt_key = (1..16)
$PFX_PWD = "intune" | ConvertTo-SecureString -AsPlainText -Force
$PFX_PWD | ConvertFrom-SecureString -key $Encrypt_key | Out-File $Cert_PWD_File
Ci-dessous le code pour importer le certificat :
# Import the certificate
$Certificate_PFX_Path = "your certificate path\intune_cert.pfx"
[Byte[]] $Encrypt_key = (1..16)
$Cert_PWD_File = "password secure file path\cert_import.txt"
$secureString = Get-Content $Cert_PWD_File | ConvertTo-SecureString -Key $Encrypt_key
Import-PfxCertificate -FilePath $Certificate_PFX_Path -CertStoreLocation Cert:\CurrentUser\My -Password $secureString
Comment cela va fonctionner ?
- Configurer le compte de stockage
- Créer un certificat
- Créer une app registration avec ce certificat
- Créer un package intunewin
- Créer une appli win32 dans Intune
- Assigner l’application
Que voulons-nous collecter ?
Journaux d’évènements
Le script permettra de collecter les journaux d’évènements suivants:
- System
- Microsoft > Windows > DeviceManagement-Enterprise-Diagnostics-Provider
- Microsoft > Windows > AAD
- Microsoft > Windows > ModernDeployment-Diagnostics-Provider
- Microsoft > Windows > AppxDeploymentServer
- Microsoft > Windows > assignedaccess
- Microsoft > Windows > assignedaccessbroker
- Microsoft > Windows > provisioning-diagnostics-provider
- Microsoft > Windows > shell-core
- Microsoft > Windows > user device registration
Logs Intune
Le script permettra de collecter les logs situés dans ProgramData\Microsoft\IntuneManagementExtension.
Rapports de diagnostic
Le script permettra de collecter les rapports de diagnostic ci-dessous :
- rapport global
- Rapport Autopilot
- DeviceEnrollment report
- DeviceProvisioning report
- TPM report
Comment utiliser le script ?
Le script est nommé Collect_Intune_Device_Logs.ps1
Pour cela il faudra remplir le fichier xml Azure_infos.xml avec les infos ci-dessous :
- Tenant_ID: Your tenant ID
- App_ID: Application ID of the app registration that uses your certificate
- Azure_resourceGroupName: The resource group name from Azure
- Azure_storageAccName: The storage account from Azure
- Azure_fileShareName: The file share name from Azure
Ci-dessous un exemple:
Intégration dans Intune
Dans cet exemple nous allons créer un groupe Azure AD dans lequel nous intégrerons les appareils pour lesquels nous souhaitons récupérer les logs.
Création du contenu de notre appli
- Crére un dossier Collect_intune_Device_Logs
- Copier le fichier Collect_intune_Device_Logs.ps1
- Copier le fichier Azure_infos.xml
- Copier le fichier intune_cert.pfx
- Copier le fichier cert_import.txt
- Ci-dessous le contenu de mon dossier:
Création du package
- Exécuter
- Sélectionner le dossier Collect_intune_Device_Logs
- Sélectionner le fichier Collect_intune_Device_Logs.ps1
- Sélectionner un dossier d’export du fichier intunewin
Création de l’appli Win32
- Allez dans Intune
- Allez dans Clients apps
- Cliquez sur Apps
- Cliquez sur Add
- Sélectionnez Windows app (Win32) puis Select
- Cliquez sur Select app package file
Choisir le fichier Collect_Intune_Device_Logs.intunewin
- Cliquez sur OK
- Saisir un nom et configurer comme vous le souhaitez
Dans Install et Uninstall command saisir:
C:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file .\Collect_Intune_Device_Logs.ps1
- Cliquez sur Next
- Choisissez vos requirements
- Cliquez sur Next
- Dans Detection rules, choisir Use a detection script
- Choisir le fichier Detection_script.ps1
- Cliquez sur Add puis cliquez on OK
- Cliquez on Next
- Dans la partie Dependencies Cliquez sur Next
- Dans la partie Scope tags Cliquez sur Next
- Dans Assignments ciquez sur Required puis Add group
- Sélectionnez le groupe
- Cliquez sur Next
- Cliquez sur Create
Collecte des logs en action
Ci-dessous ma zone Azure file avant :
Ci-dessous ma zone Azure file après :
Vérifier le log
Lorsque le script principal est lancé un fichier de log est rempli.
Il est localisé dans C:\Windows\Debug