Get-Commandの使い方:使用可能なコマンドを探す

広告

PowerShell では多くのコマンドが用意されており、目的のコマンドが分からないことがあります。 Get-Command コマンドレットを使用すると、コマンド(コマンドレットや関数など)を探すことができます。一覧を表示したり、名前の一部を指定して一致するコマンドを検索することができます。ここでは PowerShell における Get-Command コマンドレットの使い方について解説します。

Get-Commandコマンドレットの書式

Get-Command コマンドレットは、コマンドの一覧を取得したり、目的のコマンドを探すために使用します。 Get-Command コマンドレットの書式は次の通りです。

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

Get-Command はエイリアスとして gcm が定義されています。

gcm -> Get-Command

Get-Command を引数なしで実行すると、コンピューターにインストールされているすべてのコマンドレット(Cmdlet)、関数(Function)、エイリアス(Alias)を一覧として表示します。

※ コマンドレットとは PowerShell に含まれる基本のコマンドのことです。関数とは PowerShell のスクリプトを使って一連の処理をまとめたものです。エイリアスはコマンドの別名を定義したものです。

では実際に試してみます。次のように実行してください。

Get-Command

コマンドの一覧が表示されます。

Get-Commandコマンドレットの使い方(1)

非常に長いので一部を抜粋すると次のようになります。

PS C:\code\powershell> Get-Command

CommandType     Name                                               Version
-----------     ----                                               -------
Alias           Add-AppPackage ->                                  2.0.1.0
Alias           Add-AppPackageVolume ->                            2.0.1.0
Alias           Add-AppProvisionedPackage ->                       3.0

(途中略)

Function        A:
Function        Add-BitLockerKeyProtector                          1.0.0.0
Function        Add-DnsClientDohServerAddress                      1.0.0.0
Function        Add-DnsClientNrptRule                              1.0.0.0

(途中略)

Cmdlet          Add-AppProvisionedSharedPackageContainer           3.0
Cmdlet          Add-AppSharedPackageContainer                      2.0.1.0
Cmdlet          Add-AppxPackage                                    2.0.1.0

また Get-Command の引数としてアスタリスク(*)を指定すると、PATH に設定されているディレクトリにある実行可能なコマンド(アプリケーションなど)も含めて取得します。

※ アプリケーションとは、 PowerShell のコマンドレットとは別に、 Windows や個別にインストールされたプログラムのことです。例えば notepad.exeping.exe なども含まれます。

では実際に試してみます。次のように実行してください。

Get-Command *

コマンドの一覧を取得することができました。

Get-Commandコマンドレットの使い方(2)

非常に長いので一部を抜粋すると次のようになります。

PS C:\code\powershell> Get-Command *

CommandType     Name                                               Version
-----------     ----                                               -------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           Add-AppPackage ->                                  2.0.1.0
Alias           Add-AppPackageVolume ->                            2.0.1.0

(途中略)

Function        A:
Function        Add-BitLockerKeyProtector                          1.0.0.0
Function        Add-DnsClientDohServerAddress                      1.0.0.0
Function        Add-DnsClientNrptRule                              1.0.0.0

(途中略)

Cmdlet          Add-AppProvisionedSharedPackageContainer           3.0
Cmdlet          Add-AppSharedPackageContainer                      2.0.1.0
Cmdlet          Add-AppxPackage                                    2.0.1.0
Cmdlet          Add-AppxProvisionedPackage                         3.0

(途中略)

ExternalScript  Install-PowerShellRemoting.ps1
ExternalScript  InstallPSCorePolicyDefinitions.ps1
ExternalScript  pwsh.profile.resource.ps1
ExternalScript  RegisterManifest.ps1

(途中略)

Application     ActionsMcpHost.exe                                 0.0.0.0
Application     agentactivationruntimestarter.exe                  10.0.261…
Application     AggregatorHost.exe                                 10.0.261…
Application     aitstatic.exe                                      10.0.261…

コマンドを探す

オプションを使って目的のコマンドを探す方法を解説します。

-Nameオプション

コマンド名の一部を指定してコマンドを検索するには Name オプションを指定します。

Get-Command -Name コマンドの名前

ワイルドカードであるアスタリスク(*)を使い、 *名前名前* などのように検索したいコマンドの名前を指定してください。

なお -Name は省略可能なので、普段検索する場合は次のように記述しても構いません。

Get-Command コマンドの名前

それでは名前が New- で始まるコマンドを検索します。次のように実行してください。

Get-Command -Name New-*

条件に一致するコマンドの一覧が表示されます。

Get-Commandコマンドレットの使い方(3)

非常に長いので一部を抜粋すると次のようになります。

PS C:\code\powershell> Get-Command New-*

CommandType     Name                                               Version
-----------     ----                                               -------
Function        New-AutologgerConfig                               1.0.0.0
Function        New-DAEntryPointTableItem                          1.0.0.0
Function        New-DscChecksum                                    1.1
Function        New-EapConfiguration                               2.0.0.0

(途中略)

Cmdlet          New-Alias                                          7.0.0.0
Cmdlet          New-BcdEntry                                       1.0.0
Cmdlet          New-BcdStore                                       1.0.0
Cmdlet          New-CertificateNotificationTask                    1.0.0.0

