第 2 章 - ヘルプ システム

PowerShell の熟練度を評価するために設計されたテストで、IT プロフェッショナルの 2 つのグループ (初心者とエキスパート) が、まずはコンピューターにアクセスできない状態で筆記テストを受けました。 驚いたことに、テスト スコアは両方のグループで同等のスキルを示しました。 その後、最初のテストとまったく同じテストが実施されましたが、1 つ重要な違いがありました。それは、参加者は PowerShell を搭載したオフライン コンピューターにアクセスできるということです。 その結果、今回は 2 つのグループ間に大きなスキルの差があることが明らかになりました。

2 つの評価間で観察されたこれらの結果にはどのような要因が寄与したのでしょうか?

エキスパートは必ずしも答えを知っているわけではありません。しかし、答えを導き出す手段がわかっているのです。

2 つのテストで観察された結果に違いが出た原因は、エキスパートが何千もの PowerShell コマンドを記憶しているわけではないからです。 代わりに、PowerShell 内のヘルプ システムを使用する能力が優れているため、必要に応じてコマンドを発見し、使い方を学習できます。

ヘルプ システムを使いこなすことが PowerShell で成功するための鍵となります。

PowerShell の作成者である Jeffrey Snover が同様の話を何度も語っているのを聞いたことがあります。

Discoverability (探索可能性)

PowerShell のコンパイルされたコマンドは cmdlet と呼ばれます ("CMD レット" ではなく "コマンドレット" と発音します)。 コマンドレットの名前付け規則は、単数形の動詞-名詞という形式に従っており、簡単に見つけられるようになっています。 たとえば、Get-Process は実行中のプロセスを確認するコマンドレットであり、Get-Service はサービスのリストを取得するコマンドレットです。 関数 (スクリプト コマンドレットとも呼ばれます) とエイリアスは、他の種類の PowerShell コマンドです (このドキュメントの後半で説明しています)。 "PowerShell コマンド" という用語は、コマンドレット、関数、エイリアスなど、PowerShell のあらゆるコマンドを表します。

ping.exeipconfig.exe などの従来のコマンドライン プログラムなど、オペレーティング システムのネイティブ コマンドを PowerShell から実行することもできます。

PowerShell の 3 つのコア コマンドレット

  • Get-Help
  • Get-Command
  • Get-Member (第 3 章で説明)

よく聞かれるのが、"PowerShell のコマンドをどうやって調べるのですか?" ということです。 Get-HelpGet-Command はどちらも、PowerShell でコマンドを見つけて理解するための貴重なリソースです。

Get-Help

PowerShell のヘルプ システムでまず知っておく必要があるのが、Get-Help コマンドレットを使用する方法です。

Get-Help は、コマンドを見つけた後に、そのコマンドの使用方法を確認するうえで役立つ多目的コマンドです。 Get-Help を使ってコマンドを検索することもできますが、Get-Command とは異なり、このコマンドと比べるとより間接的です。

Get-Help を使ってコマンドを検索する場合、、まず入力に基づいてコマンド名のワイルドカード検索が実行されます。 一致するものが見つからない場合は、システム上のすべての PowerShell ヘルプ記事に対して包括的なフルテキスト検索が実行されます。 それでも結果が見つからない場合は、エラーが返されます。

Get-Help を使用して、Get-Help コマンドレットのヘルプ コンテンツを表示する方法を次に示します。

Get-Help -Name Get-Help

PowerShell バージョン 3.0 以降、ヘルプ コンテンツはオペレーティング システムにプリインストールされません。 Get-Help を初めて実行すると、PowerShell ヘルプ ファイルをコンピューターにダウンロードするかどうかを確認するメッセージが表示されます。

Y を押して [はい] と答えると、Update-Help コマンドレットが実行され、ヘルプ コンテンツがダウンロードされます。

Do you want to run Update-Help?
The Update-Help cmdlet downloads the most current Help files for Windows
PowerShell modules, and installs them on your computer. For more information
about the Update-Help cmdlet, see
https:/go.microsoft.com/fwlink/?LinkId=210614.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

このメッセージが表示されない場合は、管理者として実行されている管理者特権の PowerShell セッションから Update-Help を実行します。

更新が完了すると、ヘルプ記事が表示されます。

ここでコンピューターでこの例を実行し、出力を確認して、ヘルプ システムがどのように情報を整理しているかを確認します。

  • 名前
  • 概要
  • SYNTAX
  • 説明
  • 関連リンク
  • REMARKS

出力を確認する際には、ヘルプ記事にはしばしば大量の情報が含まれており、既定で表示されるのはヘルプ記事全体ではないことに留意してください。

