Windows PowerShell: 新しいシェルの紹介

新しい Windows PowerShell 3.0 についてまだご存じない方は、ぜひチェックしてみてください。

Don Jones

もうすぐ新しい Windows PowerShell が登場します。マイクロソフトは、Windows PowerShell 3.0 の Community Technology Preview (CTP) 版を最近リリースしました。ただし、最終版は Windows 8 への搭載が予定されているので、最終版を使用するにはおそらく Windows 8 の発売まで待つ必要があります。Windows PowerShell 3.0 は、Windows 7 と Windows Server 2008 R2 でも使用できるようになる予定です。CTP 版は、この 2 つの OS にインストールできます。

CTP 版は、開発サイクル中にマイクロソフトの新しいテクノロジを試すことができる絶好の機会です。製品チームにフィードバックを提供すれば、皆さんの意見が反映されるかもしれません。新しい構文に何か不満があれば、ぜひ意見してください。また、特定の機能にもう 1 つだけ便利な用途を求める場合にも、ぜひお知らせください。

Windows PowerShell の場合、フィードバックは、いくつもの製品チームが使用している Microsoft Connect のサイトから送信するのが一般的には最適です。ほとんどの場合、マイクロソフトは、製品の次のバージョンがリリースされるまでフィードバックをどのように利用しているのか伝えることができないため、フィードバックに対して何が行われているのかはベールに包まれているように思われるかもしれません。ですが、Windows PowerShell チームは確かにフィードバックに目を通しています。実際、Windows PowerShell 3.0 では、Microsoft Conncet から寄せられた提案を採用した改善点が数多くあります。

GUI のあるコマンド ライン インターフェイス

これから、CTP 版で注目すべき点をいくつか紹介します。多くの初心者の方は、Windows PowerShell の構文は難しいと感じています。たとえば、すべての svchost プロセスを取得するとき、初心者の方は Get-Process –svchost のようなコマンドを実行しがちですが、この場合は Get-Process –name svchost というコマンドを実行する必要があります。

パラメーターも、少し慣れが必要です。しかし、Windows PowerShell 3.0 で導入された新しい Show-Command コマンドレットによって、実行すべきことが明確になります。Show-Command "Get-Process" というコマンドを実行すると、図 1 のようなポップアップ ウィンドウが表示されます。

図 1 新しいダイアログ ボックスによって、情報が入力しやすくなる

このダイアログ ボックスにより、どこに何を入力するのかが、ずっとわかりやすくなります。GUI のラベルは、コマンドレットのパラメーター名に対応しています。タブは、コマンドレットのパラメーター セットを表していて、パラメーターを区別するのに便利です。

[Name] (名前) ボックスに「svchost」と入力して (または、自分が探しているものを入力して) ボタンをクリックすると、コマンドが実行されます。さらに良いことには、完全なコマンドをクリップボードにコピーして、実行されたコマンドを確認することができます。これは、非常に優れた学習ツールです。

強化されたエディター

Integrated Scripting Environment (ISE) も、Windows PowerShell 3.0 で大きく強化されました (図 2 参照)。IntelliSense によって、コードのヒントの表示、コードの入力、構文のヒントの表示などが行われます。ネイティブ コマンドの一覧など、視覚的なツールを追加で表示するアドインのサイド バーもあります。これは、段階的な強化ですが、ISE をより洗練して使いやすくするために大いに役立っています。

図 2 Windows PowerShell 3.0 には、大きく強化された画面エディターがある

強化されたコマンド検出

Windows PowerShell 2.0 に搭載されているヘルプ システムでは、コマンドを検出できませんでした。また、別の検出メカニズムを使うにしても、コマンドを検出するには、そのコマンドが含まれているモジュールをメモリに読み込んでおく必要がありました。このため、アドインのコマンドを見つけるのは困難でした。Windows PowerShell 3.0 では、シェルが、定義されたモジュール パスにある (正確には、PSModulePath 環境変数で定義されているモジュール パスにある) モジュールを自動検出します。

図 2 では、ActiveDirectory モジュールが読み込まれていないにもかかわらず、Get-ADComputer などのコマンドが表示されています。読み込まれていないコマンドを実行しようとすると、Windows PowerShell では、そのコマンドをバックグラウンドで読み込みます。

この新しい検出モードによって、シェルが起動するとすぐに使用可能なモジュールがすべて読み込まれるようになりました。さらに、この過程では、予期されるタイム ラグやメモリの消費が発生しません。Windows PowerShell 3.0 では、使用しているものだけを読み込む点は変わりませんが、起動時にメモリに読み込まれないコマンドを検出できるようになりました。この自動検出のおかげで、約 80 個のモジュールに分散された何百ものコマンドが追加で搭載される Windows Server 8 を学習するのもずっと容易になります。

Web への参入

Windows PowerShell 3.0 では Windows PowerShell Web Access という機能が導入されます。今後数か月の間に、この機能は PWA と呼ばれるようになることが予想されます。MVP の Jan Egil Ring のブログで、この機能のすばらしい能力をいくつか確認できます。

Windows PowerShell Web Access は、本質的には、シェルのコンソール ウィンドウが Web 化された IIS ベースの Web サイトです。画面下部に、コマンドを入力するテキスト ボックスがあります。入力したコマンドは Web サーバーで実行されます。さらに、スマートフォンでも使いやすいように設計されています。通常のコンソールのようにタブ補完機能もサポートされるので、入力が少し簡単になります (個人的にも、愛用の iPhone で大歓迎の機能です)。

つまり、自分のデータセンターで、"Windows PowerShell プロキシ" のようなものをセットアップできるようになりました。コマンドを実行するために、どのデバイスからでも、いつでもこのプロキシに接続できます。この機能は IIS でホストされているため、Kerberos や CredSSP などの IIS 認証メカニズムがすべて使用可能で、HTTPS で保護することもできます。

つまり、Windows PowerShell Web Access は、制限されたアカウントや非常に強力なアカウントを使用する代わりに、自分の資格情報を偽装して自分の代わりにコマンドを実行してくれます。以前のバージョンで、この機能を使用するためには、サードパーティ製のアドオンを使うか、カスタマイズを行うしかありませんでした。

別の方法を使用して Windows PowerShell を Web に接続することも可能です。REST ベースの Web サービスとして特定の Windows PowerShell コマンドレットのセットを公開できます。このようにすると、Windows 以外のコンピューターを使用していても、Web アプリケーションやその他のアプリケーションから公開したコマンドレットを簡単に使えます。

その他の機能

Windows PowerShell 3.0 には、ワークフロー、時間/イベントによってトリガーされるスケジュールされたジョブ、特定のコマンドの簡略化された構文、より堅牢なリモート接続など、まだまだ多くの機能があります。構文は進化し続けていますが、CTP 版には、今にでも使ってみたくなる機能が数多く備わっています。ぜひ、お試しください。

Don_Jones

Don Jones は、Microsoft MVP の受賞者で、『Learn Windows PowerShell in a Month of Lunches』(Manning Publications、2011 年) の著者でもあります。この書籍は、管理者が Windows PowerShell を効率的に使用できるようにすることを目的としています。また、一般ユーザーを対象にオンサイトの Windows PowerShell トレーニングも開催しています。Don に対するお問い合わせについては、彼の Web サイト (ConcentratedTech.com、英語) を参照してください。

関連コンテンツ