Как я могу проверить, подписан ли скрипт powershell из управляемого API? - PullRequest
3 голосов
/ 30 апреля 2010

Я хочу выполнить powershell с помощью .net Powershell SDK. У меня это работает нормально. Прежде чем выполнить его, я хочу проверить, что скрипт был подписан моим сертификатом для подписи кода - это достаточно легко сделать из самого powershell с помощью Get-AuthenticodeSignature, но я хотел бы сделать это в коде, прежде чем выбрать выполнение этого скрипта.

Решение:

        Runspace runSpace = RunspaceFactory.CreateRunspace();
        runSpace.Open();

        Pipeline shell = runSpace.CreatePipeline();
        shell.Commands.AddScript(String.Format("Get-AuthenticodeSignature '{0}'", Filename));

        Signature sig = (shell.Invoke()[0]).BaseObject as Signature;
        bool isValid = sig.Status == SignatureStatus.Valid;

1 Ответ

4 голосов
/ 01 мая 2010

Я думаю, что проще всего по-прежнему использовать PowerShell, но из управляемого кода:

using System.Management.Automation;

void Foo(string path) {
   PowerShell shell = PowerShell.Create();
   shell.AddScript(String.Format("Get-AuthenticodeSignature {0}", path));

   Signature sig = shell.Invoke()[0] as Signature; // returns collection
   bool isValid = sig.Valid;
}

(из памяти, поэтому может быть не совсем синтаксически правильным)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...