Office 365 アカウントのプロビジョニングを扱う C# (.NET 4.5) サイトにページを追加しています。PowerShell 呼び出しを介して Office 365 ユーザーを管理する Windows アプリケーションである Microsoftの便利なユーティリティを見つけました。このアプリケーションは Windows 7 マシンで問題なく動作し、ユーザー アカウントのプロビジョニングと編集を行うことができます。ツールからまったく同じExcutePowershellCommands()
方法を使用して Web アプリに配置すると、試した Office 365 コマンドレットが認識されないというメッセージが表示され、機能しません。ツールの指示によると、これはユーザー アカウントが Windows PowerShell を実行する権限を持っていないためであり、IIS はネイティブ Windows アプリの実行とは別のユーザー アカウントでコードを実行するため、これは理にかなっています。
ExcutePowershellCommands()
コード内の をローカル管理者になりすますブロックで囲むusing()
と、Web アプリで関数が機能します。ただし、この関数を呼び出す単体テストを作成してテストを実行すると、Office 365 コマンドレットが認識されないというエラーしか表示されません (管理者を偽装するブロックExcutePowershellCommands()
に関数がラップされているにもかかわらず)。using()
(TestDriven.Net を使用して) 単体テストが実行されているアカウントを見つける方法はありますか? なりすましを行う場合、単体テストがどのアカウントで実行されるかが問題になるのはなぜですか?
ありがとうございました!