Еще один способ сделать это - загрузить сертификат прямо из хранилища сертификатов с помощью провайдеров PS. Используйте Get-PSProviders для определения доступных PSProviders на вашем компьютере.
После того, как у вас загружен поставщик сертификатов, вы можете получить сертификат с помощью Get-ChildItem
Запуск certmgr.msc из запуска для запуска хранилища сертификатов
Предполагая, что ваш сертификат хранится в папке Личная в вашем хранилище сертификатов
и в нем установлено " Название компании " в свойстве субъекта сертификата, и в нем есть только сертификат папка с название компании в теме - вы можете получить сертификат вот так
$my_cert = Get-ChildItem cert:\CurrentUser\My | ? {$_.Subject -match "Company Name"}
$ my_cert будет вашим объектом сертификата, который вы можете напрямую передать Set-AuthenticodeSignature cmdlet
Set-AuthenticodeSignature -Certificate $my_cert -FilePath fqn_to_dll.dll -Timestampserver "http://timestampurl"
после подписания, вы можете получить статус подписи, запросив у свойства Status значение «Действительный» или не такой как
$result = Set-AuthenticodeSignature -Certificate $my_cert -FilePath fqn_to_dll.dll -Timestampserver "http://timestampurl" | Select Status
if(-Not ($result -eq "Valid")){
Write-Output "Error Signing file: Status: $($result.Status)"
}