PowerShell 開発のための Visual Studio Code の使用

Visual Studio Code (VS Code) は、Microsoft のクロスプラットフォームのスクリプト エディターです。 PowerShell 拡張機能と共に使用すると、充実した対話型のスクリプト編集エクスペリエンスがもたらされ、信頼性の高い PowerShell スクリプトを簡単に記述できます。 PowerShell スクリプトの記述に使用するエディターとしては、PowerShell 拡張機能を備えた Visual Studio Code をお勧めします。

次の PowerShell バージョンがサポートされています。

  • PowerShell 7.2 以降 (Windows、macOS、Linux)
  • .NET Framework 4.8 を使用した Windows PowerShell 5.1 (Windows のみ)

注意

Visual Studio Code は、Visual Studio と同じものではありません。

作業の開始

開始する前に、システムに PowerShell があることを確認します。 Windows、macOS、Linux 上の最近のワークロードに対しては、次のリンクを参照してください。

従来の Windows PowerShell ワークロードについては、「Windows PowerShell のインストール」を参照してください。

重要

Windows PowerShell ISE は引き続き Windows で使用できます。 ただし、アクティブな機能開発の対象ではなくなりました。 ISE は PowerShell 5.1 以降でのみ動作します。 Windows のコンポーネントとして、セキュリティや優先順位の高いサービスに関する修正プログラムが引き続き公式でサポートされます。 Windows から ISE が削除される予定はありません。

VS Code と PowerShell の拡張機能をインストールする

  1. Visual Studio Code をインストールします。 詳細については、「Visual Studio Code の設定」という概要ページを参照してください。

    プラットフォーム別のインストール手順があります。

  2. PowerShell 拡張機能をインストールします。

    1. コンソールに「code」と入力するか、Visual Studio Code Insiders がインストールされている場合は「code-insiders」と入力して、VS Code アプリを起動します。
    2. Windows または Linux の場合、Ctrl+P を押し、Quick Open を起動します。 macOS の場合、Cmd+P を押します。
    3. Quick Open を開き、「ext install powershell」と入力し、Enter キーを押します。
    4. サイド バーに [拡張機能] ビューが開きます。 Microsoft の PowerShell の拡張機能を選択します。
    5. Microsoft の PowerShell 拡張機能の、 [インストール] ボタンをクリックします。
    6. インストール後、 [インストール] ボタンが [再読み込み] に変わった場合は、 [再読み込み] をクリックします。
    7. VS Code が再読み込みされたら、編集が可能になります。

たとえば、新しいファイルを作成するには、[ファイル] > [新規] の順にクリックします。 保存するには、[ファイル] > [保存] の順にクリックし、HelloWorld.ps1 のようなファイル名を入力します。 ファイルを閉じるには、ファイル名の横の X をクリックします。 VS Code を終了するには、[ファイル] > [終了] の順にクリックします。

制限されているシステムへの PowerShell 拡張機能のインストール

一部のシステムは、すべてのコード署名の検証を要求するように設定されています。 次のエラーが表示される場合があります。

Language server startup failed.

この問題は、PowerShell の実行ポリシーが Windows グループ ポリシーによって設定されている場合に発生する可能性があります。 PowerShell エディター サービスおよび VS Code 用 PowerShell 拡張機能を手動で承認するには、PowerShell プロンプトを開いて次のコマンドを実行します。

Import-Module $HOME\.vscode\extensions\ms-vscode.powershell*\modules\PowerShellEditorServices\PowerShellEditorServices.psd1

"この信頼されていない発行元からのソフトウェアを実行しますか?" というメッセージが表示されます。A キーを押してファイルを実行します。 次に、VS Code を開き、PowerShell 拡張機能が正しく機能していることを確認します。 まだ問題が解決しない場合は、GitHub の Issue でお知らせください。

拡張機能で使用する PowerShell のバージョンを選択

Windows PowerShell と PowerShell がインストールされている場合、PowerShell の拡張機能を、PowerShell の特定のバージョンで使用できるようになりました。 この機能では、異なるオペレーティング システム上のいくつかのよく知られているパスを検索して、PowerShell のインストールが検出されます。

バージョンは次の手順で選択します。

  1. Windows または Linux の場合、Ctrl+Shift+P を使用してコマンド パレットを開きます。 macOS の場合、Cmd+Shift+P を使用します。
  2. "セッション" を検索します。
  3. [PowerShell: Show Session Menu]\(PowerShell: セッション メニューを表示\) をクリックします。
  4. 一覧から、使用する PowerShell のバージョンを選択します。

