次の方法で共有


PowerShell の検出

PowerShell は、コマンドライン シェルであり、スクリプト言語です。 PowerShell は、管理タスクの自動化に役立つ Windows で開始されました。 これで、クロス プラットフォームが実行され、さまざまなタスクに使用できるようになりました。

PowerShell が一意になるのは、テキストではなく.NET オブジェクトを受け入れて返すということです。 この機能により、パイプライン内のさまざまなコマンドを簡単に接続 できます

PowerShell は何に使用できますか?

最初は、PowerShell は Windows 専用でした。 これでクロスプラットフォームになり、次のようなさまざまなタスクに使用できます。

  • クラウド管理。 PowerShell を使用して、クラウド リソースを管理できます。 たとえば、情報の取得、更新、または新しいリソースのデプロイを行うことができます。
  • CI/CD。 また、継続的インテグレーション/継続的配置パイプラインの一部として使用することもできます。
  • Active Directory と Exchange のタスクを自動化します。 これを使用すると、Active Directory でのユーザーの作成や Exchange のメールボックスの作成など、Windows 上のほぼすべてのタスクを自動化できます。

PowerShell を使用するユーザー

PowerShell は、さまざまなロールで作業するユーザーを支援できる強力なツールです。 従来、PowerShell はシステム管理者によって使用されていました。 現在は、DevOps、Cloud Ops、さらには開発者を呼び出すユーザーによって使用されています。

PowerShell コマンドレット

PowerShell には、何百ものプレインストールされたコマンドが付属しています。 PowerShell コマンドはコマンドレットと呼ばれます ( command-lets と発音されます)。

各コマンドレットの名前は 、動詞と名詞 のペアで構成されます。 たとえば、「 Get-Process 」のように入力します。 この名前付け規則により、コマンドレットの動作を理解しやすくなります。 また、探しているコマンドを見つけやすくなります。 使用するコマンドレットを探すときは、動詞または名詞でフィルター処理できます。

コマンドレットを使用した PowerShell の探索

PowerShell を初めて取得するとき、学習することが多いように思われるので、それは威圧感を感じるかもしれません。 PowerShell は、必要に応じて、少しずつ学習できるように設計されています。

PowerShell には、PowerShell の検出に役立つコマンドレットが含まれています。 これら 3 つのコマンドレットを使用すると、使用可能なコマンド、コマンドの実行内容、操作対象の種類を確認できます。

  • Get-Verb。 このコマンドを実行すると、ほとんどのコマンドが準拠する動詞の一覧が返されます。 応答には、これらの動詞の動作の説明が含まれています。 ほとんどのコマンドはこの名前付け規則に従っているため、コマンドの動作に対する期待が設定されます。 このコマンドは、独自のコマンドを作成するときに、適切な動詞とコマンドの名前を選択するのに役立ちます。
  • Get-Command。 このコマンドは、コンピューターにインストールされているすべてのコマンドの一覧を取得します。
  • Get-Member。 これはオブジェクト ベースの出力に対して動作し、コマンドで使用できるオブジェクト、プロパティ、メソッドを検出できます。
  • Get-Help。 コマンドの名前を引数としてこのコマンドを呼び出すと、コマンドのさまざまな部分を説明するヘルプ ページが表示されます。

これらのコマンドを使用すると、PowerShell について知る必要があるほとんどすべてのものを検出できます。

動詞

動詞 は PowerShell の重要な概念です。 これは、ほとんどのコマンドレットが従う名前付け標準です。 また、独自のコマンドを記述するときに従う必要がある名前付け標準でもあります。 動詞には、 データの読 み取りや変更など、何をしようとしているかを示すという考え方があります。 PowerShell には、動詞の標準化された一覧があります。 使用可能なすべての動詞の完全な一覧を取得するには、 Get-Verb コマンドレットを使用します。

Get-Verb

コマンドレットは、動詞の長い一覧を返します。 説明は、動詞の目的に関するコンテキストを提供します。 出力の最初のいくつかの行を次に示します。

Verb    AliasPrefix   Group     Description
----    -----------   -----     -----------
Add     a             Common    Adds a resource to a container, or attaches an item to another item
Clear   cl            Common    Removes all the resources from a container but does not delete the container
Close   cs            Common    Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy    cp            Common    Copies a resource to another name or to another container
Enter   et            Common    Specifies an action that allows the user to move into a resource
Exit    ex            Common    Sets the current environment or context to the most recently used context
...

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

Get-Command コマンドレットは、システムにインストールされているすべての使用可能なコマンドの一覧を返します。 リストは大きくなる可能性があります。 パラメーターまたはヘルパー コマンドレットを使用して応答をフィルター処理することで、返される情報の量を制限できます。

名前のフィルター処理

さまざまなパラメーターを使用して、 Get-Command の出力をフィルター処理できます。 フィルター処理を使用すると、特定のプロパティを持つコマンドを検索できます。 Name パラメーターを使用すると、特定のコマンドを名前で検索できます。

