Comment créer et exécuter des scripts PowerShell Auto-Signés
- Mise à jour le 02 oct. 2026
Par défaut, PowerShell peut restreindre l’exécution des scripts en fonction de la stratégie d’exécution configurée. Même si l’option -ExecutionPolicy Bypass permet de contourner temporairement ces restrictions, ce n’est pas l’approche la plus sécurisée.
Dans ce guide, nous allons configurer Windows afin d’autoriser uniquement les scripts PowerShell signés, créer un certificat auto-signé de signature de code, l’utiliser pour signer un script PowerShell, importer le certificat dans les magasins de certificats appropriés, puis vérifier la signature du script avant son exécution.
GPO pour autoriser uniquement les scripts signés
- Ouvrir l'éditeur des stratégies de groupe :
- Accédez à Configuration ordinateur > Modèles d’administration > Composants Windows > Windows PowerShell :
- Éditer la stratégie Activer l'exécution des scripts :
Création du certificat
Pour signer nos scripts nous avons besoin d'un certificat. Nous allons voir ici comment en créer un auto-signé.
- Ouvrir une console Windows PowerShell en administrateur :
- Attribuer un nom à notre nouveau certificat dans la variable
$CertificateName:
PS C:\Users\Administrator\Desktop> $CertificateName = "STD Certificate"
- Définir l'endroit ou l'on souhaite créer le certificat :
PS C:\Users\Administrator\Desktop> $OutPutPFXFilePath = "C:\Users\administrator\Desktop\MyNewSigningCertificate.pfx"
- Définir un mot de passe à notre fichier PFX :
PS C:\Users\Administrator\Desktop> $MyStrongPassword = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
- Enfin, créer le certificat avec une durée de vie de 10 ans et une taille de clé de 4096 bits :
PS C:\Users\Administrator\Desktop> New-SelfSignedCertificate -subject $CertificateName -Type CodeSigning -NotAfter (Get-Date).AddYears(10) -KeyLength 4096 | Export-PfxCertificate -FilePath $OutPutPFXFilePath -password $MyStrongPassword
Signer le script
- Charger le certificat :
PS C:\Users\Administrator\Desktop> $MyCertFromPfx = Get-PfxCertificate -FilePath 'C:\Users\administrator\Desktop\MyNewSigningCertificate.pfx'
Enter password : ********
- Signer le script :
PS C:\Users\Administrator\Desktop> Set-AuthenticodeSignature -PSPath 'C:\Users\administrator\Desktop\script.ps1' -Certificate $MyCertFromPfx
Importer le Certificat
Pour être correctement reconnu, le certificat auto-signé à besoin d'être importé sur les ordinateurs sur lesquels nous voulons exécuter nos scripts PowerShell. Il faudra donc entrer les commandes suivants avec les droits administrateurs sur les machines cibles.
Définir les variables
- Renseigner le mot de passe du fichier PFX et le chemin vers le certificat :
PS C:\Users\Administrator\Desktop> $MyStrongPassword = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
PS C:\Users\Administrator\Desktop> $CertPath = "C:\Users\administrator\Desktop\MyNewSigningCertificate.pfx"
Importer vers le magasin Autorités de certification racines de confiance
- Importer le certificat vers le magasin local d'Autoritésde certification racines de confiance :
PS C:\Users\Administrator\Desktop> Import-PfxCertificate -FilePath $CertPath "cert:\LocalMachine\Root" -Password $MyStrongPassword
Importer vers le magasin Éditeurs approuvés
- Importer le certificat vers le magasin local des Éditeurs approuvés :
PS C:\Users\Administrator\Desktop> Import-PfxCertificate -FilePath $CertPath "cert:\LocalMachine\TrustedPublisher" -Password $MyStrongPassword
Vérifier la signature
- Nous pouvons vérifier si le script est correctement signé avec la commande
Get-AuthenticodeSignature:
PS C:\Users\Administrator\Desktop> Get-AuthenticodeSignature 'C:\Users\administrator\Desktop\script.ps1'
- Si le script a été modifié après avoir été signé, HashMismacth apparaitra et le script ne poura être executé :