PowerShell を一般的ではない場所にインストールしている場合、最初にそれがセッション メニューに表示されない場合があります。 次のように、独自のカスタム パスを追加して、セッション メニューを拡張できます。

PowerShell セッション メニューには、ステータス バーの右下隅にある {} アイコンからアクセスすることもできます。 このアイコンをポイントまたは選択すると、セッション メニューへのショートカットと小さなピン アイコンが表示されます。 ピン アイコンを選ぶと、バージョン番号がステータス バーに追加されます。 バージョン番号は、クリック回数の少ないセッション メニューへのショートカットです。

注意

バージョン番号をピン留めすると、1.65 より前のバージョンの VS Code での拡張機能の動作がレプリケートされます。 VS Code の 1.65 リリースでは、PowerShell 拡張機能で使われる API が変更され、言語拡張機能のステータス バーが標準化されました。

Visual Studio Code の構成設定

まず、VS Code の設定を変更する方法に慣れていない場合は、Visual Studio Code の設定に関するドキュメントをお読みになることをお勧めします。

ドキュメントを読み終えたら、settings.json で構成設定を追加できます。

{
    "editor.renderWhitespace": "all",
    "editor.renderControlCharacters": true,
    "files.trimTrailingWhitespace": true,
    "files.encoding": "utf8bom",
    "files.autoGuessEncoding": true
}

これらの設定がすべてのファイルの種類に影響しないようにする場合、VS Code では言語ごとに構成することもできます。 [<language-name>] フィールドに設定を指定して、言語固有の設定を作成します。 次に例を示します。

{
    "[powershell]": {
        "files.encoding": "utf8bom",
        "files.autoGuessEncoding": true
    }
}

ヒント

VS Code でのファイル エンコードについて詳しくは、ファイルのエンコードの理解に関する記事をご覧ください。 また、PowerShell 編集用に VS Code を構成する方法に関するその他のヒントを、VS Code で ISE のエクスペリエンスをレプリケートする方法に関するページでご確認ください。

セッション メニューへの独自の PowerShell のパスの追加

Visual Studio Code 設定: powershell.powerShellAdditionalExePaths を使用して、セッション メニューに他の PowerShell の実行パスを追加できます。

これを行うには、GUI を使用します。

  1. コマンド パレットで、[ユーザー設定を開く] を検索して選択します。 または、Windows または Linux のキーボード ショートカット Ctrl+, を使用します。 macOS の場合、Cmd+, を使用します。
  2. [設定] エディターで、PowerShell の追加の実行パスを検索します。
  3. [Add Item]\(項目の追加\) をクリックします。
  4. [キー] ([項目] の下) には、この追加の PowerShell インストール用に選択した名前を指定します。
  5. [値] ([値] の下) には、実行可能ファイル自体への絶対パスを指定します。

パスは必要な数だけ追加できます。 追加した項目がセッション メニューに表示され、指定したキーが名前として表示されます。

または、settings.json 内のオブジェクト powershell.powerShellAdditionalExePaths にキーと値のペアを追加することもできます。

{
    "powershell.powerShellAdditionalExePaths": {
        "Downloaded PowerShell": "C:/Users/username/Downloads/PowerShell/pwsh.exe",
        "Built PowerShell": "C:/Users/username/src/PowerShell/src/powershell-win-core/bin/Debug/net6.0/win7-x64/publish/pwsh.exe"
    },
}

注意

この拡張機能の 2022.5.0 より前のバージョンでは、この設定は必須のキー exePath および versionName を持つオブジェクトの一覧でした。 破壊的変更が導入され、GUI を介した構成をサポートできるようになりました。 以前にこの設定を構成していた場合は、新しい形式に変換してください。 これで、versionName に指定される値は [キー] となり、exePath に指定される値は [値] となりました。 これは、値をリセットし、[設定] インターフェイスを使用することで、より簡単に行うことができます。

PowerShell の既定のバージョンを設定するには、セッション メニューに表示されるテキストに値 powershell.powerShellDefaultVersion を設定します (キーにも使用されるテキスト)。

{
    "powershell.powerShellAdditionalExePaths": {
        "Downloaded PowerShell": "C:/Users/username/Downloads/PowerShell/pwsh.exe",
    },
    "powershell.powerShellDefaultVersion": "Downloaded PowerShell",
}

