![]() |
特集:Windows PowerShellレビュー(前編)次世代Windowsシェル「Windows PowerShell」を試すデジタルアドバンテージ 遠藤 孝信 |
|
|
| 本稿は2006年4月12日に公開された「次世代WindowsシェルMSH(コード名:Monad)を試す(前編)」の改訂版です。Windows PowerShell RC1版のリリースに合わせて、Monadシェルの正式名称は「Windows PowerShell」となりました。MSHおよびMonadという名称はもはや使用されません。 Monadベータ版からの変更点の詳細については本稿冒頭で言及しているWindows PowerShell本体のファイル「PowerShell_i386.zip」に含まれる「Windows PowerShell RC1 release notes.htm」に記載されています。 |
Windowsのシェルといえばコマンド・プロンプト(cmd.exe)であるが、その機能はUNIXなどのシェルと比較するとまったく貧弱なものである。WindowsではMMC(Microsoft Management Console)などのGUIによるシステム管理/設定のインターフェイスはリッチだが、運用や管理、自動実行が容易なスクリプトによるインターフェイスは弱い。これはアプリケーションやサービスの設定がファイル・ベースであるUNIXなどに対して、Windowsがレジストリ・ベースであることも1つの要因だろう。
またコマンド・プロンプトの機能を補うために、WSH(VBScriptおよびJScript)やWindows Services for UNIX、あるいはWMI(Windows Management Instrumentation)なども用意されているが、逆にそれらがWindowsのシステム管理を複雑化させていることも否めない。
このような問題を一掃すべく、現在Microsoftはまったく新しいシェルを開発中だ。それが、「Windows PowerShell」(以下、単にPowerShell)である*。PowerShellは.NET Frameworkをベースにして設計された次世代Windows用のシェルだ。
| * RC1版以前は「Microsoft Command Shell(開発コード名:Monad)」という名称が付けられていた。 |
多くのシェルがそうであるように、PowerShellは次の2つの機能を提供する。
- 対話式シェルによるオペレーション
- シェル・スクリプトの実行(スクリプト言語)
もちろんこれら2つは別々のものではない。PowerShellでは、シェル・スクリプトは「.ps1ファイル」*として記述して実行するが、その記述内容は対話式シェルで直接入力しても実行できるし、対話式シェルで実行する一連のコマンドを1つのシェル・スクリプトとして記述し、1つのコマンドとして実行することもできる。
| * 拡張子「.ps1」は、そのスクリプトがPowerShellバージョン1.0用のものであることを示す。 |
上述したようにPowerShellの本来の目的は、強力なシェル・スクリプトによるシステムの管理や運用であるが、本稿ではまず対話式シェルとしてPowerShellを使いながら、PowerShellの機能や仕組みを俯瞰(ふかん)してみる。
なお、PowerShellのダウンロード・ページや関連する情報ページは以下にまとめておいた(すべて英語のページ)。
Windows PowerShell本体のダウンロード:
Windows PowerShell RC1 (for .NET Framework 2.0 RTM) x86
Windows PowerShellドキュメントのダウンロード:
Windows PowerShell RC1 Documentation Pack(「Getting Started.doc」「PowerShell User Guide.doc」「TracingQuickStart.doc」が含まれる)
開発者向けのドキュメント:
MSDNのPowerShellドキュメント(「Getting Started Guide」「Programmer's Guide」「SDK」の3つの項目が含まれる)
スクリプト言語構文の早見表:
Channel9:Windows Power Shell Quick Start
FAQ集:
Channel9:Windows Power Shell Faq
サンプル・スクリプト集:
The Script Center Script Repository: Sample Windows PowerShell Scripts
目的別の使い方:
What Can I Do With Windows PowerShell?
PowerShellの実行には.NET Framework 2.0が必要となる。本稿では上記のリンク先からダウンロードできる「Windows PowerShell RC1」(公開は2006/5/5)をベースに執筆している。また、実行環境としてはWindows XP Professional SP2日本語版+.NET Framework 2.0を使用している。
エイリアスが基本となるオペレーション
さて、以下の画面はPowerShellを起動し、まずはおなじみの「dirコマンド」を実行したところである。ドライブの空き領域などは表示されないが、ディレクトリやファイルのリストは正しく表示できている。
![]() |
| PowerShellを起動しdirコマンドを実行した画面 |
UNIXではdirと同等のコマンドは「ls」であるが、PowerShellではこのコマンドも使える(以下ではPowerShellの実行結果を画面のキャプチャではなく、画面からコピーしたテキストで示す。また黄色い文字はキーボードからの入力を示している)。
|
|
| lsコマンドの実行結果 | |
| この実行結果はdirのそれとまったく同じである。 |
dirとlsの実行結果はまったく同じだが、実はこれらはどちらも既存のコマンドのエイリアス(別名)だ。これらが何のエイリアスかは「aliasコマンド」により分かる。
|
|
| aliasコマンドの実行結果 | |
| 「alias エイリアス名」で、エイリアス定義されている元のコマンドを見ることができる。dirもlsも「Get-ChildItemコマンド」の別名である。 |
このように、dirやlsは「Get-ChildItemコマンド」の別名である。
このGet-ChildItemコマンドは、「Cmdlet(コマンドレット)」と呼ばれるPowerShellの内蔵コマンドの1つの種類だ。Cmdletには基本的に「動詞-名詞」の形式のコマンド名が付けられる。また、コマンド名に含まれる単語の先頭の文字は大文字となる(これに対して、エイリアス名はすべて小文字とするのがPowerShellでのルールのようである。ただし、コマンドの実行に際してはコマンド名の大文字・小文字は区別されない)。
Cmdletは内蔵コマンドであるが、ユーザーがC#やVBでコマンドを自作して追加することもできる。Cmdletの詳細については後述する。
■エイリアス定義の一覧
現在実行中のPowerShellで定義されているエイリアスの一覧を見るには、パラメータなしでaliasコマンドを実行すればよい。
|
|
| aliasコマンドの実行結果 | |
| すべてのエイリアスの一覧が表示される。現在のPowerShellのバージョンではデフォルトで合計101個のエイリアスがあらかじめ定義されているが、これらはすべてハードコーディングされているようだ。ちなみにaliasコマンド自体は「Get-Aliasコマンド」のエイリアスだが、このエイリアスだけは特殊なようでエイリアス一覧には表示されない。 |
デフォルトで定義されているすべてのエイリアスの一覧を別ページ「alias.html」で用意した。ちなみにこのalias.htmlは次のようなコマンドで作成したものだ(ただし手動で<table>タグに「border=1」を追加している)。
|
|
| エイリアスの一覧をalias.htmlに出力 |
これは「alias」の出力から、「selectコマンド」により「name」と「definition」の項目を選択し、その結果を「sortコマンド」により「name」の項目でソートし、さらにその結果を「ConvertTo-Htmlコマンド」によりHTML化したものをファイル「alias.html」に出力している*。パイプ「|」の働きは既存のシェルとは少々異なるのだが、これについては後編で解説する。
| * 「selectコマンド」と「sortコマンド」が小文字になっていることからも分かるように、これらはCmdletである「Select-Objectコマンド」と「Sort-Objectコマンド」のエイリアスである。 |
以下に、Cmdletと基本的なWindowsおよびUNIXのコマンドへのエイリアスとの対応を抜き出してみた。
|
||||||||||||||||||||||||
| Cmdletと基本的なWindowsおよびUNIXのコマンドへのエイリアス | ||||||||||||||||||||||||
少し無理やりな感じのするものもあるが、PowerShellではエイリアスを多用することにより、既存のWindowsユーザーだけでなく、UNIX系ユーザーにもある程度使いやすいように配慮しているようだ。
ちなみにファイルのパスの区切りは、日本語版Windowsでは円マーク「\」だが、PowerShellではUNIXと同様にスラッシュ「/」も使えるようになっている。これに伴い、コマンドのパラメータ(オプション)の指定は、スラッシュではなく、UNIXと同様にハイフン「-」で指定する(例:dir -Recurse)。
■エイリアスの追加と削除
もう少しエイリアスの使い方について見ておこう。エイリアス定義の追加は「Set-Aliasコマンド」によって行う。次の例は、「Clear-Hostコマンド」を「c」にエイリアスしている。これで「c」を実行するだけで画面をクリアできる。
|
|
| Set-Aliasコマンドによるエイリアスの追加 |
エイリアスの削除は「Remove-Itemコマンド」により、次のようにして行える。
|
|
| Remove-Itemコマンドによるエイリアスの削除 |
ここで「Alias:c」は、エイリアスとして定義されている「c」を意味する。
| INDEX | ||
| [特集]Windows PowerShellレビュー | ||
| [前編]次世代Windowsシェル「Windows PowerShell」を試す | ||
| 1.エイリアスが基本となるオペレーション | ||
| 2.プロバイダとして提供される各種ドライブ | ||
| 3.Cmdlet(コマンドレット)と関数(Function) | ||
| [後編]Windows PowerShellのパワーの源は.NETオブジェクト | ||
| 1.コマンドの実行結果はオブジェクト | ||
| 2.オブジェクトが流れるパイプ | ||
| 3.クラス・ライブラリの活用 | ||
ホワイトペーパー(TechTargetジャパン)
- .NET TIPS - .NET開発のテクニックとヒント集 - (2010/3/18)
− GridViewコントロールを階層表示させるには?
− Windowsフォームのボタンに画像を表示するには?
− C#でnullチェックを簡潔に行うには? - Chapter15:LINQとクエリ式 (2010/3/17)
C# 3.0の目玉機能であるLINQについて、さまざまな記述例を交えながら徹底解説。書籍『[完全版]究極のC#プログラミング』より転載 - VBラムダ式 基礎文法最速マスター (2010/3/16)
今度はVB。ラムダ式の基礎文法を、短い説明と簡単なコードでまとめる。「ラムダ式、どう書くんだっけ?」という場合の簡易リファレンスとして活用できる - ASP.NET MVC 2がリリース (2010/3/15)
ASP.NET MVC 2の正式版(VS 2008のASP.NET 3.5向け、VS 2010には標準で含まれる予定)のリリースについてのお知らせ
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |








