Найти в Дзене
Steam Paul

Как подписать скрипт PowerShell

Для начала нам понадобится сертификат для подписи кода, как получить его в домене с собственным 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

Запускаем его, указав в качестве параметра путь к подписываемому скрипту и готово.