この設定を構成したら、VS Code を再起動するか、コマンド パレットから現在の VS Code のウィンドウを再度読み込み、「Developer: Reload Window」と入力します。

これでセッション メニューを開くと、追加した PowerShell のインストールが表示されます。

ヒント

これは、ソースから PowerShell をビルドした場合、PowerShell のローカル ビルドをテストする優れた方法です。

Visual Studio Code を使用したデバッグ

ワークスペースを使用しないデバッグ

VS Code バージョン 1.9 (以降) では、PowerShell スクリプトを含むフォルダーを開かずに PowerShell スクリプトをデバッグできます。

  1. [ファイル] > [ファイルを開く] を選んで、PowerShell スクリプト ファイルを開きます。
  2. ブレークポイントの設定 - 行を選択して、F9 キーを押します。
  3. F5 キーを押してデバッグを開始します。

[デバッグ アクション] ウィンドウが表示されます。ここでは、デバッガーを中断したり、デバッグをステップ実行、再開、停止したりできます。

ワークスペースを使用したデバッグ

ワークスペースを使用したデバッグとは、 [ファイル] メニューの [フォルダーを開く] を使用して開いたフォルダーのコンテキストでデバッグを行うことを言います。開いたフォルダーは、通常は PowerShell プロジェクトのフォルダーまたは Git リポジトリのルートです。 ワークスペースを使用したデバッグでは、現在開いているファイルをデバッグする以外に、複数のデバッグ構成を定義できます。

デバッグ用の構成ファイルを作成するには、次の手順に従います。

  1. Windows または Linux の場合、Ctrl+Shift+D を押し、 [デバッグ] ビューを開きます。 macOS の場合、Cmd+Shift+D を押します。

  2. launch.json ファイルの作成リンクをクリックします。

  3. [環境を選択] プロンプトで、 [PowerShell] を選択します。

  4. 使用するデバッグの種類を選択します。

    • 現在のファイルを起動 - 現在アクティブなエディター ウィンドウのファイルを起動してデバッグします
    • スクリプトを起動 - 指定したファイルまたはコマンドを起動してデバッグします
    • 対話型セッション - 統合コンソールから実行されたコマンドをデバッグします
    • アタッチ - 実行中の PowerShell ホスト プロセスにデバッガーをアタッチします

VS Code では、デバッグ構成を格納するディレクトリとファイル .vscode\launch.json が、お使いのワークスペース フォルダーのルートに作成されます。 ファイルが Git リポジトリにある場合は、通常、launch.json ファイルをコミットすることになるでしょう。 launch.json ファイルの内容:

{
  "version": "0.2.0",
  "configurations": [
      {
          "type": "PowerShell",
          "request": "launch",
          "name": "PowerShell Launch (current file)",
          "script": "${file}",
          "args": [],
          "cwd": "${file}"
      },
      {
          "type": "PowerShell",
          "request": "attach",
          "name": "PowerShell Attach to Host Process",
          "processId": "${command.PickPSHostProcess}",
          "runspaceId": 1
      },
      {
          "type": "PowerShell",
          "request": "launch",
          "name": "PowerShell Interactive Session",
          "cwd": "${workspaceRoot}"
      }
  ]
}

このファイルは一般的なデバッグ シナリオです。 エディターでこのファイルを開いた場合、 [構成の追加] ボタンが表示されます。 このボタンをクリックすることで、PowerShell デバッグ構成をさらに追加できます。 追加すると便利な構成の 1 つは、 [PowerShell: Launch Script]\(PowerShell: 起動スクリプト\) です。 この構成では、エディターでどのファイルがアクティブであるかに関係なく、F5 キーを押すたびに使用される省略可能な引数を含むファイルを指定できます。

デバッグ構成が確立されたら、デバッグ セッション中に使用する構成を選択できます。 [デバッグ] ビューのツール バーでデバッグ構成ドロップダウンから構成を選択します。

PowerShell 拡張機能のトラブルシューティング

PowerShell スクリプト開発での VS Code の使用で問題が発生した場合は、GitHub 上のトラブルシューティング ガイドを参照してください。

有用なリソース

VS Code で PowerShell の拡張機能の使用開始するために役立つビデオとブログ記事を、次にいくつか示します。

ビデオ

ブログ記事

PowerShell 拡張機能プロジェクトのソース コード

PowerShell の拡張機能のソース コードは、GitHub にあります。

共同作成に関心がある場合は、ぜひ pull request をご活用ください。 GitHub 上の開発者向けドキュメントを参照して、作業を開始してください。