Exchange Server 2007には,.NET Frameworkをベースにした新しいコマンドライン環境「PowerShell」が搭載されている。次期サーバーOS「Windows Server 2008」にも搭載される機能だが,Exchange Server 2007にいち早く搭載された。このPowerShellを使ってExchange Server 2007を管理する手法を,全3回の短期集中連載で解説する。
「Monad」という開発コード名だったPowerShellは,Windowsに強力なスクリプティング機能を提供する。これまでも「VBScript」に代表されるように,Windows上には様々なスクリプト(特定の機能を実現するための簡易プログラム)環境があった。しかし,プログラムしやすいとは言えず,また処理速度も通常のプログラムと違って遅いという欠点があった。
一方のUNIXの世界では,UNIXコマンドを組み合わせて,容易にシステムの管理に必要なスクリプトを作成できた。これは,UNIXはもともとCLI(コマンド・ライン・インターフェース)ベースのOSであり,WindowsはGUI(グラフィカル・ユーザー・インターフェース)ベースで開発されたOSだからであろう。しかし近年,複雑なシステムを短期間で確実に構築する必要性は日々高まっている。また,日常的な運用現場でも,操作ミスを起こすことができない状況にある。
こうした背景からMicrosoftは,システム管理の自動化,さらにアプリケーションの開発にも利用できる,より強力で使いやすいスクリプティングのコマンド環境を.NET Framework上で開発したのである。これがPowerShellだ。もちろん,PowerShellはインタラクティブ・シェルであり,対話型の処理にも利用できる。PowerShellの特徴については,数多くのWebサイトで取り上げられている(以下参照)ため,本コラムでは,Exchange Server 2007に焦点を絞ってお話ししよう。
- MicrosoftによるPowerShellの公式サイト(英語)
- MicrosoftによるPowerShellのFAQ(英語)
- Microsoftが提供するPowerShellのWikiサイト(英語)
- マイクロソフト日本法人によるPowerShellのWebサイト(日本語)
では,Exchange Server 2007上で,PowerShellを使ってどんなことができるのか,早速ご覧いただくことにしよう。
「ADSI/CDOEXM」VS「Exchange管理シェル」
Exchange Server 2003までは,ADSI(Active Directory Service Interfaces)やCDOEXM(CDO for Exchange Management)を使用したプログラム(スクリプト)が主に利用されていた。リスト1は,メールボックスを有効化するためのスクリプトの例である。
リスト1●ADSIやCDOEXMを使ったメールボックスを有効化するスクリプト | |
| |
[スクロールバーが表示されない場合はこちらをクリック] |
同様のことを,Exchange Server 2007版のPowerShellである「Exchange管理シェルを使うとどうなるだろう。実は,コマンド1のようないたって簡単なコマンドで実現できるのである。
コマンド1●Exchange管理シェルでメールボックスを有効化する(実際には1行で入力する)
|
ここでは「Enable-Mailbox」というCmdlet(コマンドレット)を使用している。コマンドレットとは,単一の機能を実現するコマンドのことであり,Exchange Server 2007の管理シェルには,Windows PowerShellを含む約350個のコマンドレットが実装されている。
コマンド1では,パラメータにユーザーのIDとデータベースのIDを指定するだけで,メールボックスを有効化できる。なおユーザーのIDは,「'root\user1'」などのように指定することもできる。
Exchange管理シェルに実装されたコマンドレットとは?
Exchange Server 2007では,実際にどのようなコマンドレットが実装されているのか,見てみよう。
まず,Exchange Server 2007をインストールしたサーバー上で「Exchange管理シェル」を立ち上げてみよう(図1)。最初に,「Tip of the day」(Tip:豆知識のようなもの)が表示される。ここで「Get-Command」と入力してみよう。すると,図2のように,スクロール・アウトしてしまうほどの数のコマンドレットが出力される。
図1●Exchange管理シェルを起動した画面 [画像のクリックで拡大表示] |
図2●Get-Commandを使って出力したコマンドレット一覧 [画像のクリックで拡大表示] |
なお,コマンドレットに関するヘルプを見るのであれば,コマンド2のように「Get-Help」コマンドをパイプ処理して,ヘルプの内容をテキストに出力すると便利だろう。
コマンド2●コマンドレットのヘルプをテキスト・ファイルに出力する
|
図3は,実際に出力してみたコマンドレットのヘルプの例である。
図3●テキスト・ファイルに出力したコマンドレットのヘルプ [画像のクリックで拡大表示] |
もちろん,単純にコマンド3のようなコマンドを実行して,個々のコマンドレットに関するヘルプも見られる。図4がそのヘルプである。
コマンド3●Enable-Mailboxコマンドレットのヘルプを表示する
|
図4●Enable-Mailboxコマンドレットのヘルプ [画像のクリックで拡大表示] |
マイクロソフトが運営する「TechNet」のWebサイトには,「Exchange 2007コマンドレット一覧」という,すべてのコマンドレット一覧が掲載されている。ただし,こちらはオブジェクト名のアルファベット順に記載されているので,コマンドレット名順に参照したい場合は,先に図3で示した,ヘルプをテキスト・ファイルで取得する方法をお勧めする。
次回は,Exchange Server 2007を構築および運用する上で,頻繁に利用することになるいくつかのコマンドレットについてご紹介しよう。
|