ANAVEM
Référence
Languageen
Comment exécuter des scripts PowerShell au démarrage de Windows à l'aide de la stratégie de groupe

Comment exécuter des scripts PowerShell au démarrage de Windows à l'aide de la stratégie de groupe

Configurer les objets de stratégie de groupe dans Windows Server 2025 pour exécuter automatiquement des scripts PowerShell au démarrage des ordinateurs Windows 11 dans un environnement de domaine Active Directory.

Emanuel DE ALMEIDAEmanuel DE ALMEIDA
3/16/2026 15 min 0
mediumgroup-policy 8 étapes 15 min

Pourquoi utiliser la stratégie de groupe pour les scripts de démarrage PowerShell ?

Gérer les scripts de démarrage via les objets de stratégie de groupe offre un contrôle centralisé sur l'exécution des scripts dans votre environnement de domaine Windows. Au lieu de configurer manuellement chaque ordinateur ou de compter sur les dossiers de démarrage locaux, les scripts de démarrage basés sur GPO garantissent une exécution cohérente, une gestion centralisée et des contrôles de sécurité appropriés.

Dans les environnements Windows Server 2025 et Windows 11 24H2, les scripts de démarrage PowerShell exécutés via la stratégie de groupe s'exécutent avec des privilèges SYSTEM avant la connexion de l'utilisateur, ce qui les rend idéaux pour les tâches de configuration système, les installations logicielles, les mappages de lecteurs réseau et l'application des politiques de sécurité. Les scripts s'exécutent de manière fiable sur tous les ordinateurs joints au domaine sans nécessiter l'intervention de l'administrateur local sur chaque machine.

Quels sont les principaux avantages des scripts de démarrage GPO ?

Les scripts de démarrage de la stratégie de groupe offrent plusieurs avantages par rapport aux approches alternatives. Ils permettent un déploiement centralisé à partir d'un emplacement unique, une exécution automatique à chaque démarrage, un timing cohérent avant la connexion de l'utilisateur et une intégration avec les groupes de sécurité Active Directory pour un déploiement ciblé. Contrairement aux scripts de connexion qui s'exécutent dans le contexte de l'utilisateur, les scripts de démarrage ont un accès complet au système et peuvent effectuer des tâches administratives nécessitant des privilèges élevés.

L'onglet Scripts PowerShell dans la gestion des stratégies de groupe, introduit dans les versions récentes de Windows, offre un meilleur contrôle d'exécution par rapport aux scripts batch traditionnels, y compris une gestion appropriée des erreurs, la gestion des politiques d'exécution et l'intégration avec les fonctionnalités de sécurité de Windows PowerShell.

Comment fonctionne le timing d'exécution des scripts dans Windows 11 ?

Comprendre la séquence de démarrage est crucial pour une exécution fiable des scripts. Windows 11 traite les paramètres de l'ordinateur de la stratégie de groupe lors du démarrage, avant que la connexion de l'utilisateur ne commence. Les délais de timing configurés garantissent que la connectivité réseau est établie et que les contrôleurs de domaine sont accessibles avant le début de l'exécution des scripts. Cela évite les échecs courants où les scripts tentent d'accéder aux ressources réseau avant que la pile réseau ne soit entièrement initialisée.

Les environnements Windows modernes bénéficient du traitement amélioré des stratégies de groupe dans Windows Server 2025, qui offre une meilleure gestion des connexions réseau lentes et une synchronisation améliorée entre l'application des politiques et le timing d'exécution des scripts.

Guide de mise en oeuvre

Procédure complète

01

Préparez votre script PowerShell et copiez-le dans SYSVOL

Tout d'abord, créez votre script PowerShell et placez-le dans un emplacement accessible à tous les ordinateurs du domaine. Le partage SYSVOL est l'emplacement standard pour les scripts de stratégie de groupe.

Créez un script de test pour vérifier que le processus fonctionne :

# Créer le contenu du script de test
$scriptContent = @'
# Test de script de démarrage
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$computerName = $env:COMPUTERNAME
$logMessage = "$timestamp - Script de démarrage exécuté sur $computerName"

# Écrire dans le journal des événements
Write-EventLog -LogName Application -Source "Application" -EventId 1001 -EntryType Information -Message $logMessage

# Créer un fichier journal
$logPath = "C:\Windows\Temp\startup_script.log"
Add-Content -Path $logPath -Value $logMessage
'@