パラメーター

PowerShell でコマンドを実行するときに、コマンドに追加情報または入力を指定する必要がある場合があります。 パラメーターを使用すると、コマンドの動作を変更するオプションと引数を指定できます。 各ヘルプ記事の「構文」セクションでは、コマンドに使用可能なパラメーターの概要が説明されています。

Get-Help には、ヘルプ記事全体またはコマンドのサブセットを返すために指定できるいくつかのパラメーターがあります。 Get-Help で使用可能なすべてのパラメーターを表示するには、次の例に示すように、ヘルプ記事の「構文」セクションを参照してください。

...
SYNTAX
    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Full]
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] -Detailed
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] -Examples
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] -Online [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] -Parameter <System.String> [-Path <System.String>]
    [-Role <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] [-Path <System.String>] [-Role <System.String[]>]
    -ShowWindow [<CommonParameters>]
...

パラメーター セット

Get-Help の「構文」セクションを確認すると、情報が 6 回繰り返されていることがわかります。 これらの各ブロックは個々のパラメーター セットであり、Get-Help コマンドレットには 6 つの異なるパラメーター セットがあることを示しています。 詳しく見ると、各パラメーター セットには少なくとも 1 つの固有のパラメーターが含まれており、他のパラメーター セットと異なることがわかります。

パラメーター セットを同時に使用することはできません。 1 つのパラメーター セットにのみ存在する一意のパラメーターを指定すると、PowerShell ではそのパラメーター セット内に含まれるパラメーターのみを使用するように制限されます。 たとえば、Get-HelpFull パラメーターと Detailed パラメーターは異なるパラメーター セットに属しているため、一緒に使用することはできません。

次の各パラメーターは、Get-Help コマンドレットの異なるパラメーター セットに属します。

  • 完全
  • 詳細
  • オンライン
  • パラメーター
  • ShowWindow

コマンド構文

PowerShell を初めて使用する場合は、「構文」セクションの角かっこと山かっこで特徴付けられた難解な情報を理解するのが難しく感じられるかもしれません。 ただし、PowerShell を使いこなすには、これらの構文要素を学習することが不可欠です。 PowerShell ヘルプ システムを頻繁に使用するほど、すべてのニュアンスを覚えやすくなります。

Get-EventLog コマンドレットの構文を表示します。

Get-Help Get-EventLog

次の出力は、ヘルプ記事の関連部分を示しています。

...
SYNTAX
    Get-EventLog [-LogName] <System.String> [[-InstanceId]
    <System.Int64[]>] [-After <System.DateTime>] [-AsBaseObject] [-Before
    <System.DateTime>] [-ComputerName <System.String[]>] [-EntryType {Error
    | Information | FailureAudit | SuccessAudit | Warning}] [-Index
    <System.Int32[]>] [-Message <System.String>] [-Newest <System.Int32>]
    [-Source <System.String[]>] [-UserName <System.String[]>]
    [<CommonParameters>]

    Get-EventLog [-AsString] [-ComputerName <System.String[]>] [-List]
    [<CommonParameters>]
...

構文情報には、角かっこ ([]) のペアが含まれています。 これらの角かっこは、使い方によって 2 つの異なる目的を果たしています。

  • 角かっこで囲まれた要素は省略可能です。
  • <string[]> など、データ型の後に続く空の角かっこは、パラメーターが配列またはコレクション オブジェクトとして渡される複数の値を受け取れることを示します。

位置指定パラメーター

一部のコマンドレットは、位置指定パラメーターを受け取れるように設計されています。 位置指定パラメーターを使用すると、パラメーターの名前を指定せずに値を指定できます。 位置を指定してパラメーターを使用する場合は、その値をコマンド ラインの正しい位置に指定する必要があります。 パラメーターの位置情報については、コマンドのヘルプ記事の「パラメーター」セクションで確認できます。 パラメーター名を明示的に指定する場合は、任意の順序でパラメーターを使用できます。

Get-EventLog コマンドレットの場合、最初のパラメーター セットの最初のパラメーターは LogName です。 LogName は角っかこで囲まれており、位置してパラメーターであることが示されています。

Get-EventLog [-LogName] <System.String>

LogName は位置指定パラメーターなので、名前または位置のいずれかで指定できます。 パラメーター名の後の山かっこに従って、LogName の値は単一の文字列にする必要があります。 パラメーター名とデータ型の両方を囲む角かっこがない場合は、LogName がこの特定のパラメータ セット内の必須パラメーターであることを示しています。

