normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

2007以前の Exchange Server から予定をひっこ抜こうとした件

所用で 2007 以前の Exchange Server から予定をひっこ抜こうとしたのだが、疎通の時点で色々と問題があってうまくいかなかった。備忘録としてやったことを簡単にまとめておく。

実施した内容

まずは基本中の基本である以下 TechNet 記事を参照した。

上記は Exchange Online が適用先となっているが、一応オンプレの Exchange Server で出来るかためしたところ以下のエラーが出た。

SSL 証明書の失効チェックできませんでした。取り消しを確認するために使用するサーバーがアクセスできない可能性があります。

調べてみたところ、Windows 専用の Office 365 でのリモート PowerShell を使用して接続するときに、「SSL 証明書をチェックできませんでしたの失効」エラー に記載がある通り、オンプレ Exchange Server の様にインターネットアクセスを持たないために証明書の失効がチェックができない場合に発生するらしい。

次に、上記のオプションを考慮して以下の PowerShell コマンドを実行した。

# Exchange Server ログイン用の認証情報取得
$myCredential = Get-Credential

# オンプレ向けにインターネットへルート証明書の失効期限を聞きに行かないようにする
$sessionOption = New-PSSessionOption -SkipRevocationCheck

# オンプレ Exchange Server に接続しに行く
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://<サーバ名> -Credential $myCredential -Authentication Basic -AllowRedirection -SessionOption $sessionOption

が、以下のエラーが出てきて目頭が熱い気味。どうやら Exchange Server 側で WS-Management プロトコルを有効化する必要がある?らしい。

New-PSSession : [<サーバ名>] リモート サーバー <サーバ名> への接続に失敗し、次のエラー メッセージが返されました: WinRM クライアントは HTTP サーバーに要求を送信し、要求された HTTP URL が使用不能であるとい
う応答を受け取りました。 これは通常、WS-Management プロトコルをサポートしていない HTTP サーバーによって返されます。詳細については、about_Remote_Troubleshooting のヘルプ トピックを参照してください。
発生場所 行:1 文字:12
+ $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri ht ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : URLNotAvailable,PSSessionOpenFailed

その他の方法は?

Exchange Server 2007 SP1 以降なら Microsoft Exchange Web Services Managed API が利用可能とのこと。以下の SDK を利用することで何とかなりそうだが、Exchange Server 2007以前では…orz

色々と操作されている情報が以下にあった。後で見よう
MS Exchangeからスケジュールを抜き出すんだぜ