# Enregistrer le script dans un fichier local
$scriptContent | Out-File -FilePath "C:\temp\startup-test.ps1" -Encoding UTF8

Copiez le script dans l'emplacement SYSVOL sur votre contrôleur de domaine :

copy "C:\temp\startup-test.ps1" "C:\Windows\SYSVOL\sysvol\yourdomain.com\scripts\startup-test.ps1"

Définissez les autorisations appropriées pour le fichier script :

icacls "C:\Windows\SYSVOL\sysvol\yourdomain.com\scripts\startup-test.ps1" /grant "Domain Computers:(RX)"
Astuce pro : Testez toujours votre script PowerShell manuellement avant de le déployer via GPO. Utilisez le chemin de partage NETLOGON pour des références UNC plus simples : \\%LogonServer%\NETLOGON\script.ps1

Vérification : Confirmez que le script existe et est accessible en exécutant dir \\yourdomain.com\NETLOGON\startup-test.ps1 depuis un ordinateur du domaine.

02

Ouvrez la console de gestion des stratégies de groupe et créez un nouveau GPO

Lancez la console de gestion des stratégies de groupe pour créer un nouvel objet de stratégie de groupe pour votre script de démarrage.

Ouvrez GPMC en tant qu'administrateur de domaine :

gpmc.msc

Accédez à votre domaine dans l'arborescence de la console et créez un nouveau GPO :

  1. Développez votre domaine (par exemple, votredomaine.com)
  2. Cliquez avec le bouton droit sur Objets de stratégie de groupe
  3. Sélectionnez Nouveau
  4. Entrez un nom descriptif : Scripts de démarrage PowerShell
  5. Cliquez sur OK

Le nouveau GPO apparaîtra dans le conteneur Objets de stratégie de groupe. Ce GPO est créé mais pas encore lié à une unité organisationnelle, il n'affectera donc encore aucun ordinateur.

Avertissement : Ne liez pas le GPO à la racine du domaine tant que vous ne l'avez pas entièrement configuré et testé. Commencez par une unité organisationnelle de test contenant seulement quelques ordinateurs.

Vérification : Confirmez que le nouveau GPO apparaît dans la liste des objets de stratégie de groupe avec le nom que vous avez spécifié.

03

Configurer le script de démarrage PowerShell dans les paramètres GPO

Modifiez le GPO nouvellement créé pour ajouter la configuration de votre script de démarrage PowerShell.

Cliquez avec le bouton droit sur votre nouveau GPO et sélectionnez Modifier. Cela ouvre l'Éditeur de gestion des stratégies de groupe. Accédez à la section des scripts de démarrage :

  1. Développez Configuration de l'ordinateur
  2. Développez Stratégies
  3. Développez Paramètres Windows
  4. Cliquez sur Scripts (Démarrage/Arrêt)
  5. Double-cliquez sur Démarrage

Dans la boîte de dialogue Propriétés de démarrage, cliquez sur l'onglet Scripts PowerShell (pas l'onglet Scripts). Ceci est spécifiquement pour les scripts PowerShell et offre un meilleur contrôle d'exécution.

Ajoutez votre script :

  1. Cliquez sur Ajouter...
  2. Dans le champ Nom du script, entrez le chemin UNC : %LogonServer%\NETLOGON\startup-test.ps1
  3. Laissez les paramètres du script vides sauf si votre script nécessite des paramètres spécifiques
  4. Cliquez sur OK

Votre script apparaît maintenant dans la liste des scripts PowerShell. Vous pouvez utiliser les boutons Haut et Bas pour contrôler l'ordre d'exécution si vous avez plusieurs scripts.

Astuce pro : Utilisez la variable %LogonServer% au lieu de coder en dur le nom du contrôleur de domaine. Cela garantit que le script fonctionne même si les clients s'authentifient contre différents DC.

Vérification : Le script doit apparaître dans la liste des scripts PowerShell avec le chemin correct. Cliquez sur OK pour enregistrer la configuration.

04

Configurer la stratégie d'exécution PowerShell via la stratégie de groupe

Windows 11 a une politique d'exécution PowerShell par défaut de Restricted, qui bloque l'exécution des scripts. Configurez la politique d'exécution via la stratégie de groupe pour permettre l'exécution de vos scripts de démarrage.

Dans le même éditeur de gestion des stratégies de groupe, accédez aux paramètres de la politique d'exécution PowerShell :

  1. Allez dans Configuration de l'ordinateur
  2. Développez Stratégies
  3. Développez Modèles d'administration
  4. Développez Composants Windows
  5. Cliquez sur Windows PowerShell
  6. Double-cliquez sur Activer l'exécution des scripts

