次の方法で共有


第 2 章 - ヘルプ システム

PowerShell の能力を評価するために設計された実験では、IT プロフェッショナルの 2 つの異なるグループ (初心者と専門家) が最初に、コンピューターにアクセスせずに筆記試験を受けた。 驚いたことに、テストスコアは両方のグループで同等のスキルを示しました。 その後のテストが管理され、最初のテストがミラーリングされましたが、1 つの重要な違いがあります。参加者は PowerShell を搭載したオフライン コンピューターにアクセスできます。 その結果、今回は2つのグループ間に大きなスキルギャップが見られた。

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

専門家は答えを常に知っているわけではありませんが、答えを把握する方法を知っています。

2 つのテストの結果で観察された結果は、専門家が何千もの PowerShell コマンドを記憶しないためでした。 代わりに、PowerShell 内のヘルプ システムの使用に優れているため、必要に応じてコマンドを検出して使用方法を学習できます。

ヘルプ システムに習熟することが、PowerShell で成功を収める鍵となります。

PowerShell の作成者である Jeffrey Snover が、何度か同じような話を共有しているのを聞きました。

発見可能性

PowerShell でコンパイルされたコマンドはコマンドレットと呼ばれ、"cmd-let" ではなく、"command-let"と発音されます。 コマンドレットの命名規則は、単数の 動詞-名詞 形式に従っており、簡単に見つけられるようにしています。 たとえば、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
  • Description
  • 関連リンク
  • REMARKS

出力を確認するときは、多くの場合、ヘルプ記事には膨大な量の情報が含まれていることに注意してください。既定で表示される内容はヘルプ記事全体ではありません。

パラメーター

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

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

...
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 コマンドレットの異なるパラメーター セットに属しています。

  • 完全
  • 詳細
  • 例示
  • オンライン
  • パラメーター
  • ショーウィンドウ

コマンド構文

PowerShell を初めて使用する場合、「SYNTAX」セクションにある、角かっこと山かっこを使用した暗号のような情報を理解するのは、難しく思えるかもしれません。 ただし、これらの構文要素を学習することは、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[]>など、データ型の後に続く空の角かっこのセットは、パラメーターが配列またはコレクション オブジェクトとして渡された複数の値を受け取ることができることを示します。

位置指定パラメーター

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

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

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

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

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

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

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

パラメーターの切り替え

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

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

[-List]

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

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

Get-Help -Name Get-Help -Full

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

  • 名前
  • 概要
  • SYNTAX
  • Description
  • PARAMETERS
  • 入力
  • 出力
  • ノート
  • 例の数々
  • 関連リンク

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

...
    -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 関数を使用することをお勧めします。これは、ユーザー エクスペリエンスが向上し、入力が少ないためです。

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

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

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

前のコマンドを実行したときに、出力のバリエーションを確認しましたか?

前の例では、1 行目は Get-Help コマンドレットを使用し、2 行目は help 関数を使用し、3 行目では help 関数の使用中に Name パラメーターを省略しています。 名前 は位置指定パラメーターであるため、3 番目の例では、パラメーターの名前を明示的に指定するのではなく、その位置を利用します。

違いは、最後の 2 つのコマンドで出力が一度に 1 ページずつ表示される点です。 help 機能を使用する場合は、スペースバー を押して内容の次のページを表示するか、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> を使用します。 この例にのみ関心がある場合は、Examples パラメーターを使用します。 特定のパラメーターにのみ関心がある場合は、Parameter パラメーターを使用します。

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

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

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://learn.microsoft.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 ヘルプ記事の一覧を返します。

help About_*

結果を 1 つの概念ヘルプ記事に制限すると、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のヘルプ記事を表示できます。 Syntax パラメーターで Get-Command を使用して、任意のコマンドの構文を表示することもできます。 このショートカットを使用すると、ヘルプ コンテンツ内を移動せずにコマンドを使用する方法をすばやく判断できます。

Get-Command -Name Get-Command -Syntax

Syntax パラメーターで Get-Command を使用すると、パラメーターとその値の型を示す構文のより簡潔なビューが提供されます。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 のヘルプの PARAMETERS セクションでは、名詞、および 動詞の パラメーターがワイルドカード文字を受け入れることが明らかになります。

...
    -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

もう 1 つのオプションは、powerShell コマンドにのみ動詞と名詞があるため、動詞 または 名詞 パラメーター、またはその両方を使用することです。

次の例では、Get-Command を使用して、プロセスを操作するコンピューター上のコマンドを検索します。 名詞 パラメーターを使用し、その値として 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. DisplayNameGet-Service パラメーターは位置指定ですか?
  2. Get-Process コマンドレットにはいくつのパラメーター セットがありますか?
  3. イベント ログを操作するための PowerShell コマンドは何ですか?
  4. コンピューターで実行されている PowerShell プロセスの一覧を返す PowerShell コマンドは何ですか?
  5. コンピューターに保存されている PowerShell ヘルプ コンテンツを更新するにはどうすればよいですか?

参考資料

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

次のステップ

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