2014/06/25

PowerShell コード署名付きスクリプトを実行し「常に実行しない(V)」を選択した場合の対処法

PS_Set-Auth_Error_04
署名されたPowerShell スクリプト ファイル(.ps1)を実行すると確認プロンプトが表示されます。
誤って、[常に実行しない]を選択したところ、スクリプトが実行出来なくなりました。
対処法をメモしておきます。

現象

この信頼されていない発行元からのソフトウェアを実行しますか?
ファイル xxxx.ps1 の発行元は CN=xxxx であり、このシステムで信頼されていません。信頼された発行元からのスクリプトのみを実行してください。
  • [V] 常に実行しない(V)
  • [D] 実行しない(D)
  • [R] 一度だけ実行する(R)
  • [A] 常に実行する(A)
  • [?] ヘルプ
  • (既定値は “D”):
プロンプトの「[V] 常に実行しない(V)」を選択すると
証明書は、証明機関によって失効=使用できない
状態になります。
Technetの「abount_Signing」を見ると
 If you trust the publisher, select "Run once" or "Always run." 
        If you do not trust the publisher, select either "Never run" or 
        "Do not run." If you select "Never run" or "Always run," Windows
        PowerShell will not prompt you again for this publisher.
と書かれています。

対処法

image
今回作成したコード署名 証明書はローカルで作成しており、証明書の状態を確認すると[失効状態]になっていた。
そのため下記に示す対処法で対応する事で再度スクリプトを実行できるようになります。
  1. [インターネット オプション]→[コンテンツ]→[証明書]をクリック
  2. 該当の証明書を削除
  3. Set-AuthenticodeSignature コマンドレットで使用した証明書を削除
  4. 自己署名証明書を作成
  5. スクリプト ファイルを署名しなおす
尚、AD CSで作成したコード署名の場合はまだ未確認です。
ちょっとした操作ミスでスクリプト ファイルが実行できなくなるので注意したいところです。
スポンサーリンク

スポンサーリンク