Visual Studio Code を使用したリモート編集およびデバッグ

ISE に精通していれば、統合コンソールから psedit file.ps1 を実行してファイル (ローカルまたはリモート) を ISE で開けることをご存じではないでしょうか。

この機能は、VSCode 用の PowerShell 拡張機能でも使用できます。 このガイドではそれを行う方法を説明します。

前提条件

このガイドでは、次のことを前提としています。

  • アクセスできるリモート リソース (例: VM、コンテナー)
  • その上で実行する PowerShell およびホスト マシン
  • VSCode および VSCode 用 PowerShell 拡張機能

この機能は、Windows PowerShell と PowerShell Core で動作します。

また、この機能は、WinRM、PowerShell Direct、または SSH でリモート マシンに接続しているときにも動作します。 SSH を使用したいが、Windows を使用している場合は、SSH の Win32 バージョンを確認してください。

重要

Open-EditorFile および psedit コマンドは、VSCode 用の PowerShell 拡張機能によって作成された PowerShell 統合コンソールでのみ機能します。

使用例

これらの例は、MacBook Pro から Azure で実行されている Ubuntu VM に対するリモート編集およびデバッグを示しています。 プロセスは Windows 上と同じです。

Open-EditorFile でのローカル ファイル編集

VSCode 用 PowerShell 拡張機能を開始し、PowerShell 統合コンソールを開くと、「Open-EditorFile foo.ps1」または「psedit foo.ps1」と入力してエディターでローカル環境の foo.ps1 ファイルを開くことができます。

ローカルに動作する Open-EditorFile foo.ps1

注意

ファイル foo.ps1 は既に存在している必要があります。

そこから次のことができます。

  • 余白にブレークポイントを追加します

    余白へのブレークポイントの追加

  • F5 キーを押して PowerShell スクリプトをデバッグします。

    ローカルの PowerShell スクリプトのデバッグ

デバッグ中に、デバッグ コンソールと対話し、左側でスコープ内の変数を確認し、他のすべての標準デバッグ ツールを使用できます。

Open-EditorFile でのリモート ファイル編集

次に、リモート ファイルを編集してデバッグします。 手順はほぼ同じですが、最初に行う必要があることが 1 つだけあります。リモート サーバーへの PowerShell セッションに入ります。

それを行うためのコマンドレットがあります。 Enter-PSSession です。

コマンドレットの簡単な説明は次のとおりです。

  • Enter-PSSession -ComputerName foo は WinRM でセッションを開始します
  • Enter-PSSession -ContainerId fooEnter-PSSession -VmId foo は PowerShell Direct でセッションを開始します
  • Enter-PSSession -HostName foo は SSH でセッションを開始します

詳細については、Enter-PSSession のドキュメントを参照してください。

ここでは macOS から Azure の Ubuntu VM に移行するので、リモート処理に SSH を使用しています。

まず、統合コンソールで Enter-PSSession を実行します。 プロンプトの左側に [<hostname>] が表示されたら、リモート セッションに接続しています。

Enter-PSSession を呼び出してリモート セッションに接続します

これで、ローカル スクリプトを編集する場合と同じ手順を実行できるようになりました。

  1. Open-EditorFile test.ps1 または psedit test.ps1 を実行してリモートの test.ps1 ファイルを開きます

リモート システムでスクリプトを編集します

  1. ファイルを編集し、ブレークポイントを設定します

    ブレークポイントを編集して設定します

  2. リモート ファイルのデバッグを開始します (F5)

    リモート スクリプトのデバッグ

何か問題があれば、GitHub リポジトリで問題を開いてください。