1/12/2011

64bit Windows環境で System.Management.Automation を使用してAzure Management CommandLets を利用する

前回のブログで 「64nit Windows環境において、C#からAzure Management CommandLets を利用できない」と書きましたが、皆さんは動きましたか?動かない方はADD-PSSnapinコマンドを実行するところで失敗していると思います。

これは System.Management.AutomationがC:\Program Files (x86)フォルダ配下に存在する物を使用している場合におこる現象です。利用しているクラスは.NETの32bit向けのクラス提供となっており、Azure Management Tools CommandLets のインストーラが.NETの64bit環境にしかインストールしないため、.NETの32bitのモジュールからは使うことができないのです。試にWindows PowerShell(x86)を実行していただくとわかると思いますが、ADD-PSSnapinコマンドでAzure Management Tools CommandLetsを利用することができません。

これを回避するには2つの方法があります。64bitに対応したWindows SDKをインストールする方法と、Azure Management Tools CommandLetsを32bitのPowershellにもインストールする方法の2種類です。おすすめとしては前者の64bitに対応したWindows SDKをインストールする方法です。

1. 64bitに対応したWindows SDKをインストールする方法

下記のサイトからインストーラをダウンロードして実行してください。

Windowsデベロッパーセンター Windows SDK
http://msdn.microsoft.com/ja-jp/windows/bb980924

Microsoft Windows SDK for Windows 7 and .NET Framework 4
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en

2. 、Azure Management Tools CommandLetsを32bitのPowershellにインストールする方法

installutil.exe を使用して手動で.NETの32bit環境に手動でインストールを行う方法を紹介します。このinstallutil.exeは.NETでサービスを作った場合などを登録する際に使用するなど、一般的に利用するコマンドです。

2-1. コマンドプロンプトを管理者で実行
スタートメニューからコマンドプロンプトを管理者で実行します。管理者で実行する方法は、「コマンドプロンプト」のアイコンにマウスカーソルを合わせて右クリックで表示されるコンテキストメニューから「管理者として実行」を選択します。

2-2. installutil.exeを実行
下記コマンドのように、.NETの32bit版のインストールコマンドを実行します。指定するファイルは、Azure Management Tools CmdLets をインストールする際に作成されたDLLです。

%WINDIR%\Microsoft.NET\Framework\v2.0.50727\installutil.exe -i C:\AzureServiceManagementCmdlets\code\AzureManagementTools.Cmdlets\bin\Debug\Microsoft.Samples.AzureManagementTools.PowerShell.dll

2-3. インストール確認
前回ブログで紹介したプログラムで確認することもできますが、Windows PowerShell(x86)を実行してインストールの確認を行うことができます。

Windows PowerShell(x86)
%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe