今回は、困ったときには必ずお世話になる「ヘルプ」、つまりコマンドレットの個々の機能を調べる方法を紹介します。

注意:本稿では、Windows XP環境にてPowerShellの動作確認を行っていますが、ソフトウェアの利用はすべて使用者の責任においてご利用ください。
ゼロからはじめるWindows PowerShell - 環境構築編
ゼロからはじめるWindows PowerShell - コマンドレット編

Get-Help

前回は「コマンドレットとは何か」を紹介しました。PowerShellでは、いろいろなコマンドレットを駆使したり複数のコマンドレットを組み合わせたりして、さまざまな処理をします。しかしコマンドレットは129個もあるため、「こういう処理をしたいのだけれど、どのコマンドレットを使えばいいのかわからない」という問題が起こります。前回紹介した「Get-Command」は、コマンドレットの一覧を表示するコマンドレットでしたが、残念ながらコマンドレット名と構文(どんなパラメータがあるか)し かわかりません(図1)。

図1 「Get-Command」では名前と構文しかわかりません。しかも構文は右端が切れてしまいます

「そのコマンドレットの機能は覚えているが、名前を度忘れしてしまった」というときにはこれでも名前のつづりがわかるので良いのですが、機能やオプションの意味を正確に調べたいときは不十分です。

そんなときはその名もズバリ「Get-Help」コマンドレットを使って次のように入力します。

> Get-Help コマンドレット名
注意:「>」は入力行であることを意味するためのものです。入力の必要はありません。

「Get-Help」コマンドレットにパラメータとしてコマンドレット名を与えると、そのコマンドレットの「名前」「概要」「構文」「詳細説明」などを表示してくれます。普通のWindowsソフトは別にヘルプウィンドウが開きますが、PowerShellではPowerShellウインドウ内に表示されます。「概要」と「詳細説明」は日本語なのでわかりやすくなっています(図2)。

図2 「Get-Help」コマンドレットで「Get-Command」コマンドレットのヘルプを表示したところです。「名前」「概要」「構文」「詳細説明」などが表示されています

「Get-Command」コマンドレットでは1コマンドレットにつき1行しか表示に使われませんが、「Get-Help」コマンドレットは 1コマンドレットだけにたっぷりと画面を使っているので、「構文」が途中で切れることはありません。

Get-Help -detailed

その「構文」説明に注目してください(図3)。

図3 「Get-Help」コマンドレットでは「構文」は全部表示されています。しかし説明がないと各パラメータの意味まではわかりません

前回、『コマンドレットは「レット」と名前に付くけれど実は多機能だ』と述べた理由がこれです。「Get-Command」コマンドレットに限らず、このように1つのコマンドレットに多数のパラメータがあり、それぞれのパラメータごとに与える引数が決まっています。この豊富なパラメータについての知識を一度に覚えるのは無理ですが、少しずつ増やしていくとPowerShellをより上手に使えるようになっていきます。しかし「> Get-Help コマンドレット名」ではパラメータの構文だけで、説明はありません。説明も表示させるには次のように入力します。

> Get-Help コマンドレット名 -detailed

「Get-Help」コマンドレットに「-detailed」パラメータを追加します。「detailed」は「詳細な」という意味で、その意味の通り「> Get-Help コマンドレット名」より詳細なヘルプを表示します。「-detailed」パラメータを「Get-Help」のすぐ次に置いて

> Get-Help -detailed コマンドレット名

としても同じです。

「Get-Help」コマンドレットを「-detailed」パラメータ付きで実行すると、パラメータ無しで実行したときには無かった「パラメータ」の説明(図4)、さらにそのコマンドレットを使った具体的な「例」を追加して表示してくれます(図5)。この部分も日本語なのでわかりやすくなっています。

図4 「Get-Help Get-Command -detailed」を実行したところです。「Get-Command」コマンドレットの持つすべての「パラメータ」について、日本語で説明が表示されています

図5 図4の画面の続きです。「Get-Command」コマンドレットを使った具体的な「例」が日本語の解説付きでたくさん出てきます。この画面の下にも例は続いています

「> Get-Help -detailed コマンドレット名」を見ると、一見「-detailed」のパラメータ値が「コマンドレット名」のように思えますが、「-detailed」はパラメータ値の無い「スイッチパラメータ」です(図6)。

図6 「> Get-Help Get-Help -detailed」で「Get-Help」コマンドレット自身のヘルプを表示してみた「パラメータ」の説明部分です。パラメータ名の右横に <sweitchparameter>と書いてあるのが、パラメータ値の必要ないスイッチパラメータです

