Set-AuthenticodeSignature klappt nicht…

Der Versuch, mein in den letzten Tagen frisch gecodetes Powershell Script zu signieren, scheiterte heute morgen kläglich mit einem „UnknownError“. Nach ein wenig hin und her probieren war die Lösung relativ schnell gefunden: Die ISE speichert die Dateien als ‚Unicode big endian‘ – das CmdLet Set-AuthenticodeSignature versteht aber nur UTF-8. Wer bei MS denkt sich denn bitteschön sowas aus? Naja, die offizielle Lösung von Microsoft ist kreativ und lautet: Datei mit Notepad laden, speichern und erst dann signieren

Da es bei mir aber trotzdem nicht geklappt hat, habe ich mir ein kleines Script geschrieben und mir damit selbst wie folgt geholfen:

#Script sign.ps1
param([string] $file2sign =$(throw "Bitte geben Sie die zu signierende Datei an!"))
$tmpfile = $file2sign + ".tmp"
Get-Content $file2sign | Set-Content $tmpfile
move $tmpfile $file2sign -Force
$pfx = "C:\pfx\my_cert.pfx"
$cert = Get-PfxCertificate $pfx
Set-AuthenticodeSignature -File $file2sign -Certificate $cert