Для начала нам понадобится сертификат для подписи кода, как получить его в домене с собственным CA я опишу в отдельной статье, пока же предположим, что он уже есть в хранилище пользователя.
Недавно узнал, что для этого есть специалный командлет Set-AuthenticodeSignature, которому нужно передать в качестве параметров сертификат и путь к файлу.
для того, чтобы обратиться к хранилищу сертификатов, можно использовать Get-Childitem Cert:\CurrentUser\My -CodeSigningCert
Такой вызов вернет нам массив из всех сертификатов в хранилище, годных для подписания кода. Не знаю, у кого как, а у меня таких сертификатов 1, значит достаточно, не мудря взять нулевой элемент массива.
В итоге получаем вот такой скрипт:
param([string] $file=$throw "Please specify a script file")
$cert = @(Get-Childitem Cert:\CurrentUser\My -CodeSigningCert)[0]
Set-AuthenticodeSignature $file $cert
Запускаем его, указав в качестве параметра путь к подписываемому скрипту и готово.