Windows PowerShellの紹介
Windows PowerShellは、主にシステム管理者を対象に設計されたWindows の新しいコマンドライン シェルです。PowerShell には対話型のプロンプトとスクリプト環境が備えられており、これらは別々に使用することも、組み合わせて使用することもできます。
ほとんどのシェルではテキストを受け取って返しますが、Windows PowerShell は .NET 共通言語ランタイム (CLR) および .NET Framework 上に構築されているため、.NET オブジェクトを受け取って返すことができます。
Windows PowerShell では、シェルに組み込まれているシンプルな単一機能のコマンドライン ツールであるコマンドレットの概念が導入されています。それぞれのコマンドレットは個別に使用できますが、このシンプルなツールを組み合わせて複雑なタスクを実行することでコマンドレットの威力を発揮できます。Windows PowerShell には、100 を超える数の基本的なコア コマンドレットが付属しています。これに加えて、自分でコマンドレットを作成して他のユーザーと共有することもできます。
多くのシェルと同様、Windows PowerShell でも、コンピュータ上のファイル システムへのアクセスが提供されます。加えて、Windows PowerShell プロバイダにより、ファイル システムにアクセスするのと同じくらい簡単にレジストリやデジタル署名証明書ストアなどの他のデータ ストアにアクセスできます。
Windows PowerShell では、Windows コマンドライン プログラムを実行できます。メモ帳や電卓などの、グラフィック ユーザー インターフェイスを持つ Windows プログラムは、シェル内で起動できます。さらに、Cmd.exe を使用した場合と同じように、プログラムによって生成されるテキストをキャプチャしてそのテキストをシェルで使用することもできます。
Usage for Windows PowerShell
さて、とりあえず使ってみましょう。
まずはじめに、Windows PowerShellをDownload(下記“Where we get Windows PowerShell?”項目を参照)した後にインストールしてください。
次に、“スタート” – “Windows PowerShell 1.0” – “Windows PowerShell”メニューを選び、Windows PowerShell Command Prompt Windowを起動します。
以下のように文字列”abc”を入力すると、abcが返ってきます。
PS C:\>”abc”<Enter>
abc
今までのShellのようにただの文字列が返ってきているようにも見えますが、これはStringオブジェクトです。このことを検証してみましょう。
Windows PowerShell では、パイプ処理をほぼすべての状況で使用できます。画面にはテキストが表示されますが、コマンド間で受け渡しされる情報はテキストではありません。パイプの中を流れるデータは、実際にはオブジェクトです。
Windows PowerShell ではオブジェクトが主要な役割を果たすため、オブジェクトの種類に関係なく使用できるネイティブ コマンドがいくつか用意されています。その中で最も重要なコマンドが Get-Member です。
コマンドから返されたオブジェクトを解析するための最も簡単な方法は、そのコマンドの出力をパイプで Get-Member コマンドレットに渡すことです。Get-Member コマンドレットを実行すると、オブジェクトの正式な型名と、そのすべてのメンバの一覧が表示されます。非常に多くの要素が返される場合もあります。
以下のようにコマンドを入力してみてください。
PS C:\>”abc” | get-member<Enter>
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object Clone()
CompareTo Method System.Int32 CompareTo(Object value), System.Int32 CompareTo(String strB)
…
文字列”abc”を、パイプを通してGet-Memberコマンドへ渡した結果、上記のように”TypeName: System.String”と表示されましたので、文字列”abc”はStringオブジェクトであることが確認できます。
また、Get-MemberコマンドはStringオブジェクトを返しますので、今回のようにオブジェクトのTypeNameだけ知りたい場合には以下のようなコマンドを入力することにより必要な情報だけを返すこともできます。
PS C:\>”abc” | get-member | findstr “TypeName:”<Enter>
TypeName: System.String
文字列の先頭に’$’を付けると変数になります。この変数の型定義はありませんので、どのようなObjectも代入することができます。
以下のコマンドを入力することにより、変数$abcに文字列”abc”を代入した後、$abcに代入されたオブジェクトが何かを調べてみるとStringオブジェクトであることが確認できます。
PS C:\>$abc = “abc”
PS C:\>$abc | get-member | findstr “TypeName:”<Enter>
TypeName: System.String
下記コマンドを入力するとNotepad.exeが1つ起動されます。
PS C:\>notepad<Enter>
下記コマンドを入力すると、いま起動されたNotepad.exeのプロセス情報が表示されます。
PS C:\>get-process notepad<Enter>
Handles NPM(K) PM(K) WS(K) VM(K) CPU(s) Id ProcessName
------- ------- ----- ----- ----- ------ -- -----------
65 7 2924 6892 98 0.02 2228 notepad
以下のコマンドを入力することにより、上記のコマンドが何を返してくるのかを調べることができます。
PS C:\>get-process notepad | get-member | findstr “TypeName:”<Enter>
TypeName: System.Diagnostics.Process
下記コマンドを入力すると、いま起動されたNotepad.exeのプロセスが削除されます。
PS C:\>get-process notepad | kill<Enter>
いかがでしょうか?簡単な説明ではございますが、パイプを通して文字列ではなくオブジェクトを受け渡すことの便利さを感じていただけましたら幸いです。
Where we get Windows PowerShell?
Windows PowerShellまたはWindows PowerShell関連の情報は、以下の場所から無料でDownloadして利用することができますので、どうぞ使ってみてください。
Windows PowerShell 1.0 Documentation Pack
(このドキュメント内に日本語翻訳されたものが入っております。)
Windows PowerShell Week Script Samples
Windows PowerShell Week Magazine
x86 (JPN)
WindowsXP用Windows PowerShell 1.0インストールパッケージ(ローカライズ版)
Windows Server 2003用Windows PowerShell 1.0インストールパッケージ(ローカライズ版)
x64 (JPN)
Windows XP x64 Edition用Windows PowerShell 1.0インストールパッケージ(ローカライズ版)
Windows Server 2003 x64 Edition用Windows PowerShell 1.0インストールパッケージ(ローカライズ版)
x86 (English)
Windows PowerShell 1.0 English-Language Installation Package for Windows XP
Windows PowerShell 1.0 English-Language Installation Package for Windows Server 2003
x64 (English)
Windows PowerShell 1.0 English-Language Installation Package for Windows XP x64 Edition
Windows PowerShell 1.0 English-Language Installation Package for Windows Server 2003 x64 Edition
Itanium
Windows PowerShell 1.0 English-Language Installation Package for Windows Server 2003 for Itanium-based Systems
Windows PowerShell 1.0 Multilingual User Interface Package for Windows Server 2003 for Itanium-based Systems
Windows PowerShell 1.0 Localized Installation Package for Windows Server 2003 for Itanium-based Systems
Windows Server 2003 for Itanium-based Systems用Windows PowerShell 1.0インストールパッケージ(ローカライス版)