
PowerShell에 로그인하는 스크립트를 가져올 수 없는 것 같습니다. 내 컴퓨터에 유효한 코드 서명 인증서가 설치되어 있고 다음 명령을 실행합니다. 어떤 제안이 있으십니까?
PS C:\Users\u00\bin> $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
PS C:\Users\u00\bin> $cert | fl
Subject : [email protected], 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
답변1
그것을 알아 냈습니다. 스크립트 파일은 PowerShell ISE를 사용하여 생성되었으며 분명히PowerShell ISE에서 생성된 스크립트에 서명할 수 없습니다.또는 더 정확하게는 ISE의 기본값인 유니코드 Big Endian 인코딩 파일에 서명할 수 없습니다. 링크에 설명된 대로 기본 인코딩을 변경하는 해결 방법이 있습니다.
원래 다음 사람이 질문에 추가했습니다.채드 밀러. 이 질문이 더 이상 답변이 없는 것으로 표시되지 않도록 업데이트를 답변으로 옮겼습니다.
답변2
ISEFile 개체의 .Save() 메서드를 사용하여 Powershell ISE 내에서 특정 인코딩으로 파일을 저장할 수 있습니다.
$psIse.CurrentFile.Save([System.Text.Encoding]::UTF8)
ISE 프로필에 다음을 추가하는 경우 Ctrl-Shift-S를 눌러 스크립트에 대해 다른 기본 인코딩을 얻을 수 있습니다.
$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add("_Save as UTF8",{$psIse.CurrentFile.Save([System.Text.Encoding]::UTF8)},"Ctrl+Shift+S")
프로필이 존재하지 않는 경우 프로필을 생성하고 메뉴를 추가하는 빠른 코드는 다음과 같습니다. ISE 내에서 이 코드를 실행하지 않으면 오류가 발생하는 ConsoleHost 프로필에 정크를 추가하게 됩니다.
add-content $profile -value '$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add("_Save as UTF8",{$psIse.CurrentFile.Save([System.Text.Encoding]::UTF8)},"Ctrl+Shift+S")'