Skip to main content
評価してください: 

Windows PowerShell 入門

Windows PowerShell オーナー マニュアル

これは、Windows PowerShell の使用を開始するためのガイドです。このガイドを一読して Windows PowerShell について理解すると、すぐにこのツールをプロフェッショナルのように駆使できるようになります。

トピック

Windows PowerShell 入門

数年前、Scripting Guy の息子の 1 人が運転免許を取りました。その日のうちに、Scripting Guy はこの息子を初めての運転の練習に連れ出しました。ご想像のとおり、Scripting Guy の息子は胸を躍らせ、練習場所の駐車場に到着するのが待ち遠しいようすでした。駐車した後で、Scripting Guy と息子は運転を交代しました。息子は車のエンジンを掛け、律儀にミラーをチェックし、サイド ブレーキを戻して、ギアをドライブに入れました。続いて、一瞬ためらってから、ついにアクセルを踏み込んで初めての運転に乗り出しました。

なぜためらったかといえば、理由は簡単です。車を運転したいと思うことと、実際に運転することは、まったく別だからです。Scripting Guy の息子がちょっとためらったのも無理はありません。何しろ、息子はそれまで何年もの間自転車に乗っていて、行く必要がある場所のほぼすべてに行くことができたのですから。どうして今さら変える必要があるのでしょうか。どうして確実に信頼できる交通手段を捨てて、新しいけれど好きになれなかったり難しすぎたりするかもしれない手段を選ぶ必要があるのでしょうか。確かに、車には自転車より優れた点があります。しかし、どのくらいの代償が必要になるでしょうか。

システム管理用に設計された新しいテクノロジについても、同じことが言えます。マイクロソフトの新しいコマンド コンソールおよびスクリプト言語である Windows PowerShell については、既にほとんどの方が耳にしたことがあるでしょう。既に PowerShell をダウンロードしてインストールされている方も大勢いらっしゃるでしょう (まだ PowerShell をダウンロードしてインストールしていない場合、詳細については、 Windows PowerShell のダウンロード ページを参照してください)。しかし、Scripting Guy の息子のように土壇場でためらった方もいらっしゃるでしょう。何しろ、新しいコマンド コンソールおよびスクリプト言語が欲しいと思うことと、そのコマンド コンソールおよびスクリプト言語を実際に使い始めることは、まったく別ですから。これまで何年もの間 GUI、Cmd.exe、および VBScript を使っていて、実行する必要があるシステム管理タスクのほぼすべてを実行できたのに、どうして今さら変える必要があるのでしょうか。どうして確実に信頼できるシステム管理手段を捨てて、新しいけれど好きになれなかったり難しすぎたりするかもしれない手段を選ぶ必要があるのでしょうか。

このような質問はどれも良い質問であり、どれももっともな心配です。正直なところ、この入門記事では、すべての疑問にきちんと答えることはできません。ただし、これだけは言っておきます。運転免許を取ったからといって、二度と自転車に乗れなくなるわけではありません。交通手段は "ゼロサム" の問題ではありません。つまり、運転免許を持っているからといって、自転車、バス、またはオートバイに乗れなくなるわけではありません (もちろん、歩けなくなるわけでもありません)。車を運転するよりも自転車に乗りたいなら、それでかまいません。自転車に乗りたいときは自転車に乗り、車を運転したいときは運転してください。自転車に乗る方が楽しいことがわかった場合も、結構なことです。普段は自転車に乗って、どうしても必要なときにだけ車を運転してください。

Windows PowerShell についても、同じように考えればよいのです。Windows PowerShell を習得するということは、GUI を使うのをやめたり、VBScript スクリプトをすべて捨て去ったりしなくてはならないということなのでしょうか。もちろんそんなことはありません。多くの人が、Windows PowerShell は VBScript などの管理テクノロジに代わるものだと考えています。実際はそうではありません。どちらかといえば、PowerShell は VBScript などの管理テクノロジを "補う" ものです。そのうち、「PowerShell のことが本当に気に入ったよ。あらゆることに PowerShell を使うことにするぞ」と結論付ける人も出てくるでしょう。結構なことです。PowerShell を満喫し、Scripting Guys がお役に立てることがあればお知らせください。また、「うーん、PowerShell には気に入っている機能もあるけれど、VBScript スクリプトにはとても力を入れてきたんだ。VBScript を使い続けたいなあ」と考える人もいるでしょう。なんと、これも結構なことです。ことわざにもあるように、壊れていないのにわざわざ修理するものではありません。VBScript で問題がないなら、VBScript を使い続けてください。

では、なぜわざわざ Windows PowerShell について学ぶのでしょうか。これにはいくつかの理由があります。1 つには、運転免許の取得と似ていて、必要になることはないかもしれませんが、念のため、持っておけば安心です。確かに、今のところ PowerShell はたいして重要ではないように思えるかもしれません。平均的なシステム管理者にとって、Windows PowerShell で実行できる作業のほとんどすべては、VBScript で既に実行できている作業です。しかし、その一方で例外もあります。たとえば、Microsoft Exchange Server 2007 の管理を自動化する場合は、PowerShell を使う必要があります。時間がたてば、このような "例外" が規則になる (たまにではなく頻繁に起こるようになる) 可能性があります。PowerShell には引き続き機能拡張と強化が行われる予定ですが (現在、Version 2.0 を開発中です)、VBScript はそうではないからです。確かに、今は PowerShell は必要ないかもしれませんが、近いうちに状況が変化する可能性もあります。ですから、じっくりご自分のペースで学習できる今のうちに、PowerShell について学習してみてはいかがでしょうか。

もちろん、それが『Windows PowerShell 所有者向けマニュアル』を執筆した理由です。このガイドは、Windows PowerShell についての丁寧で気軽な入門書となることを目的としています。ほとんどの所有者向けマニュアルと同様に、このガイドでは、アクセルを思い切り踏み込んで新しいコマンド コンソールおよびスクリプト言語を "乗りこなす" 方法について説明します。また、今後、新しいコマンド コンソールおよびスクリプト言語の手入れやメンテナンスを行う方法についても説明するつもりです。心配は要りません。標準装備だけでなく、付属品やカスタマイズについても説明します。皆さんの中に、Windows PowerShell をインストールはしたものの、それ以来ずっと「さて、これからどうしよう」と考えて何もしてこなかった方がいらっしゃるのはわかっています。そのような方も、くよくよするのはもう終わりです。このガイドはそんな方にぴったりですから。

: 良くも悪くも、この記事 (「Windows PowerShell 入門」) では、Windows PowerShell の少し大雑把な概要だけを説明します。今後の記事では、PowerShell と PowerShell で実行できる処理についてさらに掘り下げていく予定です。それまで待てない方は、Scripting Guys による 5 本の  Windows PowerShell に関する Web キャスト (英語) をご覧になることをお勧めします。


ページのトップへ

Windows PowerShell の起動

Windows PowerShell をインストールすると、セットアップ プログラムによって [スタート] メニューのショートカットも作成されます。Windows XP と Windows Server 2003 の場合、このショートカットにアクセスするには、[スタート] ボタンをクリックし、[すべてのプログラム]、[Windows PowerShell 1.0] の順にポイントして、[Windows PowerShell] をクリックします。[スタート] メニューのショートカットが作成されなかった場合はどうすればよいのでしょうか。既定では、PowerShell は%windir%\System32\WindowsPowerShell\v1.0 (C:\Windows\System32\WindowsPowerShell\v1.0 など) フォルダーにインストールされます。このフォルダーを開き、[PowerShell.exe] のアイコンをダブルクリックすれば PowerShell が起動します。

Windows PowerShell が無事に起動すると、次のような画面が表示されます。

Windows PowerShell 起動後の画面

