第3回 進化したPowerShell 2.0Windows Server 2008 R2の真価(1/4 ページ)

Windows向けの高機能なシェル環境であるPowerShellが2.0に進化した。より使いやすく、そして高機能になったPS 2.0について解説。

» 2009年10月15日 00時00分 公開
 
Windows Server Insider

 

「 」のインデックス

連載目次

「Windows Server 2008の真価」は、2009年10月に出荷が予定されている、Windows Server 2008の後継OSである、Windows Server 2008 R2の注目機能について解説するコーナーです。


 Windows Server 2008 R2には、従来から広く利用されているコマンド・プロンプトよりも高機能なシェルである、「Windows PowerShell 2.0」が標準機能として付属している。本稿ではWindows Serverの標準機能となったPowerShell 2.0の概要を述べ、PowerShellがWindows Server管理者にとってどのような変革をもたらすのかについて解説する。なおこのPowerShell 2.0は同時期に出荷が開始されるクライアントOSであるWindows 7でも利用できる。本稿の解説は特に断らない限り、Windows Server 2008 R2でもWindows 7にも適用可能である。なおPowerShellの基本的な機能については以下の記事などを参照していただきたい。

[参考]従来OS向けのPowerShell 2.0

 Windows XPやWindows 2003、Windows Vista、Windows Server 2008向けのPowerShell 2.0の正式版は、2009年10月末に公開された。以下のサポート技術情報内のリンクからダウンロードできる。PowerShell 2.0単体では配布されておらず、「Windows Management Framework Core(WinRM 2.0+Windows PowerShell 2.0)」として配布されている。インストール方法の詳細などは以下のページを参照していただきたい。


PowerShellが登場した背景

 PowerShellはその名のとおり、Windows OS向けのシェルである。シェルという言葉やその機能はUNIXで広く知られるようになったが、OSの核であるカーネルを覆い隠し、ユーザーや管理者がOSを対話的に操作するためのプログラム機能のことである。Windows Serverでは従来から(クライアントOSでも同様だが)、GUI(Graphical User Interface)のシェルであるエクスプローラが主に使われている。ご存じのとおりエクスプローラを用いると、ファイル操作、デスクトップ・アイコンからのプログラムの起動、タスク・バーによるプログラムの切り替えや、コントロール・パネルでの各種設定などがマウス・オペレーションにより可能である。

 一方でWindows Serverにはコマンド・プロンプトというCUI(Character User Interface)ベースのシェルも存在している。コマンド・プロンプトそのものはコンソール・アプリケーションであるため、入力も出力もすべて文字列である。つまり、マウス・オペレーションではなくユーザーや管理者はキーボードからコマンドを入力し、結果は文字列で表示される。

 Windows Serverを管理する場合、エクスプローラとコマンド・プロンプトを併用するケースが多いのではないだろうか。なぜならば、両者ともメリットとデメリットがそれぞれあるからだ。エクスプローラおよびそこから起動されるGUIアプリケーション(MMCコンソールをベースに動作する管理ツールを含む)を使用した管理は、非常に直感的である。画面に表示されたテキスト・ボックスに文字を入力したり、ボタンをクリックしたりするだけで各種設定が行える。その半面、同様の操作を繰り返す場合は、何度も同じような操作を、繰り返し手作業で行わなければならない。だがコマンド・プロンプトを使えば、このデメリットを補うことができる。コマンド・プロンプトでは繰り返し(反復)処理を行うためのコマンドが用意されているし、一連の操作をテキスト・ファイルであるバッチ・ファイルに記述しておき、必要に応じて記述しておいた操作を繰り返し何度も実行することができる。

 さて以上の説明だけだと、Windows Serverは何のスキもない完成された管理機能を持っていると思えるかもしれない。しかし、実際はコマンド・プロンプトにはデメリットがいろいろとある。まず、コマンド・プロンプトから呼び出す各種コマンドが非常に多く存在するうえ、そのコマンド命名規則も、コマンドに付けるオプションもまちまちである(注:コマンドにはコマンド・プロンプトそのものが持つ内部コマンドと、コマンド・プロンプトから実行するコンソール・アプリケーションである外部コマンドが存在するが、利用者側からは普通は意識しないでよい)。そのため、どのようなコマンドが存在し、どのような操作がどのコマンドで実行できるのか、あるいはどういうオプションを付ければどのような変化が現れるのか、などを把握するのが容易ではなく、習熟に時間を要する。また、コマンド・プロンプトで用いるコマンドをあらかじめ記述しておくバッチ・ファイルでは、ごく単純な制御構文しか利用できない。せいぜい、変数の使用、条件分岐、繰り返し、行ジャンプ程度である。これはC#やJavaなどといった一般的なプログラミング言語に比べるべくもなく、同じくOSのシェルであるUNIXシェル・スクリプトに比べても大きく見劣りする。この弱点をカバーするために、Windows ServerにはVBScriptやJScript(Microsoft版JavaScript)といったスクリプト言語を用いて処理を記述できるWSH(Windows Script Host)というプログラムが用意されているものの、これらの言語を用いた場合、複雑な処理は可能になる半面、簡単なことを行うにも多くの記述が必要であるという問題を抱えている。またコマンド・プロンプトのような対話的コンソールの機能もない。

 このように、これまではWindows Server管理を円滑に行うためのコマンドライン・シェルには満足のいくものがなかった。そのため、Microsoftはまったく新しい、Windows Serverの管理に特化したシェルとしてPowerShell 1.0を開発した。PowerShell 1.0は2006年にリリースされ、Windows Server用としてはWindows Server 2003版がダウンロードおよびインストールが可能となった。Windows Server 2008ではOSのコンポーネントとして含まれており、サーバー・マネージャから「機能の追加」を行うことでインストールすることが可能である。さらに、いくつかのサーバ製品群(Exchange Server 2007など)にもPowerShell 1.0が同梱され、サーバOSのみならずサーバ製品をPowerShellベースで管理できるようになり始めた。

PowerShell 2.0の登場

 しかしながら、PowerShell 1.0が大々的に利用されたかというと、必ずしもそうであるとはいえないのが実際のところではないだろうか。筆者はPowerShellに関する数々の講演や執筆活動を行ってきており、その際に感じたことであるが、PowerShellの認知度はそれほど高くなく、また、実際に使用しているという声もなかなか聞かれなかった。これには主に3つの理由があるためと筆者は考える。というのも、「なぜ使わないのですか?」と聞くと「興味はあるのですが……」というフレーズに続いて、だいたい次のような声が返ってくるからだ。

  1. 導入に手間が掛かる
    PowerShell 1.0はWindows Server 2003ではダウンロードおよびインストールが必要、Windows Server 2008では有効化が必要であり、デフォルトの状態では使用が不可能である。
  2. 資料が乏しい
    ヘルプはコマンドラインからしか取得できず、WSHのようなヘルプ・ファイルがない。
  3. 導入するメリットを見いだしにくい
    わざわざPowerShellを用いなくても、バッチ・ファイルやWSHスクリプトで代替できる。

 以上のような理由で、PowerShellを導入、学習するサーバ管理者は少なかったのではないだろうか。

 そのような状況の中、PowerShell 2.0がWindows Server 2008 R2およびWindows 7とともに登場することとなる。PowerShell 2.0が1.0と大きく違うのは「OSの標準機能である」という点である。Windows Server 2008 R2をインストールすると、次のようなデスクトップを目にすることとなる。

Windows Server 2008 R2のデスクトップ
インストールした直後の状態ではこのようなデスクトップが表示される。PowerShellアイコンがタスク・バー上に存在しているのが分かる。なおWindows 7の場合は[スタート]メニューの[すべてのプログラム]−[アクセサリ]−[Windows PowerShell]から起動できる。
  (1)PowerShell 2.0を起動するためのタスク・バー・アイコン。

 タスク・バー上のサーバー・マネージャのアイコンとエクスプローラのアイコンの間にあるのがPowerShell(以下、バージョンの表記を指定しない場合は2.0を指すものとする)のアイコンである。このアイコンをクリックすると、PowerShellが起動する。

PowerShellの起動画面
PowerShellアイコンをクリックするとPowerShellのコンソール・ウィンドウがすぐに起動する。

 このように、Windows Server 2008 R2ではPowerShellはデフォルトですぐに実行可能になっている。これにより、先のデフォルトでインストールされていないという問題は解決している。

 また、タスク・バーのPowerShellのアイコンを右クリックすると、これも2008 R2の新機能であるジャンプ・リストによって次のようなメニューが表示される。

PowerShellのジャンプ・リスト
Windows Server 2008 R2/Windows 7では、タスク・バー上のアイコンを右クリックするとよく使う機能などをまとめた「ジャンプ・リスト」が表示される。
  (1)PowerShellアイコンを右クリックするとよく使うタスクが含まれたジャンプ・リストが表示される。通常起動するほか、管理者として実行したり、ヘルプを表示したりできる。

 ここに、「Windows PowerShell ヘルプ」という項目があるので、クリックするとグラフィカルなヘルプが表示される。

「Windows PowerShell のヘルプ」表示
このようにPowerShellにはHTML形式の標準的なヘルプ・ファイルが付属し、いつでも表示可能である。

 これにより、資料が乏しい(ヘルプが利用できない)という問題も解決された。

 さて、一番よく聞かれる意見である「導入するメリットを見いだしにくい」に対する答えであるが、それは次のページから始めるPowerShell の機能紹介から判断していただきたい。

【コラム】Windows Server 2008 R2 Server CoreとPowerShell 2.0

 Windows Server 2008およびWindows Server 2008 R2では、エクスプローラではなくコマンド・プロンプトがシェルとなっており、最小限の機能のみ有効化されている「Server Coreインストール」が利用できる。Windows Server 2008 Server CoreではPowerShellの1.0も2.0も利用できないが(これは後述する.NET Frameworkが利用できないため)、Windows Server 2008 R2 Server CoreではPowerShell 2.0を利用できる。ただし、デフォルトでは無効化されているので、次のコマンドをコマンド・プロンプト上で実行して.NET Framework 2.0およびPowerShellを有効化する必要がある。

start /w ocsetup NetFx2-ServerCore
start /w ocsetup MicrosoftWindowsPowerShell

  PowerShellを起動するには、

start C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe

とする。


【更新履歴】

【2009/10/30】Windows XPやWindows 2003、Windows Vista、Windows Server 2008向けのPowerShell 2.0の正式版が公開されましたので、ダウンロード先などの情報を加筆・修正しました。



       1|2|3|4 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。