そのパラメーター セットの 2 番目のパラメーターは InstanceId です。 パラメーター名とデータ型の両方が角かっこで囲まれており、InstanceId が省略可能なパラメーターであることを示しています。

[[-InstanceId] <System.Int64[]>]

さらに、InstanceId には、LogName パラメーターと同様の位置指定パラメーターであることを示す、独自の角かっこのペアがあります。 データ型に続く空の角かっこのセットは、InstanceId が複数の値を受け入れ可能であることを意味します。

スイッチ パラメーター

値を必要としないパラメーターが、スイッチ パラメーターと呼ばれます。 スイッチ パラメーターは、パラメーター名の後にデータ型がないため簡単に識別できます。 スイッチ パラメーターを指定した場合、その値は true になります。 スイッチ パラメーターを指定しない場合、その値は false になります。

2 番目のパラメーター セットには、スイッチ パラメーターである List パラメーターが含まれています。 List パラメーターを指定すると、ローカル コンピューター上のイベント ログの一覧が返されます。

[-List]

構文に対する簡略化されたアプローチ

一部のコマンドについては、平易な英語を除き、難解なコマンド構文と同じ情報を取得するための、よりユーザー フレンドリな方法があります。 PowerShell は、Full パラメーターを指定して Get-Help を使用すると完全なヘルプ記事を返すため、コマンドの使用方法を理解しやすくなります。

Get-Help -Name Get-Help -Full

ここでコンピューターでこの例を実行し、出力を確認して、ヘルプ システムがどのように情報を整理しているかを確認します。

  • 名前
  • 概要
  • SYNTAX
  • 説明
  • PARAMETERS
  • 入力
  • 出力
  • 関連リンク

Get-Help コマンドレットで Full パラメーターを指定すると、出力にいくつかのセクションが追加されます。 これらのセクションのうち、「パラメーター」では多くの場合、各パラメーターの詳細な説明が提供されます。 ただし、この情報の範囲は、調査する特定のコマンドによって異なります。

...
    -Detailed <System.Management.Automation.SwitchParameter>
        Adds parameter descriptions and examples to the basic help display.
        This parameter is effective only when the help files are installed
        on the computer. It has no effect on displays of conceptual ( About_
        ) help.

        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false

    -Examples <System.Management.Automation.SwitchParameter>
        Displays only the name, synopsis, and examples. This parameter is
        effective only when the help files are installed on the computer. It
        has no effect on displays of conceptual ( About_ ) help.

        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false

    -Full <System.Management.Automation.SwitchParameter>
        Displays the entire help article for a cmdlet. Full includes
        parameter descriptions and attributes, examples, input and output
        object types, and additional notes.

        This parameter is effective only when the help files are installed
        on the computer. It has no effect on displays of conceptual ( About_
        ) help.

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false
...

前のコマンドを実行して Get-Help コマンドのヘルプを表示したとき、出力が速くスクロールしすぎて読みにくいことに気付いたかもしれません。

PowerShell コンソール、Windows ターミナル、または VS Code を使用していて、ヘルプ記事を表示する必要がある場合は、help 関数が役立ちます。 Get-Help の出力を more.com にパイプ処理し、一度に 1 ページずつヘルプ コンテンツを表示します。 ユーザー エクスペリエンスが向上し、入力も少なくて済むため、Get-Help コマンドレットではなく help 関数を使用することをお勧めします。

Note

ISE は more.com の使用をサポートしていないため、help を実行すると Get-Help と同じように動作します。

コンピューター上の PowerShell で次の各コマンドを実行します。

Get-Help -Name Get-Help -Full
help -Name Get-Help -Full
help Get-Help -Full

前のコマンドを実行したときに、出力に何か変化が見られましたか?

前の例において、最初の行では Get-Help コマンドレットが使用され、2 行目では help 関数が使用され、3 行目では help 関数が使用され Name パラメーターが省略されています。 Name は位置指定パラメーターであるため、3 行目の例では、パラメーターの名前を明示的に指定する代わりに、その位置を利用します。

違いは、最後の 2 つのコマンドは出力を一度に 1 ページずつ表示することです。 help 機能を使用する場合、Space キーを押すと次のコンテンツ ページが表示され、Q を押すと終了します。 PowerShell で対話形式で実行されているコマンドを終了する必要がある場合は、Ctrl+C を押します。

特定のパラメーターに関する情報をすばやく見つけるには、Parameter パラメーターを使用します。 この方法では、ヘルプ記事全体ではなく、パラメーター固有の情報のみを含むコンテンツが返されます。 これは、特定のパラメーターに関する情報を見つける最も簡単な方法です。

