しばたテックブログ

PowerShellを中心に気分で書いている技術ブログです。

Visual Studio Code PowerShell拡張で使えるコマンドまとめ

前回前々回に続いて今回はPowerShell拡張で利用可能なコマンドをまとめました。

各コマンドがどのバージョンから利用可能になったか調査するのが難しい部分があったため、単純に現在最新のバージョン(Ver.0.11)で利用可能なものをリストアップする形としています。

1. コマンドパレットで使えるコマンド

最初にコマンドパレットで利用可能なコマンドについて記載します。

コマンドパレットはCtrl+Shift+Pで開くことができ、Powershell:で始まるコマンドがPowerShell拡張で使えるコマンドになります。

f:id:stknohg:20170328210828p:plain

以下に一覧を記載します。

コマンド 内容
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というマニフェストモジュールを作るテンプレートのみ登録されています。

f:id:stknohg:20170328020411p:plain

動作を確認してみたところ、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からモジュールを検索しインストールすることができます。

f:id:stknohg:20170328022653p:plain

Install-Module -Name [モジュール名] -Scope CurrnetUser

と同等の機能ですが、一旦すべてのモジュール情報をローカルにキャッシュしている様で初回実行時はレスポンスが非常に悪いです…
率直に言ってこれならIntegrated Consoleから直接Find-ModuleInstall-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フォルダを開きます。

f:id:stknohg:20170328022410p:plain

PowerShell: Open PowerShell Extension logs Folder

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

f:id:stknohg:20170328023020p:plain

PowerShell: Restart Current Session

現在のPowerShellセッションを再起動します。
このコマンドは実質PowerShell拡張の再起動コマンドとなります。

前回触れたとおり、powershell.startAutomatically=falseの場合はこのコマンドを使ってPowerShell拡張を有効にする必要があります。

PowerShell: Run selecton

ファイル中で選択された部分を実行します。

このコマンドはコマンドパレットからよりF8キーを押して実行する方が多いかと思います。

PowerShell: Select PSScriptAnalyzer Rules

PSScriptAnalyzerで適用するルールを設定します。

f:id:stknohg:20170328023728p:plain

チェックを付けたルールが有効になり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拡張のログを出力に表示します。

f:id:stknohg:20170328024640p:plain

PowerShell: Open Show Session Menu

セッションメニューを表示します。

f:id:stknohg:20170328024754p:plain

セッションメニューでは、

  • 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に切り替えることが出来る様になりました。

f:id:stknohg:20170713190247p:plain

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

f:id:stknohg:20170328214905p:plain

Out-CurrentFile (Ver.1.4.0より利用可)

コマンドなどを実行した結果の文字列を現在開いているファイルに文字列として出力します。
下の画像を見ていただければイメージは一発で掴めるかと思います。

実行例)

ls c:\ -Directory | select -ExpandProperty name | Out-CurrentFile

f:id:stknohg:20170713212416p:plain

New-VSCodeHtmlContentView (Ver.1.4.0より利用可)

Ver.1.4.0より、HTMLコンテンツビュー(チェンジログなどの表示に使われているHTML形式のビュー)を扱うためのコマンドレットが追加されました。

現状これらのコマンドが何に使えるのかといえば答えに窮するのですが、PowerShell TeamとしてもUI拡張のための機能をとりあえず作ってみたといった感じの様です。
そんな感じなのでこのHTMLコンテンツビューに関する機能については今後いろいろと変化するものと予想されます。

で、このNew-VSCodeHtmlContentViewでは新しいHTMLコンテンツビューを作成します。
次に説明するSet-VSCodeHtmlContentViewWrite-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://user-images.githubusercontent.com/79405/27394133-f96c38cc-565f-11e7-8102-a3727014ea5a.GIF

(上図は 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

最後に

とりあえずこんな感じです。

率直に言ってあまりぱっとしないコマンドもありますが、便利なコマンドもありますので覚えておいて損はないかと思います。

*1:こちらについては時間をとって別記事を書こうと思います。

*2:基本的にはPowerShell 6.0の各バージョンになるはずですが…

*3:というか関数ですね…

*4:PowerShell ISEのpseditのパラメーター名は-filenamesです。