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
コマンドの一覧が表示されます。
非常に長いので一部を抜粋すると次のようになります。
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.exe や ping.exe なども含まれます。
では実際に試してみます。次のように実行してください。
Get-Command *
コマンドの一覧を取得することができました。
非常に長いので一部を抜粋すると次のようになります。
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-*
条件に一致するコマンドの一覧が表示されます。
非常に長いので一部を抜粋すると次のようになります。
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
条件に一致するコマンドの一覧が表示されます。
非常に長いので一部を抜粋すると次のようになります。
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
条件に一致するコマンドの一覧が表示されます。
結果は次の通りです。
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
条件に一致するコマンドの一覧が表示されます。
結果は次の通りです。
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
notepad.exe がある場所のパスを取得することができました。(デフォルトでは Path の情報が実行結果に表示されないため、 Format-Table コマンドレットを使って結果に表示される項目に Path を追加しています)。
-- --
PowerShell における Get-Command コマンドレットの使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。