Comment exécuter un script PowerShell non signé au démarrage avec les stratégies de groupe

Dans un environnement Active Directory il peut être utile de pouvoir exécuter au démarrage un script non signé PowerShell via les stratégies de groupe.

Nous allons voir ici comment exécuter un script PowerShell sur les postes présents dans l'OU Workstations. Ici le script se chargera de supprimer les Built-In Applications. Cela fonctionne même si la session est ouverte en Utilisateur standard, (c'est à dire si les utilisateurs n'ont pas les Droits Administrateur).

Création d'un fichier .bat

Créer un fichier remove_appx.bat dans le répertoire partagé netlogon.

remove_appx.bat script
del c:\windows\temp\remove_appx.ps1
copy \\shebangthedolphins.net\netlogon\SCRIPTS\remove_appx.ps1 c:\windows\temp\ /Z /Y
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File c:\windows\temp\remove_appx.ps1
del c:\windows\temp\remove_appx.ps1

Le fichier .bat va copier le script PowerShell dans le dossier Temp de Windows et va l'exécuter. A la fin le fichier sera supprimé.

Création du script PowerShell

Créer un fichier remove_appx.ps1 dans le répertoire partagé netlogon.

remove_appx.bat script
Set-Content -Path 'C:\remove_app.txt' -Value 'OK'	#permet de vérifier que le script s'est bien exécuté sur la machine
Get-AppxPackage -AllUsers | ? { $_.Name -match "3dbuilder" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowsalarms" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowscommunicationsapps" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowscamera" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "officehub" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "skypeapp" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "getstarted" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "zunemusic" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowsmaps" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "solitairecollection" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "bingfinance" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "zunevideo" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "bingnews" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "people" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.People" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "windowsphone" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "bingsports" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "soundrecorder" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "bingweather" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "xboxapp" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "MixedReality" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "hub" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "YourPhone" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.OneConnect" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.XboxGamingOverlay" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "twitter" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "candycrush" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "gethelp" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "messaging" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "3Dviewer" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "LinkedInforWindows" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.RemoteDesktop" } | Remove-AppxPackage -AllUsers
#XBOX
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.Xbox.TCUI" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.XboxGameOverlay" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.XboxIdentityProvider" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "Microsoft.XboxSpeechToTextOverlay" } | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers | ? { $_.Name -match "xbox" } | Remove-AppxPackage -AllUsers
foreach ($app in $(Get-AppxPackage -AllUsers | ? { $_.Name -match "xbox" })) { $app | Remove-AppxPackage -AllUsers }

Création de l'Objet de stratégie de groupe

  • Ouvrir la console Utilisateurs et ordinateurs Active Directory :
Run Active Directory Users and Computers
  • Déplacer ses Ordinateurs dans la bonne OU (Unité d'organisation) :
Run Active Directory Users and Computers
  • Ouvrir la console Gestion de stratégie de groupe :
Run Group Policy Management Console
  • Créer l'Objet de stratégie de groupe :
Create a GPO
  • Donner un nom à la GPO :
Give name to a GPO
  • Modifier la GPO :
Edit a GPO
  • Aller dans Configuration ordinateur > Stratégies > Paramètres Windows > Scripts > Démarrage > Clic Droit > Propriétés
Stratégie de groupe : Démarrage Scripts
  • Rester sur l'onglet Scripts et cliquer sur Ajouter... :
Fenêtre Propriétés de : Démarrage
  • Cliquer sur Parcourir... :
Ajouter un script
  • Parcourir le dossier de partage NETLOGON et sélectionner le script .bat :
Add a script
  • On cliquer sur OK
Add a script

Depuis l'ordinateur

  • Redémarrer la machine
  • Depuis l'ordinateur client, on ouvre une console administrateur et on exécute la commande suivante :
C:\WINDOWS\system32>gpresult /z /scope computer
  • On vérifie dans la partie Scripts de démarrage que le script a bien été pris en compte.
Restart Windows 10 Computer
  • On pourra aussi vérifier que le fichier c:\toto.txt a bien été créé. (Voir la première ligne du script PowerShell)
Restart Windows 10 Computer
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :