1

署名済みの .ps1 スクリプトがいくつかあります。それらが C# プロジェクトから適切に署名されていることを確認する必要があります。これを行うためのアルゴリズムまたはライブラリはありますか?

ありがとう!

4

2 に答える 2

3

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);
    }
}
于 2010-06-29T15:28:59.257 に答える
0

コマンドレットが正しく検証され (つまり、Get-AuthenticodeSignature有効でない場合はエラーが報告され)、ターゲット システムで PSH が使用可能な場合は、C# アプリケーション内で PSH を実行できます。

于 2010-06-29T15:22:45.637 に答える