PowerShell を使用して Office 365 に接続し、ユーザー ライセンスに関する詳細を取得する ASP.NET MVC 3 アプリケーションがあります。
コード自体は多くの場合に機能します。
- 私のローカルIISのプロジェクトは動作します
- ライブラリを使用した LINQPad のコードが私のマシンで動作する
- ライブラリを使用した LINQPad のコードがターゲット サーバーで動作する
もちろん、機能しない場所は、実際に機能する唯一の場所です。ターゲット サーバー上の IIS です。
Connect-MsolService
コマンドレットを呼び出すと、常に例外が発生します。問題は、例外が何も教えてくれないことです。
例外の種類は
Microsoft.Online.Administration.Automation.MicrosoftOnlineException
メッセージは
タイプ 'Microsoft.Online.Administration.Automation.MicrosoftOnlineException' の例外がスローされました
これはかなり役に立ちません。
コードで使用する Office 365 ユーザー アカウントは常に同じです。IIS の起動に使用されるユーザー アカウントも常に同じです (ローカル システム)。
PowerShell コードの実行を という名前のクラスにラップしましたPowerShellInvoker
。そのコードはここにあります。
Office 365 に接続するコードは次のとおりです。
var cred = new PSCredential(upn, password);
_psi = new PowerShellInvoker("MSOnline");
_psi.ExecuteCommand("Connect-MsolService", new { Credential = cred });
実際にスローError
された例外はなく、パイプラインのプロパティでエラーが見つかりました。(クラスの 50 以降の行を参照してくださいPowerShellInvoker
。)
問題は、特に LINQPad を使用するときに同じコードが機能するため、何が問題なのかわからないことです。Google による検索結果も役に立ちませんでした。
サーバーは、IIS 7.5 を搭載した Windows Server 2008 R2 Datacenter SP1 で実行されます。