前回、前々回に続いて今回はPowerShell拡張で利用可能なコマンドをまとめました。
各コマンドがどのバージョンから利用可能になったか調査するのが難しい部分があったため、単純に現在最新のバージョン(Ver.0.11)で利用可能なものをリストアップする形としています。
1. コマンドパレットで使えるコマンド
最初にコマンドパレットで利用可能なコマンドについて記載します。
コマンドパレットはCtrl+Shift+Pで開くことができ、Powershell:で始まるコマンドがPowerShell拡張で使えるコマンドになります。

以下に一覧を記載します。
| コマンド | 内容 |
|---|---|
| PowerShell: Create New Project from Plaster Template | Plasterを使いテンプレートからプロジェクトを生成します。 |
| PowerShell: Expand Alias (Shift+Alt+E) | スクリプト中のエイリアスを展開します。 |
| PowerShell: Find/Install PowerShell Modules from the gallery (Ctrl+K Ctrl+F) | PowerShell Galleryからモジュールを検索しインストールします。 |
| PowerShell: Get online help for Commands (Ctrl+F1) | 選択されたコマンドのオンラインヘルプを表示します。 |
| PowerShell: Open current file in PowerShell ISE (Ctrl+Shift+I) | 現在のファイルをPowerShell ISEで開きます。 |
| PowerShell: Open Examples Folder | Examplesフォルダを開きます。 |
| PowerShell: Open PowerShell Extension logs Folder | PowerShell拡張のログフォルダを開きます。 |
| PowerShell: Restart Current Session | 現在のPowerShell Sessionを再起動します。 |
| PowerShell: Run selecton (F8) | 選択部分を実行します。 |
| PowerShell: Select PSScriptAnalyzer Rules | PSScriptAnalyzerで適用するルールを設定します。 |
| PowerShell: Show additional commands from PowerShell modules | PowerShell拡張に追加したコマンドを表示します。 |
| PowerShell: Show Integrated Console | Integrated Consoleを表示します。 |
| PowerShell: Open PowerShell Extension logs | PowerShell拡張のログを出力に表示します。 |
| PowerShell: Open Show Session Menu | セッションメニューを表示します。 |
PowerShell: Create New Project from Plaster Template
Plasterを使いテンプレートからプロジェクトを生成します。
Plasterでは独自のテンプレートを作ることができますが、現時点ではNew PowerShell Manifest Moduleというマニフェストモジュールを作るテンプレートのみ登録されています。

動作を確認してみたところ、Integrated Consoleとの相性が悪いのか、このコマンドを実行してもキャレットの制御が上手くいかずモジュールの生成がかなり面倒なことになっていました…
これはそのうち改善されると思います。
PowerShell: Expand Alias
スクリプト中のエイリアスを展開し元の関数に戻してくれます。
例えば、
echo "Hello World"
というスクリプトであれば、
Write-Output "Hello World"
と変換してくれます。
非常に便利な機能な上Shift+Alt+Eのショートカットキーも割り当てられていますので覚えておくとスクリプトの作成が捗るでしょう。
PowerShell: Find/Install PowerShell Modules from the gallery
PowerShell Galleryからモジュールを検索しインストールすることができます。

Install-Module -Name [モジュール名] -Scope CurrnetUser
と同等の機能ですが、一旦すべてのモジュール情報をローカルにキャッシュしている様で初回実行時はレスポンスが非常に悪いです…
率直に言ってこれならIntegrated Consoleから直接Find-ModuleやInstall-Moduleを実行した方がマシだと思います。
PowerShell: Get online help for Commands
選択されたコマンドのオンラインヘルプ(MSDN)を表示します。
残念ながらブラウザを起動して該当のページを開いてくれるだけで、PowerShell ISEのコマンドアドオンの様に至れり尽くせりな感じではないです…
PowerShell: Open current file in PowerShell ISE
現在のファイルをPowerShell ISEで開きます。
機能としては面白いですが、正直使いどころがわかりません…
PowerShell: Open Examples Folder
新しいVisual Studio Codeを起動し、Examplesフォルダを開きます。

PowerShell: Open PowerShell Extension logs Folder
新しいVisual Studio Codeを起動し、PowerShell拡張のログフォルダを開きます。

PowerShell: Restart Current Session
現在のPowerShellセッションを再起動します。
このコマンドは実質PowerShell拡張の再起動コマンドとなります。
前回触れたとおり、powershell.startAutomatically=falseの場合はこのコマンドを使ってPowerShell拡張を有効にする必要があります。
PowerShell: Run selecton
ファイル中で選択された部分を実行します。
このコマンドはコマンドパレットからよりF8キーを押して実行する方が多いかと思います。
PowerShell: Select PSScriptAnalyzer Rules
PSScriptAnalyzerで適用するルールを設定します。