「おやおや、昔ながらの MS-DOS コマンド ウィンドウによく似ているぞ」とお考えの方のために申し上げると、似ているのには理由があります。PowerShell では、実際にその昔ながらの MS-DOS コマンド シェルが利用されているのです。これには少なくとも 1 つのメリットがあります。皆さんはおそらく従来の MS-DOS コマンド シェルを何度も使用したことがあるでしょうから、PowerShell の使い方についても既にかなりわかっていることになります。コマンドを入力して Enter キーを押せばいいということです。たとえば、使用しているコンピューターの IP アドレスを確認する必要がある場合は、「ipconfig」と入力して Enter キーを押せば、次のような出力結果が得られます。

PS C:\Scripts> ipconfig

Windows IP Configuration


Ethernet adapter ローカル エリア接続:

        Media State . . . . . . . . . . . : Media disconnected

Ethernet adapter Wireless Network Connection: (Ethernet adapter ワイヤレス ネットワーク接続:)

        Connection-specific DNS Suffix  . : fabrikam.com
        IP Address. . . . . . . . . . . . : 192.168.120.17
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.120.1

上記の例からわかるように、すべてのコマンド ライン実行可能ファイルを PowerShell コンソールから実行できます。VBScript スクリプトやバッチ ファイルも PowerShell コンソールから実行できます。C:\Scripts\Test.vbs というスクリプトを Windows PowerShell から実行する場合は、次のようにします。

PS C:\Scripts> test.vbs

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

This message was generated by Test.vbs.

: コンソール自体について詳しく知りたい場合は、所有者向けマニュアルの  PowerShell コンソールのカスタマイズと  Windows PowerShell のショートカット キーに関するセクションを参照してください。

それから、 タブ展開に関する記事を読むのもお忘れなく。

また、皆さんのお気に入りとなったコンソール コマンドの多く (cd や cls、さらには ls のような Unix コマンドなど) には、対応する Windows PowerShell コマンドがあります。いくつか細かい例外はありますが、これらのコマンドは皆さんの予想どおりに動作します。C:\Scripts フォルダーから C:\Windows フォルダーに切り替える場合は、次のように cd コマンドを使用します。

PS C:\scripts> cd c:\windows
PS C:\WINDOWS>

次のようなコマンドでもかまいません。

PS C:\scripts> chdir c:\windows
PS C:\WINDOWS>

一般に、これらのコンソール コマンドは Windows PowerShell コマンドレットの "エイリアス" になっています。使用できるエイリアスすべての一覧を確認するには、PowerShell コマンド プロンプトで次のコマンドを入力して Enter キーを押すだけです。

Get-Alias

ご参考までにお知らせしておきますが、通常、PowerShell コマンドでは大文字と小文字が区別されません。コマンド プロンプトでは次のように入力することもできます。

get-alias

次のように入力することさえ可能です。

geT-ALIaS

ページのトップへ

コマンドレットとは

「コマンドレットとは何ですか」とは、良い質問ですね。コマンドレットは Windows PowerShell コマンドであり、コマンド ライン ツールにほぼ相当します (ただし、この場合、コマンドレットは PowerShell 専用です。PowerShell コマンドレットを実行するには、Windows PowerShell を実行している必要があります)。コマンド ライン ツールがなければ、Cmd.exe はあまり役に立ちません。コンソールには組み込みのコマンドがいくつかありますが (cd、cls など)、高度なタスクのほとんど (および便利なタスクのほとんど) は Ipconfig.exe や Ping.exe などのコマンド ライン ツールによって実行されます。Windows PowerShell の機能も同様です。PowerShell には組み込みのコマンドがいくつかありますが、高度な処理のほとんどはコマンドレットによって実行されます。

実際、cd などの PowerShell コマンドでさえコマンドレットのエイリアスであり、エイリアスはコマンドレットの "ニックネーム" にすぎません。たとえばこの場合、cd はSet-Location コマンドレットを参照する別の方法にすぎません。C:\Windows フォルダーに切り替える場合は、cd エイリアスを使用する代わりに、次のように Set-Location コマンドレットを呼び出すこともできます。

PS C:\scripts> Set-Location C:\Windows
PS C:\WINDOWS>

もちろん、Windows PowerShell には、単にあるフォルダーから別のフォルダーに切り替えるという処理よりもはるかに興味深い処理を実行するコマンドレットが用意されています。たとえば、次のコマンドを入力して結果をご確認ください。

PS C:\WINDOWS> Get-Process

次のような情報が返されるはずです。これは、現在コンピューターで実行中のすべてのプロセスに関する情報です。

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    103       5     1296       3676    32     0.05   2964 alg
    264       7     4872      10244    70     0.84    920 asghost
    101       4     3080       4692    38     1.77   2124 atiptaxx
    168       7     5584       6968    54     0.30   2896 BTStackServer
    143       5     3712       6640    52     0.30   2776 BTTray
    752      13    11048      20256    77     2.81    452 CcmExec
    672       7     2796       6864    68    18.80   1184 csrss
    139       6     1204       4544    38     0.70   2760 ctfmon

とても便利ですね。また、C:\Scripts フォルダーのサブフォルダー内に存在するすべてのファイルやフォルダーも含め、C:\Scripts フォルダー内に存在するすべてのファイルとフォルダーを一覧表示する場合は、次のコマンドを入力するだけです。

Get-ChildItem C:\Scripts -recurse

ここでは、Get-ChildItem コマンドレットを呼び出しているだけです。Get-ChildItem コマンドレットに C:\Scripts と -recurse という 2 つのパラメーターを渡していることにお気付きの方もいらっしゃるでしょう。ご想像のとおり、C:\Scripts は処理対象のフォルダーの名前です。また、フォルダーのパスが二重引用符で囲まれていないことにお気付きの方もいらっしゃるでしょう。PowerShell では、これはほぼ常に通用し、パラメーターに空白スペースが含まれていない限り、パラメーターを引用符で囲む必要はありません。たとえば、C:\Documents and Settings\Ken Myer フォルダー内に存在するファイルとフォルダーを一覧表示するとします。このパスには空白スペースが含まれているので、次のようにパス名を二重引用符で囲む必要があります。

Get-ChildItem "C:\Documents and Settings\Ken Myer"

元のコマンドの 2 つ目のパラメーター (-recurse) は、親フォルダーから再帰的に情報を取得するよう Get-ChildItem に指示します。つまり、Get-ChildItem に、C:\Scripts フォルダーのすべてのサブフォルダーから (また、このようなサブフォルダー以下のサブフォルダーからも) 情報を取得するよう指示するものです。Windows PowerShell 1.0 には 129 種類のコマンドレットが付属し、ファイルやフォルダーを操作できるコマンドレット、テキスト ファイルの読み取りやテキスト ファイルへの書き込みを行うことができるコマンドレット、イベント ログを管理できるコマンドレット、COM オブジェクトや .NET Framework オブジェクトのインスタンスを作成できるコマンドレットなどが含まれています。

ここまでの説明に問題はありませんが、Scripting Guy の息子が実際に運転方法を覚えたのは、ハンドルを握って運転し始めてからでした。何かについての資料を読むことは、実際に何かをすることの代わりにはなりません。これは Windows PowerShell の場合も同じです。コマンドレットについての資料を好きなだけ読むことはできますが、ハンドルを握って Windows PowerShell を実際に使い始めるまでは、コマンドレットやコマンドレットで実行できる処理について感覚的にうまく理解することはできません。Scripting Guys は助手席に座って的確なアドバイス (「減速してください。カーブに注意してください。そんな急ブレーキだけはもう絶対にやめてください。」など) を差し上げることはできませんが、その次に役に立つことならできます。つまり、Windows PowerShell を使用した標準的なシステム管理シナリオについての順を追ったガイダンスを提供することはできます。おもしろそうだと思われた方は (当然思われたでしょうが)、 Windows PowerShell のバーチャル ラボ (英語) をご覧ください。

おまけのヒント

時間を節約できるちょっとしたヒントをご紹介しましょう。パラメーターをコマンドレットと組み合わせて使用する場合は、パラメーター名全体ではなく、そのパラメーターを他のパラメーターと区別するのに必要な分だけ入力すれば問題ありません。これはどういうことかというと、たとえば、Get-ChildItem コマンドレットのパラメーターで、r という文字で始まるものは 1 つ (recurse) しかありません。つまり、次のコマンドを使用すると -recurse パラメーターを指定できるということです。

Get-ChildItem C:\Scripts -r

ここで仮に、Get-ChildItem コマンドレットには r という文字で始まるパラメーターがもう 1 つあるとしましょう。この架空のパラメーターを -readonly とします。その場合、次のコマンドを使用すると -recurse パラメーターを指定できます。

Get-ChildItem C:\Scripts -rec

どうして「-rec」と入力する必要があったのでしょうか。理由は簡単です。以下に示すように、-recurse と -readonly を区別するには 3 文字を入力する必要があったためです。

  • -recurse

  • -readonly

これでも入力する文字数が多すぎる、ですって。gci エイリアス (言うまでもなく、Get-ChildItem コマンドレットのエイリアス) を使用すれば、次のように入力するだけで、C:\Scripts フォルダー内のすべてのファイルとフォルダーの再帰的な一覧を取得できます。

gci C:\Scripts -r

すばらしいですね。

ページのトップへ

追加の質問

ええ、そうですね。他にどのようなコマンドレットを使用でるか、そしてそれらのコマンドレットでどのような処理ができるのかを皆さんが知りたがっていることはわかっています。正直なところ、この記事ではそのような質問には回答できません。ですが、皆さんがこのような質問を自力で解決するのに役立つ、すぐに利用可能なリソースをご紹介することはできます。

まず、Windows PowerShell は非常におしゃべりで社交的なテクノロジです。PowerShell にたずねるだけで、喜んで自己紹介してくれます。たとえば、使用できるすべての PowerShell エイリアスの一覧を返す Get-Alias コマンドレットを覚えていらっしゃるでしょうか。これによく似た、Get-Command というコマンドレットもあります。このコマンドレットは、使用できるすべての PowerShell コマンドレットの一覧を返します。Get-Command コマンドレットを実行した結果の一部をご紹介しましょう。

PS C:\scripts> Get-Command

