PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Intune – Comment exécuter un script PowerShell sur Windows ?

mercredi 6 mars 2024 à 18:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à exécuter un script PowerShell sur des appareils Windows à l'aide de Microsoft Intune. Ainsi, un script PowerShell chargé sur Intune pourra être exécuté sur un ensemble de machines sous Windows 10 ou Windows 11.

Nous allons commencer par évoquer les prérequis et le fonctionnement de cette fonctionnalité, avant la mise en pratique qui consistera à exécuter un script PowerShell qui va configurer une image de fond d'écran et de verrouillage sur Windows 10 Pro et Windows 11 Pro (pour les éditions Enterprise et Education, il y a des paramètres natifs dans Intune).

II. Prérequis

Pour exécuter un script PowerShell sur des appareils Windows, sachez que Microsoft Intune Management Extension doit être installé sur l'appareil. Ce composant s'installe automatiquement à partir du moment où un script ou une application Win32 est attribué à un appareil.

Pour Microsoft Intune Management Extension, et donc exécuter un script PowerShell, il y a plusieurs prérequis à respecter :

En ce qui concerne les scripts PowerShell en eux-mêmes, voici ce qu'il faut savoir :

Nous pouvons aussi rappeler l'importance d'éviter (autant que possible) de stocker des informations sensibles dans ces scripts, à commencer par des mots de passe.

À ce sujet, vous pouvez vous référer à la documentation officielle de Microsoft :

III. Déployer un script PowerShell avec Intune

A. Le script PowerShell

Le script PowerShell que l'on va déployer via Intune va effectuer les actions suivantes :

Voici le script PowerShell complet :

Bouton - Accéder à la ressource sur GitHub
<#
.SYNOPSIS
        Définir une image de fond d'écran et une image d'écran de verrouillage via les clés de Registre Windows

.DESCRIPTION
        Sur Windows 10 Pro et Windows 11 Pro, il n'est pas possible de configurer une image de fond d'écran et/ou de verrouillage avec les paramètres natifs Intune.
        La solution de contournement consiste à utiliser des valeurs dans le Registre Windows, comme par GPO Active Directory.
        Les images sont téléchargées en local sur la machine dans "C:\Windows\Web\Wallpaper\"
        Indiquez les URL vers vos images en modifiant ces deux variables : $DesktopImageURL et $LockscreenImageURL.

.PARAMETER
.EXAMPLE  
.INPUTS
.OUTPUTS
	
.NOTES
	NAME:	Windows-Pro-Background-Lockscreen-Images.ps1
	AUTHOR:	Florian Burnel
	EMAIL:	florian.burnel@it-connect.fr
	WWW:	www.it-connect.fr

	VERSION HISTORY:

	1.0 	2024.03.06
		    Initial Version

#>
# Fond ecran - URL en ligne et en local
$DesktopImageURL = "https://itconnectintunedemo.blob.core.windows.net/images/IT-Connect_Wallpaper_052020-V2.png"
$DesktopLocalImage = "C:\Windows\Web\Wallpaper\ITC_Wallpaper.png"

# Ecran verrouillage - URL en ligne et en local
$LockscreenImageURL = "https://itconnectintunedemo.blob.core.windows.net/images/IT-Connect_Wallpaper_052020-V2.png"
$LockscreenLocalImage = "C:\Windows\Web\Wallpaper\ITC_Lockscreen.png"

# Registre - Chemin vers la cle (qui doit accueillir les valeurs)
$RegKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP"

# Telecharger les images en local
if(!(Test-Path $DesktopLocalImage)){
    Start-BitsTransfer -Source $DesktopImageURL -Destination $DesktopLocalImage
}

if(!(Test-Path $LockscreenLocalImage)){
    Start-BitsTransfer -Source $LockscreenImageURL -Destination $LockscreenLocalImage
}

# Modifier les cles de Registre (seulement si l'on parvient a acceder aux images en local)
if((Test-Path $DesktopLocalImage) -and (Test-Path $LockscreenLocalImage)){

    # Creer la cle PersonalizationCSP si elle n'existe pas
    if (!(Test-Path $RegKeyPath))
    {
        New-Item -Path $RegKeyPath -Force | Out-Null
    }

    # Registre Windows - Configurer l'image de fond d'ecran (wallpaper)
    New-ItemProperty -Path $RegKeyPath -Name DesktopImageStatus -Value 0 -PropertyType DWORD -Force | Out-Null
    New-ItemProperty -Path $RegKeyPath -Name DesktopImagePath -Value $DesktopLocalImage -PropertyType String -Force | Out-Null
    New-ItemProperty -Path $RegKeyPath -Name DesktopImageUrl -Value $DesktopLocalImage -PropertyType String -Force | Out-Null

    # Registre Windows - Configurer l'image de l'ecran de verrouillage (lockscreen)
    New-ItemProperty -Path $RegKeyPath -Name LockScreenImageStatus -Value 0 -PropertyType DWORD -Force | Out-Null
    New-ItemProperty -Path $RegKeyPath -Name LockScreenImagePath -Value $LockscreenLocalImage -PropertyType String -Force | Out-Null
    New-ItemProperty -Path $RegKeyPath -Name LockScreenImageUrl -Value $LockscreenLocalImage -PropertyType String -Force | Out-Null

}

Adaptez les deux variables suivantes : $DesktopImageURL (URL vers l'image de fond d'écran) et $LockscreenImageURL (URL vers l'image de l'écran de verrouillage)

Vous pouvez réutiliser ce script et à l'adapter à vos besoins. Sachez que la procédure est identique, peu importe ce que fait votre script PowerShell.

Note : ce script reprend le principe de création de valeurs dans le Registre, comme nous pouvons le faire par GPO et comme je l'avais expliqué dans un précédent article.

