Я не могу заставить свои скрипты войти в PowerShell. На моем компьютере установлен действующий сертификат подписи кода, и я выполняю следующие команды. Какие-либо предложения?
PS C:\Users\u00\bin> $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
PS C:\Users\u00\bin> $cert | fl
Subject : E=operations@contoso.com, CN=contoso , OU=Operations, O=contoso,
L=Mayberry, S=Florida, C=US
Issuer : CN=contoso Intermediate CA1, DC=contoso, DC=com
Thumbprint : XXXXXXXXXXXXXXXXXXXXX
FriendlyName : contoso
NotBefore : 7/20/2010 12:58:55 AM
NotAfter : 7/20/2011 12:58:55 AM
Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oi
ystem.Security.Cryptography.Oid...}
PS C:\Users\u00\bin> Set-AuthenticodeSignature .\testsign.ps1 -Certificate $cert
Directory: C:\Users\u00\bin
SignerCertificate Status Path
----------------- ------ ----
UnknownError testsign.ps1
PS C:\Users\u00\bin> Get-AuthenticodeSignature .\testsign.ps1
Directory: C:\Users\u00\bin
SignerCertificate Status Path
----------------- ------ ----
NotSigned testsign.ps1
powershell
Чед Миллер
источник
источник
Ответы:
Догадаться. Файл сценария был создан с использованием PowerShell ISE, и, очевидно, вы не можете подписывать сценарии, созданные в PowerShell ISE, или, точнее, вы не можете подписывать файлы в кодировке Unicode Big Endian, которые используются по умолчанию для ISE. Существует обходной путь для изменения кодировки по умолчанию, как описано в ссылке.
Первоначально добавил к вопросу Чед Миллер . Переместил свое обновление на ответ, чтобы этот вопрос больше не отображался как оставшийся без ответа.
источник
Вы можете сохранить файл как определенную кодировку из ISE Powershell с помощью метода .Save () объекта ISEFile:
Если вы добавите следующее в свой профиль ISE, вы можете просто нажать Ctrl-Shift-S, чтобы получить другую кодировку по умолчанию для ваших скриптов:
Вот небольшой код для создания вашего профиля, если он не существует, и добавьте меню. Запустите этот код изнутри ISE, или вы просто добавите мусор в свой профиль ConsoleHost, где он просто выдаст ошибку:
источник