【问题标题】:How can I verify signature of a Powershell .ps1 script using C#?如何使用 C# 验证 Powershell .ps1 脚本的签名?
【发布时间】:2011-03-09 16:36:53
【问题描述】:

我有一些签名的 .ps1 脚本,我需要验证它们是否从 C# 项目正确签名,是否有任何算法或库可以做到这一点?

谢谢!

【问题讨论】:

    标签: c# powershell signature authenticode


    【解决方案1】:

    如果 Get-AuthenticodeSignature cmdlet 验证正确(即,如果无效则报告错误)并且 PSH 在目标系统上可用,则可以在 C# 应用程序中运行 PSH。

    【讨论】:

      【解决方案2】:

      您可以托管 PowerShell 引擎以使用 Get-AuthenticodeSignature cmdlet 进行检查,例如:

      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);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-12
        • 2018-03-03
        • 1970-01-01
        • 1970-01-01
        • 2020-10-11
        • 2020-01-02
        • 1970-01-01
        • 2018-06-08
        • 2018-11-21
        相关资源
        最近更新 更多