実は「コマンドレット名」は調べる対象を指定するパラメータ「-name」のパラメータ値ですが、「-name」パラメータが省略されています。つまり正式には

> Get-Help -name コマンドレット名 -detailed

または

> Get-Help -detailed -name コマンドレット名

と入力します。このようにパラメータ値だけを入力してパラメータ名の方は省略できるのもあります。どのパラメータ名が省略できるかはコマンドレットによって違いますので、ヘルプで調べるとよいでしょう。[ ] で囲まれているパラメータは省略可能です(図7)。

図7 図6と同じく「Get-Help」コマンドレット自身のヘルプを表示してみました。[ ] で囲まれているので「-detailed」は省略可能、「-name コマンドレット名」も省略可能、更に内側の「-name」も [ ] で囲まれているので「-name」だけを省略することも可能、という意味です

前回の例「> Get-Command Get-Date , Get-Command」も「-name」パラメータを省略したものです。

図8 全パラメータを省略して「Get-Help」コマンドレットを実行してみました。「> Get-Help Get-Help」とは違う表示になります

Get-Help -full

PowerShellスクリプトのプログラミングをするレベルになってくると『「Get-Help -detailed」のヘルプでもまだわからないことがある』かも知れません。そんなときは次のように入力します。

> Get-Help コマンドレット名 -full

「-full」はその名の通り、最も詳しいヘルプを表示するためのパラメータです。そのコマンドレットのパラメータの技術情報を含め完全なヘルプを表示します(図9)。

図9 「> Get-Help Get-Date -full」の実行結果の一部です。図6と比較してください。パラメータの説明量が増えています

「-detailed」と同じく、パラメータ値のない「スイッチパラメータ」です。またスイッチパラメータは他のスイッチパラメータと同時に指定することはできません。 まとめると「Get-Help」コマンドレットは

[簡易ビュー] > Get-Help コマンドレット名
[詳細ビュー] > Get-Help コマンドレット名 -detailed
[完全ビュー] > Get-Help コマンドレット名 -full

の順に、表示するヘルプが詳しくなっていきます。

その他のヘルプ

「Get-Help」コマンドレットにはその他にも役立つパラメータがあります。それらを紹介しましょう。

> Get-Help コマンドレット名 -examples

図10 「> Get-Help Get-Help -examples」の実行結果です。「例」だけが表示されます

「> Get-Help コマンドレット名 -detailed」(-fullも同じ)ヘルプのうち、その名の通り「例」だけを表示します(図10)。「-examples」もスイッチパラメータです。つづりは単数形ではなく複数形なので注意。

> Get-Help コマンドレット名 -parameter パラメータ名

図11 「> Get-Help Get-Help -parameter examples」の実行結果です。「-examples」パラメータの説明だけが「-full」レベルの詳しさで表示されます

「> Get-Help コマンドレット名 -full」ヘルプのうち、指定したパラメータ1つだけ説明を表示します(図11)。逆にこちらのつづりは複数形ではなく単数形なので注意。

> Help コマンドレット名

「Help」はコマンドレットではなく「関数(Function)」ですが、表示されるヘルプは「Get-Help」コマンドレットと同じです。パラメータも同じものが使えます。しかし、こちらの方が使い勝手が良いです。タイプする文字数も少ないし、一画面を超える長いヘルプは最初の一画面分で一時停止してくれます(図12)。

図12 「> Help Get-Date -detailed」の実行結果です。最初の一画面を表示したところで一時停止し、最下行に「-- More --」と表示されます

[Enter]キーを押すと1行ずつ下へスクロールし、スペースキーを押すと一画面分下へスクロールします。

> コマンドレット名 -?

「Get-Help」コマンドレット自身のヘルプには「詳細説明」のところに「> コマンドレット名 /?」でヘルプが表示できると書いてあります(図13)。

図13 「Get-Help」コマンドレット自身のヘルプには「> コマンドレット名 /?」が使えると書いてありますが・・

しかし「/?」は間違い(図14)で、正しくは「-?」(図15)です。もっとも短い入力で済むのが利点ですが、「Get-Help」コマンドレットのパラメータは使えませんので、詳細ビューや完全ビューは表示できません。

図14 「> Get-Date /?」を実行したところ。エラーになってしまいます

図15 「> コマンドレット名 -?」ならヘルプが表示されます