Configurez la politique d'exécution :

  1. Sélectionnez Activé
  2. Dans le menu déroulant Politique d'exécution, choisissez Autoriser les scripts locaux et les scripts signés à distance (RemoteSigned)
  3. Cliquez sur OK

Cette politique permet aux scripts stockés localement de s'exécuter tout en exigeant que les scripts distants soient signés numériquement, offrant un bon équilibre entre sécurité et fonctionnalité.

Avertissement : Ne définissez jamais la politique d'exécution sur Unrestricted dans un environnement de production. RemoteSigned offre une sécurité adéquate tout en permettant l'exécution de vos scripts de démarrage basés sur le domaine.

Méthode alternative : Si vous préférez ne pas modifier la politique d'exécution globalement, vous pouvez modifier la configuration de votre script à l'étape 3 pour utiliser l'onglet Scripts au lieu de l'onglet Scripts PowerShell, avec ces paramètres :

Nom du script : %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
Paramètres du script : -ExecutionPolicy Bypass -File "%LogonServer%\NETLOGON\startup-test.ps1"

Vérification : La politique devrait apparaître comme Activée avec RemoteSigned sélectionné dans l'éditeur de stratégie de groupe.

05

Configurer le minutage et les délais du script de démarrage

Configurez les paramètres de synchronisation pour vous assurer que le réseau est prêt avant que votre script PowerShell ne s'exécute. Cela évite les échecs courants dus à l'indisponibilité des services réseau au démarrage.

Dans l'éditeur de gestion des stratégies de groupe, accédez aux politiques de synchronisation de démarrage :

  1. Allez dans Configuration de l'ordinateur
  2. Développez Stratégies
  3. Développez Modèles d'administration
  4. Développez Système
  5. Cliquez sur Stratégie de groupe

Configurez le temps d'attente du traitement de la politique de démarrage :

  1. Double-cliquez sur Spécifier le temps d'attente du traitement de la politique de démarrage
  2. Sélectionnez Activé
  3. Réglez le temps d'attente à 60 secondes (ou 120 pour les réseaux plus lents)
  4. Cliquez sur OK

Configurez le délai du script de connexion :

  1. Double-cliquez sur Configurer le délai du script de connexion
  2. Sélectionnez Activé
  3. Réglez le délai à 1 minute (60 secondes)
  4. Cliquez sur OK

Ces paramètres garantissent que :

  • Le système attend la connectivité réseau avant de traiter la stratégie de groupe
  • Les scripts ont suffisamment de temps pour s'exécuter avant le début de la connexion utilisateur
  • Les ressources réseau sont disponibles lorsque votre script s'exécute
Astuce pro : Pour les environnements avec des liaisons WAN lentes ou des connexions sans fil, augmentez le temps d'attente de démarrage à 120 secondes pour éviter les échecs d'exécution des scripts.

Vérification : Les deux politiques doivent apparaître comme Activées avec vos valeurs de temps spécifiées dans l'éditeur de stratégie de groupe.

06

Lier le GPO à l'unité organisationnelle cible

Associez votre GPO configuré à une unité organisationnelle pour l'appliquer à des ordinateurs spécifiques. Commencez par une UO de test avant de l'appliquer aux systèmes de production.

Dans la console de gestion des stratégies de groupe, accédez à votre UO cible :

  1. Développez votre domaine
  2. Accédez à l'UO contenant vos ordinateurs de test (par exemple, Ordinateurs de test)
  3. Cliquez avec le bouton droit sur l'UO
  4. Sélectionnez Lier une GPO existante...
  5. Sélectionnez votre GPO Scripts de démarrage PowerShell
  6. Cliquez sur OK

Vérifiez le lien et la priorité de la GPO :

  1. Cliquez sur l'UO dans le volet de gauche
  2. Vérifiez l'onglet Objets de stratégie de groupe liés
  3. Assurez-vous que votre GPO apparaît dans la liste
  4. Notez l'Ordre de lien - les numéros inférieurs ont une priorité plus élevée