CommandType     Name                                                Definition
-----------     ----                                                ----------
Cmdlet          Add-Content                                         Add-Content [-Path] <String[]> [-Value] <Object[...
Cmdlet          Add-History                                         Add-History [[-InputObject] <PSObject[]>] [-Pass...
Cmdlet          Add-Member                                          Add-Member [-MemberType] <PSMemberTypes> [-Name]...
Cmdlet          Add-PSSnapin                                        Add-PSSnapin [-Name] <String[]> [-PassThru] [-Ve...
Cmdlet          Clear-Content                                       Clear-Content [-Path] <String[]> [-Filter <Strin...
Cmdlet          Clear-Item                                          Clear-Item [-Path] <String[]> [-Force] [-Filter ...
Cmdlet          Clear-ItemProperty                                  Clear-ItemProperty [-Path] <String[]> [-Name] <S...
ちょっと寄り道

各行の終わりにある 3 つのドット (...) が表しているのは、各コマンドレットの情報は他にもあるが、画面に表示しきれないということです。表示しきれない情報もすべて画面に表示する方法はあるのか、ですって。もちろんあります。次のようにして、表形式ではなく一覧形式で情報を表示すればよいだけです。

PS C:\scripts> Get-Command | Format-List

今度は、次のように各コマンドレットの情報がすべて返されます。

Name             : Add-Content
CommandType      : Cmdlet
Definition       : Add-Content [-Path] <String[]> [-Value] <Object[]> [-PassThru] [-Filter <String>] [-Include <String[
                   ]>] [-Exclude <String[]>] [-Force] [-Credential <PSCredential>] [-Verbose] [-Debug] [-ErrorAction <A
                   ctionPreference>] [-ErrorVariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>] [-WhatIf] [
                   -Confirm] [-Encoding <FileSystemCmdletProviderEncoding>]
                   Add-Content [-LiteralPath] <String[]> [-Value] <Object[]> [-PassThru] [-Filter <String>] [-Include <
                   String[]>] [-Exclude <String[]>] [-Force] [-Credential <PSCredential>] [-Verbose] [-Debug] [-ErrorAc
                   tion <ActionPreference>] [-ErrorVariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>] [-Wh
                   atIf] [-Confirm] [-Encoding <FileSystemCmdletProviderEncoding>]

Path             :
AssemblyInfo     :
DLL              : C:\WINDOWS\assembly\GAC_MSIL\Microsoft.PowerShell.Commands.Management\1.0.0.0__31bf3856ad364e35\Micr
                   osoft.PowerShell.Commands.Management.dll
HelpFile         : Microsoft.PowerShell.Commands.Management.dll-Help.xml
ParameterSets    : {Path, LiteralPath}
ImplementingType : Microsoft.PowerShell.Commands.AddContentCommand
Verb             : Add
Noun             : Content

どのようにして情報を一覧形式にしたのでしょうか。実は、Format-List コマンドレットは、渡された情報を受け取って、その情報を一覧形式 (プロパティ値が表の列としてではなく別々の行として表示される形式) で出力するコマンドレットです。では、コマンドの真ん中にある変わった記号 (|) は何でしょうか。この変わった記号はパイプ区切り記号と呼ばれ、Get-Command コマンドレットから返された情報を "パイプ処理" して、さらに処理するために Format-List コマンドレットに渡すことを表します。どういう意味なのかさっぱりわからないとしても、問題ありません。そのような方のために、 パイプラインとパイプ処理についての章をご用意しました。

寄り道を終えて再び本来の記事へ

Get-Command コマンドレットはとても便利です。何しろ、使用できるコマンドレットの明確な一覧を確認できるのです。しかし、こうしたコマンドレットの使い方については、Get-Command コマンドレットではわかりません。これについては、PowerShell の組み込みのヘルプ システムにアクセスする必要があります

ページのトップへ

PowerShell のヘルプの活用

Windows PowerShell の非常に優れた特色の 1 つは、充実したヘルプ システムが用意され、このヘルプ システムが Windows PowerShell 自体に組み込まれていることです。コマンドレットの名前がわかれば、次のように Get-Help コマンドレットを呼び出すと、そのコマンドレットの詳細情報 (および使い方) を確認できます。

Get-Help Format-List

待ってください。まだこのコマンドを入力しないでください。前述のように、PowerShell には充実したヘルプ システムが用意されています。ただし、多少複雑なヘルプ システムも用意されています。「Get-Help Format-List」と入力すると、確かに Format-List コマンドレットに関する詳細情報が表示されます。しかし、表示される情報の大部分は、構文の図とコマンドレットに関する簡単な説明です。コマンド例や使用できるパラメーターに関する詳しい説明など、その他の拡張情報を表示するには、次のように -full パラメーターを追加する必要があります。

Get-Help Format-List -full

また、例を表示するだけでよい場合は、次のように -examples パラメーターを追加します。

Get-Help Format-List -examples

待ってください。これらのコマンドもまだ入力しないでください。PowerShell に用意されている実際のヘルプ トピックは本当に優れていますが、PowerShell のヘルプ エンジンにはまだ少し改良の余地があります。たとえば、Get-Help コマンドレットを使用してヘルプ トピックを開くと、トピック全体が表示された後、カーソルがそのトピックの末尾に置かれたままとなります。情報を実際に最初から最後まで読むには、上にスクロールして 1 行目を探す必要があります。次のように Get-Help コマンドレットの結果を more コマンドにパイプすることで、この問題に (ある程度) 対処することができます。このコマンドを使用すると、情報を 1 ページ (1 画面) ずつ表示できます。

Get-Help Format-List -full | more

これは役に立ちますが、次のページに進むことはできても前のページに戻ることはできません (お試しいただければ、どういうことかおわかりいただけるでしょう)。

もう 1 つの問題は、もう少し対処が難しい問題です。良くも悪くも (たいていは悪い方ですが)、PowerShell のヘルプ エンジンでは、行末で単語の区切りがあまり適切に考慮されません。たとえば、次のように表示されます。

DETAILED DESCRIPTION
    The Get-Process cmdlet retrieves a process object for each process. Without parameters, "Get-Process" gets all of t
    he processes on the computer, as though you typed "Get-Process *". You can also identify a particular process by pr
    ocess name or process ID (PID), or pass a process object through the pipeline to Get-Process. For Get-Process, the
    default method is by process name. For Stop-Process, the default method is by process ID.

"DETAILED DESCRIPTION" という見出しの下の 1 行目に注目してください。ご覧のとおり、the という単語は行内に収まりきっていません。しかし、単語全体が次の行に移動されるのではなく、1 行目の末尾に t が表示され、2 行目の先頭に残りの部分 (he) が表示されています。このせいでヘルプは少し読みづらくなっているでしょうか。そう言って差し支えないと思います。

では、この右端での折り返しに関する問題を回避する方法はあるのでしょうか。私たちの知る限りでは、ありません。そういうわけで、Scripting Guys は Windows PowerShell グラフィカル ヘルプ ファイル (英語) を作成しました。これは、Windows PowerShell で表示されるものと同じヘルプです (さらに、ご参考までに、 VBScript から Windows PowerShell への変換ガイド (英語) の内容も載せています)。これは Windows PowerShell の組み込みのヘルプを通常の .chm ファイルとしてまとめたものなので、少し読みやすくなり、全文検索機能も使用できるようになっています。次のようなコマンドを入力するだけで、コマンド プロンプトからこのグラフィカル ヘルプにアクセスすることもできます。

Get-GUIHelp Format-List

-full や -examples などのパラメーターも不要です。グラフィカル ヘルプ ファイルの場合、常にそのトピックに関するすべての情報が表示されます。

ですが、皆さんのおっしゃるとおりです。実行したい処理が既にわかっているのであれば、ヘルプは非常に便利です (たとえば、Get-ChildItem を使用して C:\Scripts フォルダー内に存在するすべてのファイルとフォルダーを一覧表示する必要があることはわかっていても、これらのファイルを再帰的に検索するためのパラメーターを思い出せない場合など)。しかし、そもそも Windows PowerShell で実行できる処理がわからない場合はどうでしょうか。ヘルプ ファイルを最初から最後まで読むしかないのでしょうか。

お望みであればそれでかまいません。そうでなければ、スクリプト センターの「 Windows PowerShell コマンドレットのタスク別ガイド」をお読みになることをお勧めします。このガイドには、「 データをテキスト ファイルに保存」や「 ファイルまたはフォルダーのコピー」など、タスク別の記事が多数用意されています。お勧めする方法の 1 つは、これらの記事にざっと目を通してから、ヘルプ ファイルを参照して、目的のタスクを実行するコマンドレットについての詳細情報を確認することです。

: そうそう、グラフィカル ヘルプ ファイルには、タスク別ガイドの対応する記事へのリンクが載っています。たとえば、グラフィカル ヘルプ ファイルで Set-Content コマンドレットについての情報を参照すると、「データをテキスト ファイルに保存」という記事へのリンクを確認できます。


ページのトップへ

スクリプトもお忘れなく

まさか皆さんは、私たちがスクリプトとスクリプトの記述について忘れているとお考えではありませんね (だてに "Scripting" Guys と呼ばれているわけではありません)。Windows PowerShell には、スクリプトを記述して実行するための非常に優れた強力な環境が備わっています。しかし、PowerShell で実際にスクリプトを実行するのは (少なくとも慣れるまでは)、少し厄介です。そのため、この所有者向けマニュアルには Windows PowerShell でスクリプトを実行する方法についての 専用の記事を用意しました。

スクリプトの記述に関する情報のほとんどは、そちらの記事でご紹介することにします。Windows PowerShell スクリプトを記述してみたくてたまらない場合は、 PowerShell スクリプトの記述に関する Web キャスト (英語) をご覧になることもお勧めします。この記事では、PowerShell スクリプトは任意のテキスト エディターで記述できるということだけお伝えしておきます。たとえば、メモ帳には Windows PowerShell スクリプトを記述するために必要なすべての機能が備わっています。ファイルをプレーンテキスト ファイルとして保存し、そのファイルに .ps1 というファイル拡張子を設定すれば、それで作業は完了です。

: 確かに、他にも少しだけ必要な作業がありますね。スクリプト コードを記述するという作業です。これも、 PowerShell スクリプトの記述に関する Web キャスト (英語) をご覧になるようお勧めする理由です。

PowerShell のすばらしい点をもう 1 つご紹介しましょう。この記事では一貫して、PowerShell を "コマンド コンソールおよびスクリプト言語" と呼んできました。これにはもっともな理由があります。PowerShell コマンドは、コマンド プロンプトから実行することも、.ps1 ファイルとして保存してスクリプトとして実行することもできます。さらにすばらしいことに、この 2 種類のコマンドには同一のものを使用できる場合があります (通常は使用できます)。つまり、コマンド プロンプトで入力するコマンドをそのままスクリプトで使用することも、その逆も可能だということです。

たとえば、次のような簡単な 2 行の PowerShell スクリプトについて考えてみましょう。

$a = Get-ChildItem C:\Scripts
$a

このスクリプトの 1 行目では、Get-ChildItem を使用して、C:\Scripts フォルダーに格納されているすべてのファイルとフォルダーのコレクションを取得しています。このコレクションは $a 変数に格納されます。2 行目では、$a の値を表示しているだけです。

それほどおもしろくありませんか。その点については反論しづらいですね。しかし、ここからはおもしろくなります。この 2 つのコマンドは、.ps1 ファイルとして保存してからスクリプトとして実行することも、コマンド プロンプトで 1 つずつ順に入力することもできます。コマンド プロンプトでこの 2 つのコマンドを入力すると、どうなるでしょうか。そうです。1 つ目のコマンドでは、C:\Scripts フォルダーに格納されているすべてのファイルとフォルダーのコレクションを取得して、取得した情報を $a という名前の変数に格納します。2 つ目のコマンドでは、$a の値をエコー バックします。コマンド プロンプトでの入力とスクリプトの記述のどちらを選ぶかについては、ある意味、たいした問題ではありません。

言うまでもなく、所有者向けマニュアルでは、スクリプトとスクリプトの記述に関する情報を今後さらに (大幅に) 充実させる予定です。

ページのトップへ

今後の学習

お勧めの学習方法が 2 つあります。1 つ目は、Windows PowerShell を紹介する 5 本のプレゼンテーションで構成された  PowerShell Week の Web キャスト (英語) を見ることです。5 本の Web キャストは次のとおりです。

  • And Now for Something Completely Different: Introducing Windows PowerShell

  • One Cmdlet, Two Cmdlet, Three Cmdlet, Four: An Introduction to Windows PowerShell Commands

  • Object, Objects Everywhere: Working with Objects in Windows PowerShell

  • New Kid on the Scriptblock: Writing Scripts with Windows PowerShell

  • Amazing but True: Things You Never Dreamed You Could Do with Windows PowerShell

2 つ目は、 バーチャル ラボ (英語) を利用して、PowerShell を簡単に "点検" してみることです。資料を読むよりも実際に試してみる方がいつだってお勧めです (お気付きかもしれませんが、皆さんがこの長い記事を読み終えるまで、私たちはこのことをお伝えしませんでした)。

また、スクリプト センターの  PowerShell に関するセクションに定期的にアクセスしてください。このセクションには、所有者向けマニュアルの追加記事など、どんどんコンテンツを追加していく予定です。

ページのトップへ