Как проверить подпись сценария Powershell .ps1 с помощью C #? - PullRequest
1 голос
/ 29 июня 2010

У меня есть несколько подписанных скриптов .ps1, мне нужно проверить, правильно ли они подписаны в проекте C #, есть ли какой-нибудь алгоритм или библиотека для этого?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 29 июня 2010

Для проверки этого можно использовать механизм PowerShell, используя командлет Get-AuthenticodeSignature, например:

using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;

private bool VerifyPowerShellScriptSignature()
{
    using (var runspaceInvoke = new RunspaceInvoke())
    {
        string path = "C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\" +
                      "Modules\\PSDiagnostics\\PSDiagnostics.psm1";
        Collection<PSObject> results =
            runspaceInvoke.Invoke("Get-AuthenticodeSignature " + path);
        Signature signature = results[0].BaseObject as Signature;
        return signature == null ? false : 
                                  (signature.Status == SignatureStatus.Valid);
    }
}
0 голосов
/ 29 июня 2010

Если командлет Get-AuthenticodeSignature проверяет правильно (т. Е. Сообщает об ошибке, если она недействительна) и PSH доступен в целевой системе, вы можете запустить PSH в приложении C #.

...