Si vous devez ajuster l'ordre des liens (lorsque plusieurs GPO affectent les mêmes ordinateurs) :

  1. Sélectionnez votre GPO dans la liste des Objets de stratégie de groupe liés
  2. Utilisez les boutons fléchés pour le déplacer vers le haut ou vers le bas
  3. Les GPO de priorité plus élevée (numéros d'ordre de lien inférieurs) remplacent les paramètres conflictuels
Avertissement : Testez toujours les modifications de GPO sur un petit groupe d'ordinateurs d'abord. Créez une UO de test dédiée avec 2-3 ordinateurs avant de lier à des UO plus grandes ou à l'ensemble du domaine.

Vérification : La GPO devrait apparaître dans l'onglet Objets de stratégie de groupe liés pour votre UO cible avec le bon ordre de lien.

07

Forcer la mise à jour de la stratégie de groupe et exécuter le script de test

Appliquez les nouveaux paramètres de stratégie de groupe à un ordinateur de test et vérifiez que votre script de démarrage PowerShell s'exécute correctement.

Sur un ordinateur de test dans l'UO cible, forcez une mise à jour de la stratégie de groupe :

gpupdate /force

Vérifiez que la nouvelle stratégie est appliquée :

gpresult /r

Cherchez le nom de votre GPO dans la sortie sous "Objets de stratégie de groupe appliqués". S'il n'apparaît pas, vérifiez le lien GPO et assurez-vous que l'ordinateur est dans la bonne UO.

Redémarrez l'ordinateur de test pour déclencher le script de démarrage :

shutdown /r /t 0

Après le redémarrage de l'ordinateur, vérifiez l'exécution du script en consultant le journal des événements :

Get-EventLog -LogName Application -Source Application -Newest 10 | Where-Object {$_.EventID -eq 1001}

Vérifiez également le fichier journal créé par le script :

type C:\Windows\Temp\startup_script.log

Si le script ne s'est pas exécuté, vérifiez les journaux d'événements de la stratégie de groupe pour les erreurs :

Get-WinEvent -LogName "Microsoft-Windows-GroupPolicy/Operational" -MaxEvents 20 | Where-Object {$_.LevelDisplayName -eq "Error"}
Astuce pro : Utilisez gpresult /h gpreport.html pour générer un rapport HTML détaillé de tous les paramètres de stratégie de groupe appliqués, y compris les scripts de démarrage.

Vérification : Vous devriez voir des preuves de l'exécution du script à la fois dans le journal des événements (ID d'événement 1001) et dans le fichier journal avec l'horodatage actuel et le nom de l'ordinateur.

08

Surveiller et dépanner l'exécution des scripts

Implémentez des procédures de surveillance et de dépannage pour garantir que vos scripts de démarrage continuent de fonctionner de manière fiable dans votre environnement.

Créez un script de surveillance pour vérifier l'exécution des scripts de démarrage sur plusieurs ordinateurs :

# Surveiller l'exécution des scripts de démarrage sur les ordinateurs du domaine
$computers = Get-ADComputer -Filter "OperatingSystem -like '*Windows 11*'" -Properties Name

foreach ($computer in $computers) {
    $computerName = $computer.Name
    try {
        $lastEvent = Get-WinEvent -ComputerName $computerName -LogName Application -MaxEvents 1 -FilterXPath "*[System[EventID=1001]]"
        if ($lastEvent) {
            Write-Host "$computerName - Dernière exécution : $($lastEvent.TimeCreated)" -ForegroundColor Green
        } else {
            Write-Host "$computerName - Aucune exécution de script de démarrage trouvée" -ForegroundColor Red
        }
    } catch {
        Write-Host "$computerName - Impossible de se connecter ou de vérifier les journaux" -ForegroundColor Yellow
    }
}

Étapes courantes de dépannage pour les échecs d'exécution de script :

Vérifiez l'application de la stratégie de groupe :

gpresult /scope computer /v

Vérifiez les autorisations du fichier script :

icacls "\\yourdomain.com\NETLOGON\startup-test.ps1"

Testez l'exécution du script manuellement :

powershell.exe -ExecutionPolicy RemoteSigned -File "\\yourdomain.com\NETLOGON\startup-test.ps1"

Vérifiez les blocages de la politique d'exécution :

Get-ExecutionPolicy -List

Problèmes courants et solutions :

  • ID d'événement 1055/1130 : Réseau non prêt - augmentez le temps d'attente de démarrage à 120 secondes
  • Erreurs d'accès refusé : Vérifiez que le groupe Domain Computers a les autorisations Lire & Exécuter sur le fichier script
  • Script introuvable : Vérifiez l'état de réplication SYSVOL et la syntaxe du chemin UNC
  • Erreurs de politique d'exécution : Vérifiez que la GPO de politique d'exécution PowerShell est appliquée correctement
