UnknownError when using Powershell ISE to Set-AuthenticodeSignature
February 13, 2012 3 Comments
This is discussed on Microsoft Connect here
When attempting to assign a certificate to a powershell script, it does not assign and gives a status of ‘UnknownError’
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning | Where-Object {$_.subject -match "Powershell User"})[0] Set-AuthenticodeSignature "\\path\myscript.ps1" $cert
SignerCertificate Status Path
—————– —— —-
UnknownError myscript.ps1
This happens because when using Powershell ISE the default encoding is ‘Unicode Big Endian’
If the file is recreated using UTF-8 then the script is correctly assigned a certificate
#recreate the script into a new file type "\\Path\myscript.ps1" | out-file "\\Path\myscript_New.ps1" -encoding utf8
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning ` | Where-Object {$_.subject -match "Powershell User"})[0] #use the UTF-8 encoded file Set-AuthenticodeSignature "\\Path\myscript_New.ps1" $cert
SignerCertificate Status Path
—————– —— —-
Cert_Thumbprint Valid myscript_New.ps1
Pingback: Creating Self-Signing Certificates and assigning to Powershell scripts « Mohsin's DBA Blog
Pingback: Confluence: Team PC
Pingback: Confluence: Team PC