Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: Windows PowerShell
Sintomi
Prendi in considerazione lo scenario seguente:
Si dispone di uno script di PowerShell che contiene caratteri speciali come ö, ä o ü.
Firmare lo script in un computer che usa impostazioni locali di sistema( ad esempio en-US).
Si esegue lo script firmato in un computer che usa un'altra impostazione locale di sistema, ad esempio cs-CSV.
Lo script è codificato con ASCII o UTF-8.
In questo scenario PowerShell visualizza il messaggio di errore seguente:
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.
Causa
Quando si firma lo script in un computer en-US, il processo di firma crea la firma digitale per umlaut e caratteri speciali usando il codice en-US. Se si esegue lo script firmato in un computer cs-CSV, la verifica della firma avrà esito negativo perché umlaut e caratteri speciali come ö, ä e ü in ASCII o UTF-8 vengono codificati in modo diverso nei computer en-US e cs-INTEGER.
Il processo di verifica della firma crea un hash per il contenuto dello script di PowerShell che non include la firma. E i caratteri speciali e umlaut vengono interpretati in modo diverso nei computer cs-CSV e en-US. In questo caso, si verificherà una mancata corrispondenza dell'hash.
Risoluzione
Per eseguire uno script di PowerShell firmato in modo indipendente dalle impostazioni locali, usare uno dei metodi seguenti:
Sostituire o rimuovere tutti i caratteri speciali e umlaut come ö, ä e ü prima di firmare gli script di PowerShell.
Usare la codifica DBA UTF-16 per gli script di PowerShell.
Ulteriori informazioni
Per un esempio (script con codifica UTF-8 con carattere speciale "ä") che riproduce il problema, vedere i passaggi seguenti:
Si dispone di un computer con le impostazioni seguenti:
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)
Nello stesso computer creare uno script di PowerShell Install.ps1 contenente un carattere speciale "ä" e firmare lo script.
Note
Quando si esegue lo script firmato nello stesso computer, funziona senza problemi.
Eseguire lo stesso script firmato in un computer che usa un'altra impostazione locale di sistema. Ad esempio:
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)
Lo script non riesce con i messaggi seguenti:
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
Per altre informazioni sugli script di PowerShell codificati in modo diverso, vedere:
Script di PowerShell codificato ASCII | Script di PowerShell con codifica UTF-8 | Script di PowerShell con codifica UTF-16 BE BOM | Script powerShell con codifica UTF-16 LE BOM | |
---|---|---|---|---|
Windows 10 | Problema di mancata corrispondenza hash | Problema di mancata corrispondenza hash | n/a (Set-AuthenticodeSignature ha esito negativo con UnknownError) | NON interessato dal problema di mancata corrispondenza HASH |
Windows 11 | Problema di mancata corrispondenza hash | Problema di mancata corrispondenza hash | n/a (Set-AuthenticodeSignature ha esito negativo con UnknownError) | NON interessato dal problema di mancata corrispondenza HASH |
Windows Server 2019 | Problema di mancata corrispondenza hash | Problema di mancata corrispondenza hash | n/a (Set-AuthenticodeSignature ha esito negativo con UnknownError) | NON interessato dal problema di mancata corrispondenza HASH |
Windows Server 2022 | Problema di mancata corrispondenza hash | Problema di mancata corrispondenza hash | n/a (Set-AuthenticodeSignature ha esito negativo con UnknownError) | NON interessato dal problema di mancata corrispondenza HASH |
Raccolta dei dati
Se è necessaria l'assistenza del supporto tecnico Microsoft, si consiglia di raccogliere le informazioni seguendo i passaggi indicati in Raccogliere informazioni utilizzando il TSS per i problemi relativi all'esperienza utente.