次の例では、Parameter パラメーターを指定した help 関数を使用して、Get-HelpName パラメーターのヘルプ記事から情報を返します。

help Get-Help -Parameter Name

ヘルプ情報では、Name パラメーターは位置指定であり、位置指定で使用する場合は最初の位置 (位置 0) に指定する必要があることが示されます。

-Name <System.String>
    Gets help about the specified command or concept. Enter the name of a
    cmdlet, function, provider, script, or workflow, such as `Get-Member`,
    a conceptual article name, such as `about_Objects`, or an alias, such
    as `ls`. Wildcard characters are permitted in cmdlet and provider
    names, but you can't use wildcard characters to find the names of
    function help and script help articles.

    To get help for a script that isn't located in a path that's listed in
    the `$env:Path` environment variable, type the script's path and file
    name.

    If you enter the exact name of a help article, `Get-Help` displays the
    article contents.

    If you enter a word or word pattern that appears in several help
    article titles, `Get-Help` displays a list of the matching titles.

    If you enter any text that doesn't match any help article titles,
    `Get-Help` displays a list of articles that include that text in their
    contents.

    The names of conceptual articles, such as `about_Objects`, must be
    entered in English, even in non-English versions of PowerShell.

    Required?                    false
    Position?                    0
    Default value                None
    Accept pipeline input?       True (ByPropertyName)
    Accept wildcard characters?  true

Name パラメーターには、パラメーター名の横にある <String> データ型で識別される文字列値が必要です。

ヘルプ記事のサブセットを返すために Get-Help で指定可能な他のパラメーターがいくつかあります。 動作を確認するには、コンピューターで次のコマンドを実行します。

Get-Help -Name Get-Command -Full
Get-Help -Name Get-Command -Detailed
Get-Help -Name Get-Command -Examples
Get-Help -Name Get-Command -Online
Get-Help -Name Get-Command -Parameter Noun
Get-Help -Name Get-Command -ShowWindow

私はいつも、help <command name> は、Full パラメーターまたは Online パラメーターと一緒に使用します。 例のみに関心がある場合は、Examples パラメーターを使用します。 特定のパラメーターにのみ関心がある場合は、Parameter パラメーターを使用します。

ShowWindow パラメーターを使用すると、ヘルプ コンテンツが別の検索可能ウィンドウに表示されます。 複数のモニターがある場合は、そのウィンドウを別のモニターに移動できます。 ただし、ShowWindow パラメーターには既知のバグがあり、ヘルプ記事全体を表示できない可能性があります。 ShowWindow パラメーターには、グラフィカル ユーザー インターフェイス (GUI) を備えたオペレーティング システムも必要です。 Windows Server Core で使用しようとすると、エラーが返されます。

インターネットにアクセスできる場合は、代わりに Online パラメーターを使用できます。 Online パラメーターを使用すると、既定の Web ブラウザーでヘルプ記事が開きます。 オンライン コンテンツは最新のコンテンツです。 ブラウザーを使用すると、ヘルプ コンテンツを検索したり、関連するその他のヘルプ記事を表示したりできます。

Note

Online パラメーターは、About 記事ではサポートされていません。

help Get-Command -Online

Get-Help を使用してコマンドを検索する

Get-Help を使用してコマンドを検索するには、Name パラメーターの値として、アスタリスク (*) ワイルドカード文字で囲まれた検索語句を指定します。 次の例では、位置を指定して Name パラメーターを使用します。

help *process*
Name                              Category  Module                    Synops
----                              --------  ------                    ------
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Con...
Exit-PSHostProcess                Cmdlet    Microsoft.PowerShell.Core Clo...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core Get...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Deb...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Get...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Sta...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Sto...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Wai...
Invoke-LapsPolicyProcessing       Cmdlet    LAPS                      Inv...
ConvertTo-ProcessMitigationPolicy Cmdlet    ProcessMitigations        Con...
Get-ProcessMitigation             Cmdlet    ProcessMitigations        Get...
Set-ProcessMitigation             Cmdlet    ProcessMitigations        Set...

このシナリオでは、* ワイルドカード文字を追加する必要はありません。 Get-Help は、指定した値と一致するコマンドを見つけられなかった場合、その値のフルテキスト検索を実行します。 次の例では、process の両端に * ワイルドカード文字を指定した場合と同じ結果が生成されます。

help process

値内にワイルドカード文字を指定すると、Get-Help は指定したパターンと一致するコマンドのみを検索します。 フルテキスト検索を実行する 次のコマンドは結果を返しません。

help pr*cess