(途中略)

-Verbオプション

コマンドレットの名前は Get-Command のように「動詞-名詞」となっています。この動詞の部分を指定してコマンドを検索するには Verb オプションを指定します。

Get-Command -Verb 動詞名

動詞名にはワイルドカードのアスタリスク(*)も使用できます。

それでは動詞名が Get のコマンドを検索します。次のように実行してください。

Get-Command -Verb Get

条件に一致するコマンドの一覧が表示されます。

Get-Commandコマンドレットの使い方(4)

非常に長いので一部を抜粋すると次のようになります。

PS C:\code\powershell> Get-Command -Verb Get

CommandType     Name                                               Version
-----------     ----                                               -------
Alias           Get-AppPackage ->                                  2.0.1.0
Alias           Get-AppPackageAutoUpdateSettings ->                2.0.1.0
Alias           Get-AppPackageDefaultVolume ->                     2.0.1.0
Alias           Get-AppPackageLastError ->                         2.0.1.0

(途中略)

Function        Get-AppBackgroundTask                              1.0.0.0
Function        Get-AppxLastError                                  2.0.1.0
Function        Get-AppxLog                                        2.0.1.0
Function        Get-AutologgerConfig                               1.0.0.0

(途中略)

Cmdlet          Get-Acl                                            7.0.0.0
Cmdlet          Get-Alias                                          7.0.0.0
Cmdlet          Get-AppProvisionedSharedPackageContainer           3.0
Cmdlet          Get-AppSharedPackageContainer                      2.0.1.0

(途中略)

なお Get-Command -Name Get*Get-Command -Verb Get は似ていますが、意味が異なります。

-Name Get* は単に名前が Get で始まるコマンドを検索しますが、 -Verb Get は動詞が Get に分類されているコマンドを検索します。 そのため、結果が異なる場合があります。

-Nounオプション

コマンドレットの名前は Get-Command のように「動詞-名詞」となっています。この名詞の部分を指定してコマンドを検索するには Noun オプションを指定します。

Get-Command -Noun 名詞名

名詞名にはワイルドカードのアスタリスク(*)も使用できます。

それでは名詞名が Item のコマンドを検索します。次のように実行してください。

Get-Command -Noun Item

条件に一致するコマンドの一覧が表示されます。

Get-Commandコマンドレットの使い方(5)

結果は次の通りです。

PS C:\code\powershell> Get-Command -Noun Item

CommandType     Name                                               Version
-----------     ----                                               -------
Cmdlet          Clear-Item                                         7.0.0.0
Cmdlet          Copy-Item                                          7.0.0.0
Cmdlet          Get-Item                                           7.0.0.0
Cmdlet          Invoke-Item                                        7.0.0.0
Cmdlet          Move-Item                                          7.0.0.0
Cmdlet          New-Item                                           7.0.0.0
Cmdlet          Remove-Item                                        7.0.0.0
Cmdlet          Rename-Item                                        7.0.0.0
Cmdlet          Set-Item                                           7.0.0.0

-CommandTypeオプション

コマンドレットの種類を指定してコマンドを検索するには CommandType オプションを指定します。

Get-Command -CommandType 種類

指定可能な値は次の通りです。

Alias       : エイリアス
All         : すべてのコマンドの種類
Application : PATH に設定されているディレクトリにある実行可能なコマンド
Cmdlet      : コマンドレット
ExternalScript : PATH に設定されているディレクトリにある PowerShell スクリプト
Filter      : フィルター
Function    : 関数
Script      : すべてのスクリプト

それでは種類が Cmdlet で名前が Rename* のコマンドを検索します。次のように実行してください。

Get-Command Rename* -CommandType Cmdlet

条件に一致するコマンドの一覧が表示されます。

Get-Commandコマンドレットの使い方(6)

結果は次の通りです。

PS C:\code\powershell> Get-Command Rename* -CommandType Cmdlet

CommandType     Name                                               Version
-----------     ----                                               -------
Cmdlet          Rename-Computer                                    7.0.0.0
Cmdlet          Rename-Item                                        7.0.0.0
Cmdlet          Rename-ItemProperty                                7.0.0.0
Cmdlet          Rename-LocalGroup                                  1.0.0.0
Cmdlet          Rename-LocalUser                                   1.0.0.0

実行ファイルの場所を調べる

Get-Command を使用すると、実行ファイルがある場所(パス)を調べることができます。

Get-Command 実行ファイル名

※ 拡張子(.exe)は省略できます。

※ 調べることができる実行ファイルは、 PATH に設定されているディレクトリにある実行ファイルだけです。

それでは notepad.exe の場所を調べます。次のように実行してください。

Get-Command notepad | Format-Table Name, CommandType, Path -AutoSize

Get-Commandコマンドレットの使い方(7)

notepad.exe がある場所のパスを取得することができました。(デフォルトでは Path の情報が実行結果に表示されないため、 Format-Table コマンドレットを使って結果に表示される項目に Path を追加しています)。

-- --

PowerShell における Get-Command コマンドレットの使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。