Get-Command -Name Get-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management

プロセスで動作するすべてのコマンドを検索する場合はどうしますか? ワイルドカード * を使用して、他の形式の文字列と一致させることができます。 例えば次が挙げられます。

Get-Command -Name *-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Debug-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Start-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Stop-Process      7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Wait-Process      7.0.0.0    Microsoft.PowerShell.Management

名詞と動詞のフィルター処理

動詞と名詞の値をフィルター処理するパラメーターは他にもあります。 コマンド名の動詞部分は左端の部分です。 動詞は、 Get-Verb コマンドレットによって返される値のいずれかである必要があります。 コマンドの右端の部分は名詞部分です。 名詞は何でもかまいません。

  • 動詞でフィルター処理します。 コマンド Get-Processでは、動詞部分が Get。 動詞部分をフィルター処理するには、 Verb パラメーターを使用します。

    Get-Command -Verb 'Get'
    

    次の使用例は、動詞 Getを使用するすべてのコマンドを一覧表示します。

  • 名詞でフィルター処理します。 コマンド Get-Processでは、名詞部分が Process。 名詞をフィルター処理するには、 名詞 パラメーターを使用します。 次の例では、文字 Uで始まる名詞を持つすべてのコマンドレットを返します。

    Get-Command -Noun U*
    

また、パラメーターを組み合わせて検索を絞り込むこともできます。次に例を示します。

Get-Command -Verb Get -Noun U*
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Get-UICulture                7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Unique                   7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Uptime                   7.0.0.0    Microsoft.PowerShell.Utility

ヘルパー コマンドレットを使用して結果をフィルター処理する

他のコマンドレットを使用して結果をフィルター処理することもできます。

  • Select-Object。 この汎用コマンドは、1 つ以上のオブジェクトから特定のプロパティを選択するのに役立ちます。 また、返される項目の数を制限することもできます。 次の例では、現在のセッションで使用できる最初の 5 つのコマンドの Name プロパティと Source プロパティ値を返します。

    Get-Command | Select-Object -First 5 -Property Name, Source
    
    Name                      Source
    ----                      ------
    Add-AppPackage            Appx
    Add-AppPackageVolume      Appx
    Add-AppProvisionedPackage Dism
    Add-AssertionOperator     Pester
    Add-ProvisionedAppPackage Dism
    

    詳細については、「 Select-Object」を参照してください。

  • Where-Object。 このコマンドレットを使用すると、プロパティの値に基づいて返されるオブジェクトをフィルター処理できます。 このコマンドは、プロパティの値をテストできる式を受け取ります。 次の例では、 ProcessNamep で始まるすべてのプロセスを返します。

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    Get-Process コマンドレットは、プロセス オブジェクトのコレクションを返します。 応答をフィルター処理するには、出力を パイプ 処理して Where-Objectします。 パイプとは、パイプ | 文字を介して 2 つ以上のコマンドが接続されていることを意味します。 1 つのコマンドからの出力は、次のコマンドの入力として送信されます。 Where-Objectのフィルター式では、-like演算子を使用して、文字pで始まるプロセスを照合します。

Get-Member を使用してオブジェクトを探索する

目的のコマンドレットを見つけたら、生成される出力の詳細を確認する必要があります。 Get-Member コマンドレットは、オブジェクトの型、プロパティ、およびメソッドを表示します。 検査する出力をパイプ処理して、 Get-Memberします。

Get-Process | Get-Member

結果には、返された型が TypeName として表示され、オブジェクトのすべてのプロパティとメソッドが表示されます。 このような結果の抜粋を次に示します。

TypeName: System.Diagnostics.Process

Name        MemberType     Definition
----        ----------     ----------
Handles     AliasProperty  Handles = Handlecount
Name        AliasProperty  Name = ProcessName
...

MemberType パラメーターを使用すると、返される情報を制限できます。

Get-Process | Get-Member -MemberType Method

既定では、PowerShell にはいくつかのプロパティのみが表示されます。 前の例では、 NameMemberType、および Definition メンバーを表示しました。 Select-Objectを使用して、表示するプロパティを指定できます。 たとえば、 Name プロパティと Definition プロパティのみを表示します。

Get-Process | Get-Member | Select-Object Name, Definition

パラメーターの種類で検索する

Get-Member は、 Get-Processプロセス 型オブジェクトを返すという結果を示しました。 Get-CommandParameterType パラメーターを使用すると、Process オブジェクトを入力として受け取る他のコマンドを検索できます。

Get-Command -ParameterType Process
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Debug-Process                7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Enter-PSHostProcess          7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Get-Process                  7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Get-PSHostProcessInfo        7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Stop-Process                 7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Wait-Process                 7.0.0.0    Microsoft.PowerShell.Managem…

コマンドの出力の種類を知ることは、関連するコマンドの検索を絞り込むのに役立ちます。

その他のリソース