PowerShell では、ダッシュで始まる値を引用符で囲まずに指定すると、その値がパラメーター名として解釈されるため、エラーが発生します。 Get-Help コマンドレットにそのようなパラメーター名は存在しません。

help -process

-process で終わるコマンドを検索する場合は、値の先頭に * を追加する必要があります。

help *-process

Get-Help を使用して PowerShell コマンドを検索する場合は、特定しすぎるのではなく、あいまいに検索することをお勧めします。

先ほど process を検索したとき、名前に process が含まれるコマンドのみが結果として返されました。 しかし、processes を検索しても、一致したコマンド名は見つかりません。 前述のように、ヘルプで一致するものが見つからない場合は、システム上のすべてのヘルプ記事に対して包括的なフルテキスト検索が実行され、その結果が返されます。 この種類の検索では、多くの場合、ユーザーに関係のない情報を含め、予想よりも多くの結果が生成されます。

help processes
Name                              Category  Module                    Synops
----                              --------  ------                    ------
Disconnect-PSSession              Cmdlet    Microsoft.PowerShell.Core Dis...
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Con...
ForEach-Object                    Cmdlet    Microsoft.PowerShell.Core Per...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core Get...
Get-PSSessionConfiguration        Cmdlet    Microsoft.PowerShell.Core Get...
New-PSSessionOption               Cmdlet    Microsoft.PowerShell.Core Cre...
New-PSTransportOption             Cmdlet    Microsoft.PowerShell.Core Cre...
Out-Host                          Cmdlet    Microsoft.PowerShell.Core Sen...
Start-Job                         Cmdlet    Microsoft.PowerShell.Core Sta...
Where-Object                      Cmdlet    Microsoft.PowerShell.Core Sel...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Deb...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Get...
Get-WmiObject                     Cmdlet    Microsoft.PowerShell.M... Get...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Sta...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Sto...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Wai...
Clear-Variable                    Cmdlet    Microsoft.PowerShell.U... Del...
Convert-String                    Cmdlet    Microsoft.PowerShell.U... For...
ConvertFrom-Csv                   Cmdlet    Microsoft.PowerShell.U... Con...
ConvertFrom-Json                  Cmdlet    Microsoft.PowerShell.U... Con...
ConvertTo-Html                    Cmdlet    Microsoft.PowerShell.U... Con...
ConvertTo-Xml                     Cmdlet    Microsoft.PowerShell.U... Cre...
Debug-Runspace                    Cmdlet    Microsoft.PowerShell.U... Sta...
Export-Csv                        Cmdlet    Microsoft.PowerShell.U... Con...
Export-FormatData                 Cmdlet    Microsoft.PowerShell.U... Sav...
Format-List                       Cmdlet    Microsoft.PowerShell.U... For...
Format-Table                      Cmdlet    Microsoft.PowerShell.U... For...
Get-Unique                        Cmdlet    Microsoft.PowerShell.U... Ret...
Group-Object                      Cmdlet    Microsoft.PowerShell.U... Gro...
Import-Clixml                     Cmdlet    Microsoft.PowerShell.U... Imp...
Import-Csv                        Cmdlet    Microsoft.PowerShell.U... Cre...
Measure-Object                    Cmdlet    Microsoft.PowerShell.U... Cal...
Out-File                          Cmdlet    Microsoft.PowerShell.U... Sen...
Out-GridView                      Cmdlet    Microsoft.PowerShell.U... Sen...
Select-Object                     Cmdlet    Microsoft.PowerShell.U... Sel...
Set-Variable                      Cmdlet    Microsoft.PowerShell.U... Set...
Sort-Object                       Cmdlet    Microsoft.PowerShell.U... Sor...
Tee-Object                        Cmdlet    Microsoft.PowerShell.U... Sav...
Trace-Command                     Cmdlet    Microsoft.PowerShell.U... Con...
Write-Information                 Cmdlet    Microsoft.PowerShell.U... Spe...
Export-BinaryMiLog                Cmdlet    CimCmdlets                Cre...
Get-CimAssociatedInstance         Cmdlet    CimCmdlets                Ret...
Get-CimInstance                   Cmdlet    CimCmdlets                Get...
Import-BinaryMiLog                Cmdlet    CimCmdlets                Use...
Invoke-CimMethod                  Cmdlet    CimCmdlets                Inv...
New-CimInstance                   Cmdlet    CimCmdlets                Cre...
Remove-CimInstance                Cmdlet    CimCmdlets                Rem...
Set-CimInstance                   Cmdlet    CimCmdlets                Mod...
Compress-Archive                  Function  Microsoft.PowerShell.A... Cre...
Get-Counter                       Cmdlet    Microsoft.PowerShell.D... Get...
Invoke-WSManAction                Cmdlet    Microsoft.WSMan.Manage... Inv...
Remove-WSManInstance              Cmdlet    Microsoft.WSMan.Manage... Del...
Get-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Dis...
New-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Cre...
Set-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Mod...
about_Arithmetic_Operators        HelpFile
about_Arrays                      HelpFile
about_Environment_Variables       HelpFile
about_Execution_Policies          HelpFile
about_Functions                   HelpFile
about_Jobs                        HelpFile
about_Logging                     HelpFile
about_Methods                     HelpFile
about_Objects                     HelpFile
about_Pipelines                   HelpFile
about_Preference_Variables        HelpFile
about_Remote                      HelpFile
about_Remote_Jobs                 HelpFile
about_Session_Configuration_Files HelpFile
about_Simplified_Syntax           HelpFile
about_Switch                      HelpFile
about_Variables                   HelpFile
about_Variable_Provider           HelpFile
about_Windows_Powershell_5.1      HelpFile
about_WQL                         HelpFile
about_WS-Management_Cmdlets       HelpFile
about_Foreach-Parallel            HelpFile
about_Parallel                    HelpFile
about_Sequence                    HelpFile

