Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Windows PowerShell
Symptômes
Examinez le cas suivant :
Vous disposez d’un script PowerShell qui contient des caractères spéciaux tels que ö, ä ou ü.
Vous signez le script sur un ordinateur qui utilise des paramètres régionaux système (par exemple, en-US).
Vous exécutez le script signé sur un ordinateur qui utilise d’autres paramètres régionaux système (par exemple, cs-CZ).
Le script est encodé avec ASCII ou UTF-8.
Dans ce scénario, PowerShell affiche le message d’erreur suivant :
The contents of file <FullPathForSignedPowerShellScript> might have been changed by an
unauthorized user or process because the hash of the file does not match the hash stored
in the digital signature. The script cannot run on the specified system.
Cause
Lorsque vous signez le script sur un ordinateur en-US, le processus de signature crée la signature numérique pour umlaut et des caractères spéciaux à l’aide du code en-US. Si vous exécutez le script signé sur un ordinateur cs-CZ, la vérification de la signature échoue car les caractères umlaut et spéciaux tels que ö, ä et ü dans ASCII ou UTF-8 sont encodés différemment sur les ordinateurs en-US et cs-CZ.
Le processus de vérification de signature crée un hachage pour le contenu du script PowerShell qui n’inclut pas la signature. Et les caractères umlaut et spéciaux sont interprétés différemment sur les ordinateurs cs-CZ et en-US. Dans ce cas, une incompatibilité de hachage se produit.
Résolution
Pour exécuter un script PowerShell signé indépendamment des paramètres régionaux, utilisez l’une des méthodes suivantes :
Remplacez ou supprimez tous les caractères umlaut et spéciaux tels que ö, ä et ü avant de signer des scripts PowerShell.
Utilisez l’encodage BOM UTF-16 LE pour les scripts PowerShell.
Plus d’informations
Pour obtenir un exemple (script encodé en UTF-8 avec un caractère spécial « ä ») qui reproduit le problème, consultez les étapes suivantes :
Vous disposez d’un ordinateur qui a les paramètres suivants :
PS C:\Users> get-culture LCID Name DisplayName ---- ---- ----------- 1033 en-US English (United States) PS C:\Users> Get-ExecutionPolicy AllSigned PS C:\Users> Get-WinSystemLocale LCID Name DisplayName ---- ---- ----------- 1033 en-US English (United States)
Sur le même ordinateur, créez un script PowerShell Install.ps1 qui contient un caractère spécial « ä » et signez le script.
Note
Lorsque vous exécutez le script signé sur le même ordinateur, il fonctionne sans problème.
Exécutez le même script signé sur un ordinateur qui utilise d’autres paramètres régionaux système. Par exemple :
PS C:\tmp> Get-Culture LCID Name DisplayName ---- ---- ----------- 1033 en-US English (United States) PS C:\tmp > Get-ExecutionPolicy AllSigned PS C:\tmp > Get-WinSystemLocale LCID Name DisplayName ---- ---- ----------- 1029 cs-CZ Czech (Czech Republic)
Le script échoue avec les messages suivants :
File C:\tmp\Install.ps1 cannot be loaded. The contents of file C:\tmp\Install.ps1 might have been changed by an unauthorized user or process, because the hash of the file does not match the hash stored in the digital signature. The script cannot run on the specified system. For more information, run Get-Help about_Signing.. At line:1 char:1 + .\Install.ps1 + ~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
Pour plus d’informations sur les scripts PowerShell encodés différemment, consultez :
Script PowerShell encodé ASCII | Script PowerShell encodé en UTF-8 | Script PowerShell encodé en UTF-16 BE | Script PowerShell codé en UTF-16 LE BOM | |
---|---|---|---|---|
Windows 10 | Problème d’incompatibilité HASH affecté | Problème d’incompatibilité HASH affecté | n/a (Set-AuthenticodeSignature échoue avec UnknownError) | Non affecté par le problème de non-correspondance HASH |
Windows 11 | Problème d’incompatibilité HASH affecté | Problème d’incompatibilité HASH affecté | n/a (Set-AuthenticodeSignature échoue avec UnknownError) | Non affecté par le problème de non-correspondance HASH |
Windows Server 2019 | Problème d’incompatibilité HASH affecté | Problème d’incompatibilité HASH affecté | n/a (Set-AuthenticodeSignature échoue avec UnknownError) | Non affecté par le problème de non-correspondance HASH |
Windows Server 2022 | Problème d’incompatibilité HASH affecté | Problème d’incompatibilité HASH affecté | n/a (Set-AuthenticodeSignature échoue avec UnknownError) | Non affecté par le problème de non-correspondance HASH |
Collecte de données
Si vous avez besoin de l’aide du support Microsoft, nous vous recommandons de collecter les informations en suivant les étapes mentionnées dans Collecter des informations à l’aide de TSS pour les problèmes liés à l’expérience utilisateur.