PowershellのことはPowershellで済ませてみる
Powershellを使っていて、コマンドレットを忘れてしまったり、どんなコマンドレットがあるか調べたいと思うことがある。そういうときは、ネットで調べるのもいいが、Powershellの機能を使って調べることもできる。
PowershellのことをPowershellで調べるには、以下のような方法が役に立つ。
- 入力補完
- コマンドレットの検索
- ヘルプの利用
入力補完
調べるというと語弊があるかもしれないが、Powershellには、途中まで入力したコマンドレットを補完する機能がある。Linuxのシェルと同様の機能だ。
- コマンドレットを途中まで入力して Tab を入力
- コマンドレットを途中まで入力して Ctrl + Space を入力
この機能を使えば、コマンドレットを入力するスピードを上げたり、綴りまで正確におぼえなくてもコマンドレットを入力できるようになる。補完の機能は、コマンドやオプションの入力、ファイルパス、定数の選択に使用できる。
コマンドレットを途中まで入力して Tab を入力すると、途中まで入力したコマンドが補完される。さらに Tab を押すと、別の候補が表示される。表示した候補を戻りたいときは、Shift + Tab を押す。
PS C:\Users\Main> Get-help Get-Chil #ここまで入力してTabを入力
PS C:\Users\Main> Get-help Get-ChildItem #コマンドが補完される
Ctrl + Space で行う補完は、補完の候補が全て表示され、矢印キーで候補を選択することができる。オプションの補完を行った場合、一番下にオプションの形式や指定できる値等の情報が表示される。
PS > Get-Net #ここまで入力してCtrl + Spaceを入力
PS > Get-Net6to4Configuration #コマンドの候補が表示され選択できる
Get-Net6to4Configuration Get-NetIPAddress
Get-NetAdapter Get-NetIPConfiguration
・・・・・・・
PS > Get-ChildItem - # ここまで入力してCtrl + Spaceを入力
PS > Get-ChildItem -Path # オプションの候補が表示されて選択することができる。
Path Depth File ErrorAction OutVariable
LiteralPath Force Hidden WarningAction
[string[]] Path # さらに一番下に、オプションで指定できる値等の情報が表示される
コマンドレットの検索
Get-Command を使うとコマンドレットが検索できる。Get-Command のパラメータにコマンドレット名を入れると、コマンドレットの名前が表示される。
PS> get-command Get-ChildItem
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-ChildItem 3.1.0.0 Microsoft.PowerShell.Management
この出力だけ見ると、何の役に立つコマンドレットか全く理解できない。Get-Commmandのパラメータには、*(ワイルドカード)が指定できる。*を指定することで、コマンドレットを検索することができる。
PS > get-command Get-C*dItem
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-ChildItem 3.1.0.0 Microsoft.PowerShell.Management
Powershell のコマンドレットは、<動詞>-<名詞> という構造になっている。Get-Command で、-Noun を指定すれば名詞部分、-Verb を指定すれば、動詞部分を指定して検索できる。公開されているモジュールのコマンドレットでは、名詞部分の頭にモジュールを判別できるような文字列を付けていることが多い。名前からでもコマンドレットが調べられるように工夫されている。
# 名前で検索する場合
PS > Get-Command -Noun Item
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Clear-Item 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Copy-Item 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Get-Item 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Invoke-Item 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Move-Item 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet New-Item 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Remove-Item 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Rename-Item 3.1.0.0 Microsoft.PowerShell.Management
Cmdlet Set-Item 3.1.0.0 Microsoft.PowerShell.Management
# 動詞部分も併せて絞り込む
PS > Get-Command -Noun Item -Verb Get
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Item 3.1.0.0 Microsoft.PowerShell.Management
-Module でモジュールを指定すれば、モジュールで提供されているコマンドレットを確認することができる。これにより、ネットで情報の少ないようなモジュールでも、どのようなコマンドが提供されているかを知ることができる。
# Selenium のモジュールをインストールした後に使えるコマンドレットを調べる。
> Get-Command -Module Selenium
CommandType Name Version Source
----------- ---- ------- ------
Alias Enter-SeUrl 3.0.1 Selenium
Alias Find-SeElement 3.0.1 Selenium
Alias Start-SeLegacyEdge 3.0.1 Selenium
Function Clear-SeAlert 3.0.1 Selenium
Function Get-SeCookie 3.0.1 Selenium
.......
コマンドレットの情報を調べる
コマンドレットの情報は Get-Help で調べることができる。もしくは、コマンドレットに -? のパラメータを付けると、コマンドレットの情報を調べる事ができる。ただし英語だ。
コマンドレットのパラメータ -Detailed や -Full を使うと、表示させる情報量や内容を指定することができる。
PS C:\Users\Main> Get-help Get-ChildItem -Parameter * #全てのパラメータの情報を表示する
-Attributes <System.Management.Automation.FlagsExpression`1[System.IO.FileAttributes]>
{{Fill Attributes Description}}
必須 false
位置 named
既定値 None
パイプライン入力を許可する False
ワイルドカード文字を許可する false
-Depth <UInt32>
{{Fill Depth Description}}
・
・
・
英語ができる人なら、非常に便利な機能だろう。日本語がメインの人であれば、正直ネットで調べた方が早い。使用例の参照であれば、見ているだけで何となく使い方をイメージすることができる。
ネットで検索するのが億劫であれば、Get-Help に -online のパラメータを付けると、ブラウザからネット上のヘルプを表示してくれる。
このヘルプだが、自分が Function でコマンドレットを書く時も、コメントベースのヘルプを埋め込むことができる。