process を検索すると、12 件の結果が返されました。 しかし、processes を検索すると、78 件の結果が返されました。 検索で一致するものが 1 件しか見つからなかった場合は、Get-Help は検索結果を一覧表示するのではなく、ヘルプ コンテンツを表示します。

help *hotfix*
NAME
    Get-HotFix

SYNOPSIS
    Gets the hotfixes that are installed on local or remote computers.


SYNTAX
    Get-HotFix [-ComputerName <System.String[]>] [-Credential
    <System.Management.Automation.PSCredential>] [-Description
    <System.String[]>] [<CommonParameters>]

    Get-HotFix [[-Id] <System.String[]>] [-ComputerName <System.String[]>]
    [-Credential <System.Management.Automation.PSCredential>]
    [<CommonParameters>]


DESCRIPTION
    > This cmdlet is only available on the Windows platform. The
    `Get-Hotfix` cmdlet uses the Win32_QuickFixEngineering WMI class to
    list hotfixes that are installed on the local computer or specified
    remote computers.


RELATED LINKS
    Online Version: https://video2.skills-academy.com/powershell/module/microsoft.
    powershell.management/get-hotfix?view=powershell-5.1&WT.mc_id=ps-gethelp
    about_Arrays
    Add-Content
    Get-ComputerRestorePoint
    Get-Credential
    Win32_QuickFixEngineering class

REMARKS
    To see the examples, type: "get-help Get-HotFix -examples".
    For more information, type: "get-help Get-HotFix -detailed".
    For technical information, type: "get-help Get-HotFix -full".
    For online help, type: "get-help Get-HotFix -online"

また、この機能は一般には知られていませんが、Get-Help を使用するとヘルプ記事がないコマンドを見つけることもできます。 more 関数は、ヘルプ記事がないコマンドの 1 つです。 Get-Help を使用してヘルプ記事がないコマンドが見つかるかどうかを確認するには、help 関数を使用して more を見つけます。

help *more*

検索で一致が 1 件しか見つからなかったため、コマンドにヘルプ記事がない場合に表示される基本的な構文情報が返されました。

NAME
    more

SYNTAX
    more [[-paths] <string[]>]

ALIASES
    None

REMARKS
    None

PowerShell ヘルプ システムには、概念的な About ヘルプ記事も含まれています。 About 記事を取得するには、システムのヘルプ コンテンツを更新する必要があります。 詳細については、この章の「ヘルプの更新」セクションを参照してください。

次のコマンドを使用して、システム上のすべての About ヘルプ記事の一覧を返します。

help About_*

結果を 1 件の About ヘルプ記事に制限すると、Get-Help はその記事の内容を表示します。

help about_Updatable_Help

ヘルプの更新

この章の前半で、Get-Help コマンドレットを初めて実行したときに、コンピューター上の PowerShell ヘルプ記事を更新しました。 ヘルプ コンテンツの更新を取得するために、Update-Help コマンドレットをコンピューター上で定期的に実行する必要があります。

重要

Windows PowerShell 5.1 では、管理者特権の PowerShell セッションで Update-Help を管理者として実行する必要があります。

次の例では、Update-Help はコンピューターにインストールされているすべてのモジュールの PowerShell ヘルプ コンテンツをダウンロードします。 最新バージョンのヘルプ コンテンツを確実にダウンロードするには、Force パラメーターを使用する必要があります。