Avertissement : Les scripts de démarrage s'exécutent dans le contexte SYSTEM, pas dans le contexte utilisateur. Évitez les opérations nécessitant l'accès au profil utilisateur ou des éléments interactifs dans les scripts de démarrage.

Vérification : Votre script de surveillance devrait afficher des horodatages d'exécution réussie pour tous les ordinateurs cibles. Tout échec doit être investigué en utilisant les étapes de dépannage ci-dessus.

Questions Fréquentes

Quelle est la différence entre l'onglet Scripts PowerShell et l'onglet Scripts dans la configuration de démarrage de la stratégie de groupe ?+
L'onglet Scripts PowerShell est spécialement conçu pour les fichiers .ps1 et offre un meilleur contrôle d'exécution, une invocation automatique de PowerShell.exe et une intégration avec les paramètres de politique d'exécution. L'onglet Scripts est destiné aux fichiers batch traditionnels et aux exécutables, nécessitant une spécification manuelle de PowerShell.exe avec des paramètres -ExecutionPolicy pour les scripts PowerShell. L'onglet Scripts PowerShell est l'approche recommandée pour les environnements Windows modernes.
Pourquoi les scripts de démarrage échouent-ils avec des erreurs liées au réseau et comment puis-je résoudre les problèmes de synchronisation ?+
Les scripts de démarrage échouent souvent car ils s'exécutent avant que les services réseau ne soient entièrement initialisés. Configurez 'Spécifier le temps d'attente du traitement de la stratégie de démarrage' à 60-120 secondes et 'Configurer le délai du script de connexion' à 1-2 minutes dans la stratégie de groupe. Cela garantit que la connectivité réseau est établie avant le début de l'exécution du script. Les ID d'événement 1055 et 1130 indiquent généralement des échecs liés au timing que ces paramètres résolvent.
Comment dépanner les blocages de la stratégie d'exécution PowerShell dans les scripts de démarrage de la stratégie de groupe ?+
Windows 11 utilise par défaut une stratégie d'exécution restreinte qui bloque les scripts PowerShell. Configurez la stratégie 'Activer l'exécution des scripts' sous Configuration de l'ordinateur > Modèles d'administration > Composants Windows > Windows PowerShell, en la définissant sur 'Autoriser les scripts locaux et les scripts signés à distance' (RemoteSigned). Alternativement, utilisez l'onglet Scripts avec les paramètres : -ExecutionPolicy Bypass -File pour contourner les restrictions de politique pour des scripts spécifiques.
Quelles autorisations sont requises pour les scripts de démarrage PowerShell dans SYSVOL et comment les configurer correctement ?+
Les scripts de démarrage PowerShell s'exécutent en tant que SYSTEM et nécessitent que le groupe Domain Computers ait les autorisations Lire et Exécuter sur le fichier script. Utilisez 'icacls scriptfile.ps1 /grant "Domain Computers:(RX)"' pour définir les autorisations appropriées. Placez les scripts dans SYSVOL\domain\scripts\ ou le partage NETLOGON pour une réplication automatique sur les contrôleurs de domaine. Évitez de placer les scripts dans des emplacements accessibles aux utilisateurs pour prévenir les modifications non autorisées.
Puis-je cibler des ordinateurs ou des groupes spécifiques avec des scripts de démarrage PowerShell de la stratégie de groupe ?+
Oui, utilisez le filtrage de sécurité et le filtrage WMI dans la console de gestion des stratégies de groupe. Liez le GPO à des UO spécifiques contenant des ordinateurs cibles, ou utilisez le filtrage de sécurité pour spécifier des groupes d'ordinateurs. Pour un ciblage avancé, créez des filtres WMI basés sur des propriétés d'ordinateur comme la version du système d'exploitation, les spécifications matérielles ou des valeurs de registre personnalisées. Cela permet un contrôle précis sur les ordinateurs exécutant vos scripts de démarrage sans affecter l'ensemble du domaine.
Emanuel DE ALMEIDA
Écrit par

Emanuel DE ALMEIDA

Microsoft MCSA-certified Cloud Architect | Fortinet-focused. I modernize cloud, hybrid & on-prem infrastructure for reliability, security, performance and cost control - sharing field-tested ops & troubleshooting.

Discussion

Partagez vos réflexions et analyses

Vous devez être connecté pour commenter.

Chargement des commentaires...