B. Ajouter un script dans Intune

Connectez-vous au Centre d'administration Microsoft Intune, cliquez sur "Appareils" (1), puis sur "Scripts et corrections" (2). Ensuite, cliquez sur l'onglet "Scripts de plateforme" (3) afin de pouvoir cliquer sur le bouton "Ajouter" (4) et choisissez "Windows 10 et ultérieur" (5) puisque nous voulons exécuter un script PowerShell sur des machines Windows.

Intune - Ajouter un script PowerShell - Scripts de plateforme Windows

Donnez un nom à ce script, ou plutôt à cette tâche qui apparaîtra dans Intune. Je vous encourage également à indiquer une description. Poursuivez.

Windows Pro - Script - Configurer fond d'écran et écran verrouillage

A l'étape "Paramètres du script", vous devez commencer par charger votre script sur Intune. En fait, vous devez charger un fichier présent sur votre ordinateur pour l'envoyer sur Microsoft Intune. Ensuite, nous avons plusieurs options à notre disposition :

Intune - Exécuter un script PowerShell sur Windows

À l'étape suivante, nommée "Affectations", vous devez affecter ce script PowerShell à des utilisateurs ou des appareils. Ici, mes machines Windows sont ciblées donc je sélectionne un groupe nommé "PC_Win_Pro" présent dans Microsoft Entra ID.

Intune - Affecter un script PowerShell à des appareils

Poursuivez... A la fin, vérifiez l'ensemble des paramètres et si tout est OK, cliquez sur "Ajouter".

Intune - Ajouter d'un script PowerShell pour Windows 11

Voilà, votre script PowerShell va être exécuté sur les appareils / les utilisateurs ciblés.

IV. Tester le déploiement

Pour tester le déploiement, il convient de synchroniser un appareil pour qu'il actualise ses paramètres et "comprenne" qu'il doit exécuter un script PowerShell.

A. Microsoft Intune Management Extension

Pour que le script soit exécuté, nous avons besoin que Microsoft Intune Management Extension soit présent sur les appareils. Par défaut, ce n'est pas le cas : ce n'est pas un composant natif à Windows. Cependant, il va être installé automatiquement sur les appareils où le script PowerShell doit être exécuté.

Sur la machine "PC-ITC-01", présente dans le groupe "PC_Win_Pro", le composant s'est installé tout seul et dans la foulée, le script PowerShell a été exécuté. Le tout sans avoir besoin de redémarrer l'ordinateur.

B. Vérifier le bon fonctionnement du script

Pour vérifier le bon fonctionnement du script, nous pouvons investiguer sur la machine Windows. Ici, c'est facile : il suffit de vérifier si le fichier est bien présent à l'emplacement souhaité. Nous pouvons aussi regarder si les valeurs de Registre sont bien créées.

Intune - Wallpaper Windows Pro - Registre

Du côté de la console Intune, si vous cliquez sur le script et que vous accédez à "État de l'appareil", vous pouvez obtenir un statut pour chaque machine impactée par la politique. C'est une façon de voir à distance s'il y a eu des soucis sur une ou plusieurs machines.

C. Les logs

S'il y a un souci avec l'exécution de votre script PowerShell, vous devez investiguer en local sur une machine. Sachez que les logs d'Intune Management Extension sont stockés dans ce répertoire :

C:\ProgramData\Microsoft\IntuneManagementExtension\Logs

Dans ce répertoire, il y a un fichier de log très intéressant au sujet de l'activité d'Intune Management Extension : IntuneManagementExtension.log.

Il s'agit d'un fichier texte que l'on peut ouvrir avec un éditeur de texte classique (Bloc-notes, etc.). Toutefois, il est préférable d'utiliser l'outil gratuit CMTrace que les administrateurs de SCCM ont l'habitude d'utiliser.

Si besoin, vous pouvez l'obtenir en téléchargeant l'exécutable ci-dessous (un peu plus de 1 Go). Ensuite, l'exécutable va décompresser son contenu sur votre PC, ce qui vous permettra d'obtenir l'exécutable "CMTrace.exe". Il est présent ici :

Intune Management Extension - CMTrace

À partir de cet utilitaire, vous pouvez charger un fichier de log. C'est l'occasion d'ouvrir le fichier "IntuneManagementExtension.log" pour analyser son contenu. Ce fichier est très verbeux. Vous pouvez effectuer une recherche pour gagner du temps, avec le mot clé "PowerShell", par exemple.

Intune - Logs - Exécution Script PowerShell

Dans l'exemple ci-dessous (correspondants à d'autres tests effectués), nous pouvons voir qu'il y a eu un problème lors de l'exécution du script : un argument a une valeur invalide. Effectivement, il y a une erreur sur le nom d'une variable, ce qui renvoie une valeur nulle et perturbe l'exécution de la commande. Grâce à ce fichier de log et CMTrace, vous pouvez identifier plus facilement (et plus rapidement) l'origine du problème.

CMTrace - Analyser log Intune - Script PowerShell

V. Conclusion

Après avoir suivi ce tutoriel, vous êtes en mesure d'exécuter des scripts PowerShell sur vos machines Windows à l'aide de Microsoft Intune ! Ce tutoriel sera également utile à toutes les personnes qui souhaitent configurer une image de fond d'écran et/ou de verrouillage sur les machines Windows 10 Pro et Windows 11 Pro.

Au sein de Microsoft Intune, PowerShell est également utile pour le déploiement d'applications et les fonctionnalités de remédiation. Nous aborderons ces points dans de futurs articles.

The post Intune – Comment exécuter un script PowerShell sur Windows ? first appeared on IT-Connect.