Update-Help -Force

次の結果に示すように、モジュールからエラーが返されました。 エラーは珍しいことではなく、通常はモジュールの作成者が更新可能なヘルプを正しく構成していない場合に発生します。

Update-Help : Failed to update Help for the module(s) 'BitsTransfer' with UI
culture(s) {en-US} : Unable to retrieve the HelpInfo XML file for UI culture
en-US. Make sure the HelpInfoUri property in the module manifest is valid or
check your network connection and then try the command again.
At line:1 char:1
+ Update-Help
+ ~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [Update-Help], Except
   ion
    + FullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShe
   ll.Commands.UpdateHelpCommand

Update-Help では、ヘルプ コンテンツをダウンロードするためのインターネット アクセスが必要です。 コンピューターがインターネットにアクセスできない場合は、インターネットにアクセスできるコンピューター上で Save-Help コマンドレットを使用して、更新されたヘルプ コンテンツをダウンロードして保存します。 次に、Update-HelpSourcePath パラメーターを使用して、更新されたヘルプ コンテンツの保存場所を指定します。

Get-Command

Get-Command は、コマンドを見つけるのに役立つもう 1 つの多目的コマンドです。 パラメーターを指定せずに Get-Command を実行すると、システム上の PowerShell コマンドの一覧が返されます。 Get-Command を使用して、Get-Help と似たコマンド構文を取得することもできます。

Get-Command の構文はどのように決定すればよいのでしょうか? この章の「Get-Help」セクションに示されているように、Get-Help を使用して Get-Command のヘルプ記事を表示できます。 また、Get-CommandSyntax パラメーターと共に使用して、任意のコマンドの構文を表示することもできます。 このショートカットを使用すると、ヘルプ コンテンツ内を移動せずにコマンドを使用する方法をすばやく判断できます。

Get-Command -Name Get-Command -Syntax

Get-CommandSyntax パラメーターとともに使用すると、Get-Help のように許容される特定の値を一覧表示せずに、パラメーターとその値の型を示す、より簡潔な構文が表示されます。

Get-Command [[-ArgumentList] <Object[]>] [-Verb <string[]>]
[-Noun <string[]>] [-Module <string[]>]
[-FullyQualifiedModule <ModuleSpecification[]>] [-TotalCount <int>]
[-Syntax] [-ShowCommandInfo] [-All] [-ListImported]
[-ParameterName <string[]>] [-ParameterType <PSTypeName[]>]
[<CommonParameters>]

Get-Command [[-Name] <string[]>] [[-ArgumentList] <Object[]>]
[-Module <string[]>] [-FullyQualifiedModule <ModuleSpecification[]>]
[-CommandType <CommandTypes>] [-TotalCount <int>] [-Syntax]
[-ShowCommandInfo] [-All] [-ListImported] [-ParameterName <string[]>]
[-ParameterType <PSTypeName[]>] [<CommonParameters>]

コマンドの使用方法についてさらに詳しい情報が必要な場合は、Get-Help を使用します。

help Get-Command -Full

Get-HelpSYNTAX セクションは、パラメーターの列挙値を拡張することで、よりユーザー フレンドリな表示を提供します。 実際に使用できる値が表示されるので、利用可能なオプションを理解しやすくなります。

...
    Get-Command [[-Name] <System.String[]>] [[-ArgumentList]
    <System.Object[]>] [-All] [-CommandType {Alias | Function | Filter |
    Cmdlet | ExternalScript | Application | Script | Workflow |
    Configuration | All}] [-FullyQualifiedModule
    <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported]
    [-Module <System.String[]>] [-ParameterName <System.String[]>]
    [-ParameterType <System.Management.Automation.PSTypeName[]>]
    [-ShowCommandInfo] [-Syntax] [-TotalCount <System.Int32>]
    [<CommonParameters>]

    Get-Command [[-ArgumentList] <System.Object[]>] [-All]
    [-FullyQualifiedModule
    <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported]
    [-Module <System.String[]>] [-Noun <System.String[]>] [-ParameterName
    <System.String[]>] [-ParameterType
    <System.Management.Automation.PSTypeName[]>] [-ShowCommandInfo]
    [-Syntax] [-TotalCount <System.Int32>] [-Verb <System.String[]>]
    [<CommonParameters>]
...

Get-Command のヘルプの「パラメーター」セクションでは、NameNoun、および Verb パラメーターがワイルドカード文字を受け取ることが示されています。

