Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Windows PowerShell
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
Sie verfügen über ein PowerShell-Skript, das Sonderzeichen wie ö, ä oder ü enthält.
Sie signieren das Skript auf einem Computer, auf dem ein Systemgebietsschema verwendet wird (z. B. en-US).
Sie führen das signierte Skript auf einem Computer aus, auf dem ein anderes Systemgebietsschema verwendet wird (z. B. cs-CZ).
Das Skript ist mit ASCII oder UTF-8 codiert.
In diesem Szenario zeigt PowerShell die folgende Fehlermeldung an:
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.
Ursache
Wenn Sie das Skript auf einem en-US-Computer signieren, erstellt der Signierungsprozess die digitale Signatur für Umlaute und Sonderzeichen mithilfe des en-US-Codes. Wenn Sie das signierte Skript auf einem CS-CZ-Computer ausführen, schlägt die Signaturüberprüfung fehl, da Umlaute und Sonderzeichen wie ö, ä und ü in ASCII oder UTF-8 auf en-US- und cs-CZ-Computern unterschiedlich codiert werden.
Der Signaturüberprüfungsprozess erstellt einen Hash für PowerShell-Skriptinhalte, die die Signatur nicht enthalten. Und die Umlaute und Sonderzeichen werden auf cs-CZ und en-US-Computern unterschiedlich interpretiert. In dieser Situation tritt ein Hashkonflikt auf.
Lösung
Verwenden Sie eine der folgenden Methoden, um ein signiertes PowerShell-Skript unabhängig von gebietsschemaeinstellungen auszuführen:
Ersetzen oder entfernen Sie alle Umlaute und Sonderzeichen wie ö, ä und ü vor dem Signieren von PowerShell-Skripts.
Verwenden Sie utf-16 LE BOM-Codierung für PowerShell-Skripts.
Weitere Informationen
Ein Beispiel (UTF-8-codiertes Skript mit Sonderzeichen "ä"), das das Problem reproduziert, finden Sie in den folgenden Schritten:
Sie verfügen über einen Computer mit den folgenden Einstellungen:
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)
Erstellen Sie auf demselben Computer ein PowerShell-Skript "Install.ps1 ", das ein Sonderzeichen "ä" enthält, und signieren Sie das Skript.
Notiz
Wenn Sie das signierte Skript auf demselben Computer ausführen, funktioniert es ohne Probleme.
Führen Sie dasselbe signierte Skript auf einem Computer aus, auf dem ein anderes Systemgebietsschema verwendet wird. Zum Beispiel:
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)
Das Skript schlägt mit den folgenden Meldungen fehl:
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
Weitere Informationen zu den PowerShell-Skripts, die unterschiedlich codiert sind, finden Sie unter:
ASCII-codiertes PowerShell-Skript | UTF-8-codiertes PowerShell-Skript | UTF-16 BE BOM-codiertes PowerShell-Skript | UTF-16 LE BOM-codiertes PowerShell-Skript | |
---|---|---|---|---|
Windows 10 | Betroffenes Problem mit hashkonflikten | Betroffenes Problem mit hashkonflikten | n/a (Set-AuthenticodeSignature schlägt mit UnknownError fehl) | NICHT betroffen mit HASH-Konfliktproblem |
Windows 11 | Betroffenes Problem mit hashkonflikten | Betroffenes Problem mit hashkonflikten | n/a (Set-AuthenticodeSignature schlägt mit UnknownError fehl) | NICHT betroffen mit HASH-Konfliktproblem |
Windows Server 2019 | Betroffenes Problem mit hashkonflikten | Betroffenes Problem mit hashkonflikten | n/a (Set-AuthenticodeSignature schlägt mit UnknownError fehl) | NICHT betroffen mit HASH-Konfliktproblem |
Windows Server 2022 | Betroffenes Problem mit hashkonflikten | Betroffenes Problem mit hashkonflikten | n/a (Set-AuthenticodeSignature schlägt mit UnknownError fehl) | NICHT betroffen mit HASH-Konfliktproblem |
Datensammlung
Wenn Sie Unterstützung vom Microsoft-Support benötigen, empfehlen wir Ihnen, die Informationen zu sammeln, indem Sie die Schritte unter Sammeln von Informationen mithilfe von TSS für Fragen der Benutzerfreundlichkeit ausführen.