チェックを付けたルールが有効になりconfirmをクリックすると反映されます。
この設定は永続化しませんので、永続化させたい場合はpowershell.scriptAnalysis.settingsPathパラメーターに独自の設定ファイルを記述する必要があります。
PowerShell: Show additional commands from PowerShell modules
PowerShell拡張に追加したコマンドを表示・実行します。
ここでコマンドを表示するには、あらかじめRegister-EditorCommandを使いコマンドを追加しておく必要があります。
細かい手順については Extending the Host Editor を参考にしてください。*1
PowerShell: Show Integrated Console
Integrated Consoleを表示します。
おおむねCtrl+@と同等の動作をしますが、細かい違いとしてはIntegrated Terminalに複数の端末がある場合にIntegrated Consoleを選択して表示してくれます。
(Ctrl+@の場合は直近に開かれていた端末を表示するだけです)
PowerShell: Open PowerShell Extension logs
PowerShell拡張のログを出力に表示します。

PowerShell: Open Show Session Menu
セッションメニューを表示します。

セッションメニューでは、
- Restart Current Session
- Open Session Logs Folder
コマンドと、このメニューにのみ存在する
- Switch to Windows PowerShell [(x86)|(x64)]
コマンドが提供されています。
Switch to Windows PowerShellコマンドは意外と使いどころがありそうなので独立したコマンドにしてほしい感じです。
【2017/07/13追記】
Ver.1.2.0よりこのメニューが拡張され、Switch to Windows PowerShell [(x86)|(x64)]に加え、追加でインストールされたPowerShell*2に切り替えることが出来る様になりました。

2. Integrated Consoleで使えるコマンド
- 2017/07/13 Ver.1.4.0で追加されたコマンドに対する説明を追記
続けてIntegrated Consoleで使える独自コマンド*3について説明します。
現時点ではまだpseditの1コマンドしかありません。
| コマンド | 内容 |
|---|---|
| psedit | 指定したファイルをVisual Studio Codeで表示します。 |
| Out-CurrentFile | フォーマットされた文字列を現在開いているファイルに出力します。 |
| New-VSCodeHtmlContentView | 新しいHTMLコンテンツビューを作成します。 |
| Set-VSCodeHtmlContentView | 指定されたHTMLコンテンツビューにHTMLを上書きします。 |
| Write-VSCodeHtmlContentView | 指定されたHTMLコンテンツビューにHTMLを追記します。 |
| Show-VSCodeHtmlContentView | 指定されたHTMLコンテンツビューをアクティブにして表示します。 |
| Close-VSCodeHtmlContentView | 指定されたHTMLコンテンツビューを非表示にします。 |
psedit
pseditは指定したファイルをVisual Studio Codeで開くコマンドです。
PowerShell ISEに同名のコマンドが存在しますが、Ver.0.11になってPowerShell拡張にも実装されました。
PowerShell ISEとはパラメーター名が異なり-FilePathsとなっています。*4
実行例は以下の様な感じです。
> psedit -FilePaths .\hello.ps1, .\world.ps1

Out-CurrentFile (Ver.1.4.0より利用可)
コマンドなどを実行した結果の文字列を現在開いているファイルに文字列として出力します。
下の画像を見ていただければイメージは一発で掴めるかと思います。
実行例)
ls c:\ -Directory | select -ExpandProperty name | Out-CurrentFile

New-VSCodeHtmlContentView (Ver.1.4.0より利用可)
Ver.1.4.0より、HTMLコンテンツビュー(チェンジログなどの表示に使われているHTML形式のビュー)を扱うためのコマンドレットが追加されました。
現状これらのコマンドが何に使えるのかといえば答えに窮するのですが、PowerShell TeamとしてもUI拡張のための機能をとりあえず作ってみたといった感じの様です。
そんな感じなのでこのHTMLコンテンツビューに関する機能については今後いろいろと変化するものと予想されます。
で、このNew-VSCodeHtmlContentViewでは新しいHTMLコンテンツビューを作成します。
次に説明するSet-VSCodeHtmlContentView、Write-VSCodeHtmlContentViewと合わせて、GitHubに記載されている例を見ればイメージは掴めるかと思います。
実行例)
$view = New-VSCodeHtmlContentView -Title "My Custom View" -ShowInColumn One Set-VSCodeHtmlContentView -View $view -Content "<h1>Hello world!</h1>" Write-VSCodeHtmlContentView $view -Content "<b>I'm adding new content!</b><br />"
(上図は https://github.com/PowerShell/vscode-powershell/releases より)
ちなみに、現時点でHTMLコンテンツビューにJavaScriptを差し込むことはできません。
Set-VSCodeHtmlContentView (Ver.1.4.0より利用可)
指定されたHTMLコンテンツビューにHTMLを上書きします。
実行例は上記参照。
Write-VSCodeHtmlContentView (Ver.1.4.0より利用可)
指定されたHTMLコンテンツビューにHTMLを追記します。
実行例は上記参照。
Show-VSCodeHtmlContentView (Ver.1.4.0より利用可)
指定されたHTMLコンテンツビューをアクティブにして表示します。
実行例)
Show-VSCodeHtmlContentView -View $view
Close-VSCodeHtmlContentView (Ver.1.4.0より利用可)
指定されたHTMLコンテンツビューを非表示にします。
実行例)
Close-VSCodeHtmlContentView -View $view
最後に
とりあえずこんな感じです。
率直に言ってあまりぱっとしないコマンドもありますが、便利なコマンドもありますので覚えておいて損はないかと思います。