SCVMMライブラリに配置したPowerShellスクリプト

SCVMMのライブラリ共有には、vhdファイルやISOファイルなど、仮想マシンを展開するために必要なコンテンツを保存しておくことができますね。今日は、色々なコンテンツを保存できるライブラリ共有からPowerShellスクリプトについてです。

PowerShellスクリプトは、ライブラリの共有フォルダに保存しておくだけで、VMM管理者コンソールに表示され、
管理者コンソールからスクリプトの実行開始ができます。ところが、単純にps1ファイルを配置して、実行しようとすると、
下図のようなエラーが表示されます。

sigerror1
図 見にくくてごめんなさい。要するにデジタル署名されてないよ、と言っています。

エラーメッセージにも書いてあるようにPowerShellスクリプトにデジタル署名(コード署名)を施してあげないといけません。
PowerShellスクリプトにデジタル署名を施す方法については、すでに様々なところで紹介されているので、そちらを参考にしていただければと思います。

■PowerShellで仮想環境も管理!! Hyper-V、SCとの連携
http://journal.mycom.co.jp/articles/2010/06/15/ps_y/001.html

■Set-AuthenticodeSignature
http://technet.microsoft.com/ja-jp/library/dd347598.aspx

ところが、実際に署名を施そうとすると、エラーが表示されました。

sigerror2 
図 Unknown Errorと表示されていることがわかる

PowerShellスクリプトの開発環境である、Windows PowerShell ISEを使って作られたスクリプトは
文字コードがUnicode Big endian形式で保存されるのですが、コード署名するスクリプトはUTF-8形式で
保存しなければなりません。そのため、Windows PowerShell ISEを使ってスクリプトを作成した場合、
いったんメモ帳でスクリプトを開き、UTF-8形式でファイルを保存しなおしてあげる必要があります。
(文字コードを変える方法はメモ帳以外にもありますので、もちろんほかのやり方でも結構です)

sigerror3 
図 UTF-8形式で保存してあげると、コード署名もご覧のとおり

これで、VMM管理者コンソールから、ライブラリ共有のPowerShellスクリプトを実行できるようになりました。