前回の投稿でExchange OnlineをPowerShellから管理する方法として、
WinRMを利用してExchange Onlineに接続し、PowerShellコマンドレットを実行する方法があることを紹介しました。
先日のトレーニングの中で、実際にこのパターンを試していただく実習があったのですが、
今まで見たこともないトラブルがあったので、備忘録がわりに記しておきます。
■ ■ ■
WinRMを利用してExchange Onlineに接続するときには、以下のコマンドレットを実行する必要があります。
Set-ExecutionPolicy RemoteSigned
$cred = Get-Credential
Connect-MsolService -Credential $cred
$Session=New-PSSession -ConfigurationName Microsoft.Exchange ‘
-ConnectionUri https://ps.outlook.com/powershell/ -Credential $cred ‘
-Authentication Basic –AllowRedirection
ところが、最後の行を実行すると、以下のエラーが表示されました。
Connecting to remote server failed with the following error message :
The WS-Management service cannot process the request.
This user is allowed a maximum number of 3 concurrent shells, which has been exceeded.
Close existing shells or raise the quota for this user.
For more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo : OpenError: (System.Manageme….RemoteRunspace:RemoteRunspace) [],
PSRemotingTransportException + FullyQualifiedErrorId : PSSessionOpenFailed
エラーメッセージはps.outlook.comからsin*****.outlook.comへのリダイレクトが行われた後で
表示されたので、接続そのものに問題があるわけではないことが確認できました。
そこで、セッションが問題があるのでは?と思い、一度PowerShellウィンドウを閉じて、
もう一度ウィンドウを開きなおし、同じ操作を繰り返したら、今度はうまく接続できるようになりました。
セッションに問題があるときには、一度セッションをクローズし、
もう一度接続しなおせば良いってことですね。
それにしても、どうしてこのようなことが起こるのか?
追加情報がありましたら、改めてお伝えしたいと思います。
コメント
すでに解決済みかもしれませんが、上記のエラーは接続している PSSession が最大数の3に達しているために、それ以上接続できない状態になっていることが原因で発生するエラーだと思います。
一度 Get-PSSession で接続されているセッションを確認し、Remove-PSSession で不要なセッションを削除することで対応できます。
ありがとうございます!ほかの操作などでPSSessionで既に複数回接続していることが原因だったのですね。
Exchange Onlineに接続後、Get-ThrottlingPolicy | select *concurrencyなどで見ると、サービスディスクリプションには掲載されていない最大同時接続数が表示されます。PowerShellはユーザーで3、テナントで9に設定されているようです。
@genkiwさん、ありがとうございます!
ユーザーの最大同時接続とテナントの最大同時接続がそれぞれ定義されているのは面白いですね。