...
    -Name <System.String[]>
        Specifies an array of names. This cmdlet gets only commands that
        have the specified name. Enter a name or name pattern. Wildcard
        characters are permitted.

        To get commands that have the same name, use the All parameter. When
        two commands have the same name, by default, `Get-Command` gets the
        command that runs when you type the command name.

        Required?                    false
        Position?                    0
        Default value                None
        Accept pipeline input?       True (ByPropertyName, ByValue)
        Accept wildcard characters?  true

    -Noun <System.String[]>
        Specifies an array of command nouns. This cmdlet gets commands,
        which include cmdlets, functions, and aliases, that have names that
        include the specified noun. Enter one or more nouns or noun
        patterns. Wildcard characters are permitted.

        Required?                    false
        Position?                    named
        Default value                None
        Accept pipeline input?       True (ByPropertyName)
        Accept wildcard characters?  true
    -Verb <System.String[]>
        Specifies an array of command verbs. This cmdlet gets commands,
        which include cmdlets, functions, and aliases, that have names that
        include the specified verb. Enter one or more verbs or verb
        patterns. Wildcard characters are permitted.

        Required?                    false
        Position?                    named
        Default value                None
        Accept pipeline input?       True (ByPropertyName)
        Accept wildcard characters?  true
...

次の例では、Get-CommandName パラメーターの値にワイルドカード文字 * を使用します。

Get-Command -Name *service*

Get-CommandName パラメーターでワイルドカード文字を使用すると、次の結果に示すように、PowerShell コマンドとネイティブ コマンドが返されます。


CommandType     Name                                               Version
-----------     ----                                               -------
Function        Get-NetFirewallServiceFilter                       2.0.0.0
Function        Set-NetFirewallServiceFilter                       2.0.0.0
Cmdlet          Get-Service                                        3.1.0.0
Cmdlet          New-Service                                        3.1.0.0
Cmdlet          New-WebServiceProxy                                3.1.0.0
Cmdlet          Restart-Service                                    3.1.0.0
Cmdlet          Resume-Service                                     3.1.0.0
Cmdlet          Set-Service                                        3.1.0.0
Cmdlet          Start-Service                                      3.1.0.0
Cmdlet          Stop-Service                                       3.1.0.0
Cmdlet          Suspend-Service                                    3.1.0.0
Application     SecurityHealthService.exe                          10.0.2...
Application     SensorDataService.exe                              10.0.2...
Application     services.exe                                       10.0.2...
Application     services.msc                                       0.0.0.0
Application     TieringEngineService.exe                           10.0.2...
Application     Windows.WARP.JITService.exe                        10.0.2...

CommandType パラメーターを使用して、Get-Command の結果を PowerShell コマンドに制限できます。

Get-Command -Name *service* -CommandType Cmdlet, Function, Alias, Script

PowerShell コマンドにのみ動詞と名詞が含まれるため、別のオプションとしては、Verb または Noun パラメーターのいずれか、または両方を使用することもできます。

次の例では、Get-Command を使用して、コンピューター上でプロセスを操作するコマンドを見つけます。 Noun パラメーターを使用し、その値として Process を指定します。

Get-Command -Noun Process
CommandType     Name                                               Version
-----------     ----                                               -------
Cmdlet          Debug-Process                                      3.1.0.0
Cmdlet          Get-Process                                        3.1.0.0
Cmdlet          Start-Process                                      3.1.0.0
Cmdlet          Stop-Process                                       3.1.0.0
Cmdlet          Wait-Process                                       3.1.0.0

まとめ

この章では、Get-HelpGet-Command を使用してコマンドを見つける方法について説明しました。 また、コマンドを見つけてから、ヘルプ システムを使用して、そのコマンドの使用方法を理解する方法についても説明しました。 さらに、新しいヘルプ コンテンツが利用可能になったときに、コンピューター上のヘルプ システムを更新する方法についても説明しました。

確認

  1. Get-ServiceDisplayName パラメーターは、位置指定のパラメーターですか。
  2. Get-Process コマンドレットにはパラメーター セットの数がいくつありますか。
  3. イベント ログを操作するための PowerShell コマンドは何ですか。
  4. コンピューターで実行されている PowerShell プロセスのリストを返すための PowerShell コマンドは何ですか。
  5. コンピューターに保存されている PowerShell ヘルプ コンテンツを更新するにはどうすればよいですか。

関連情報

この章で説明する概念の詳細については、次の PowerShell ヘルプ記事を参照してください。

次のステップ

次の章では、オブジェクト、プロパティ、メソッド、Get-Member コマンドレットについて説明します。