2012年11月23日金曜日

[WAAD]Windows 8 の PowerShell で ServicePrincipal 関連の操作を行う


既出情報ですが、意外と引っかかるのでメモとして書いておきます。

Windows 8 / Windows Server 2012 では Microsoft Online Services Module for PowerShell をインストールして ServicePrincipal 関連のコマンドレット(例えば Get-MsolServicePrincipal)を実行しても ObjectNotFound と言われてしまいます。



これは ServicePrincipal 関連のコマンドレッドが含まれるモジュール(MSOnlineExtended)を実行するのに PowerShell 2.0 のエンジンが必要なためです。※コントロールパネルの Windows の機能から見ると PowerShell 2.0 とありますが実際は Version 3.0 が実行されているからです。(プロンプトから $PSVersionTable を実行すると PSVersion の値が 3.0 となっているが確認できます)


この状態を解消するには、 powershell.exe の引数に -version 2.0 をつけて明示的に Version 2.0 で PowerShell を起動し、MSOnline モジュールおよび MSOnline Extended モジュールをインポートする必要があります。

コマンドプロンプトから以下を実行します。
> C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -version 2.0

PowerShell が起動したら以下を実行します。

PS > Import-Module MSOnline
PS > Import-Module MSOnlineExtended


ただ、副作用があり Windows 8 用の Version 2.0 の PowerShell ISE が用意されていないので、Out-GridView などの機能が使えなくなります。。。
早く PowerShell 3.0 用の MSOnlineExtended モジュールがリリースされないかな。。。

0 件のコメント: