Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Windows PowerShell
Symptom
Föreställ dig följande scenario:
Du har ett PowerShell-skript som innehåller specialtecken som ö, ä eller ü.
Du signerar skriptet på en dator som använder ett systemspråk (till exempel en-US).
Du kör det signerade skriptet på en dator som använder ett annat systemspråk (till exempel cs-CZ).
Skriptet kodas med ASCII eller UTF-8.
I det här scenariot visar PowerShell följande felmeddelande:
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.
Orsak
När du signerar skriptet på en en-US-dator skapar signeringsprocessen den digitala signaturen för umlaut och specialtecken med hjälp av en-US-koden. Om du kör det signerade skriptet på en cs-CZ-dator misslyckas signaturverifieringen eftersom umlaut och specialtecken som ö, ä och ü i ASCII eller UTF-8 kodas på olika sätt på en-US- och cs-CZ-datorer.
Signaturverifieringsprocessen skapar en hash för PowerShell-skriptinnehåll som inte innehåller signaturen. Och de umlaut och specialtecken tolkas annorlunda på cs-CZ och en-US datorer. I den här situationen uppstår ett hashfel.
Åtgärd
Om du vill att ett signerat PowerShell-skript ska köras oberoende av nationella inställningar använder du någon av följande metoder:
Ersätt eller ta bort alla umlaut- och specialtecken som ö, ä och ü innan du signerar PowerShell-skript.
Använd UTF-16 LE BOM-kodning för PowerShell-skript.
Mer information
Ett exempel (UTF-8-kodat skript med specialtecken "ä") som återskapar problemet finns i följande steg:
Du har en dator med följande inställningar:
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)
På samma dator skapar du ett PowerShell-skript Install.ps1 som innehåller specialtecknet "ä" och signerar skriptet.
Kommentar
När du kör det signerade skriptet på samma dator fungerar det utan problem.
Kör samma signerade skript på en dator som använder ett annat systemspråk. Till exempel:
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)
Skriptet misslyckas med följande meddelanden:
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
Mer information om PowerShell-skript som är kodade på olika sätt finns i:
ASCII-kodat PowerShell-skript | UTF-8-kodat PowerShell-skript | UTF-16 BE BOM-kodat PowerShell-skript | UTF-16 LE BOM-kodat PowerShell-skript | |
---|---|---|---|---|
Windows 10 | Påverkas med HASH-matchningsproblem | Påverkas med HASH-matchningsproblem | n/a (Set-AuthenticodeSignature misslyckas med UnknownError) | PÅVERKAS INTE med HASH-matchningsproblem |
Windows 11 | Påverkas med HASH-matchningsproblem | Påverkas med HASH-matchningsproblem | n/a (Set-AuthenticodeSignature misslyckas med UnknownError) | PÅVERKAS INTE med HASH-matchningsproblem |
Windows Server 2019 | Påverkas med HASH-matchningsproblem | Påverkas med HASH-matchningsproblem | n/a (Set-AuthenticodeSignature misslyckas med UnknownError) | PÅVERKAS INTE med HASH-matchningsproblem |
Windows Server 2022 | Påverkas med HASH-matchningsproblem | Påverkas med HASH-matchningsproblem | n/a (Set-AuthenticodeSignature misslyckas med UnknownError) | PÅVERKAS INTE med HASH-matchningsproblem |
Datainsamling
Om du behöver hjälp från Microsofts support rekommenderar vi att du samlar in informationen genom att följa stegen i Samla in information med hjälp av TSS för användarupplevelseproblem.