ステップ1: コード署名証明書のインストール
コード署名証明書のインストールは他の証明書よりも厳しい手順が必要である。
1. 管理ツール[証明機関]で発行可能な署名として[コード署名]を追加
2. 証明機関のWebサイトに管理者アカウントでSSLによる接続
3. コード署名を取得してインストール
ステップ2: コード署名証明書を使ってスクリプトに署名
全スクリプトファイルに署名が必要なので、以下のPowerShellスクリプトを実行するのが便利だろう。この種のスクリプトが手軽に書けるのもPowerShellの魅力のひとつである。
#インストール済みのコード署名証明書を変数certに代入
$cert=Get-ChildItem -Path cert:\CurrentUser\my -CodeSigningCert
#スクリプトのあるフォルダ(ここではhyperv_install)内の全ファイルに対して
#コード署名を追加 (署名を受け付けないファイルは無視される)
get-childitem hyperv_install | foreach-object -process {set-AuthenticodeSignature -FilePath $_.pspath -certificate $cert}
ステップ3: 実行ポリシーの変更
以下のコマンドを実行して、スクリプトの実行ポリシーを変更する。筆者は以下のコマンドを実行して、AllSignedポリシーを選択した。
Set-ExecutionPolicy AllSigned (すべてのスクリプトに署名が必要)
ステップ4: 証明書発行元の信頼
署名した証明書を「信頼された発行元」として登録する。このステップは、最初にスクリプトを実行する時に自動的に構成できるので、必須ではない。
ステップ5: モジュールのインポート
以上の準備ができたら、PowerShellで以下のコマンドを実行する。
Import-Module hyperv
この時、署名された証明書の発行元を信頼していない場合は以下のメッセージが表示される(発行元はユーザーであり、証明書発行機関の信頼とは別である)。
この信頼されていない発行元からのソフトウェアを実行しますか?
ファイル C:\Program Files\Modules\hyperv\hyperv.Format.ps1xml の発行元は
CN=Administrator, CN=Users, DC=corp, DC=classroom, DC=local
であり、このシステムで信頼されていません。信頼された発行元からのスクリプトのみ
を実行してください。
[V] 常に実行しない(V) [D] 実行しない(D) [R] 一度だけ実行する(R)
[A] 常に実行する(A)[?] ヘルプ (既定値は "D"):
ここで「A」キーを押すことで、署名に使われた証明書が信頼できる発行元として登録される。いったん登録されたら次回からはプロンプトなしで実行できる。