🚀 在 VS Code 中取得

Visual Studio Code 中的 PowerShell

PowerShell 是一種以工作為基礎的命令列 Shell 和指令碼語言,建置於 .NET 之上,為任何平台上的系統管理員提供強大的工具組。

適用於 Visual Studio Code (VS Code) 的 Microsoft PowerShell 擴充功能為 PowerShell 提供豐富的語言支援和功能,例如語法完成、定義追蹤和程式碼檢查。此擴充功能應可在任何支援 VS Code 本身和 PowerShell Core 7.2 或更高版本的地方運作 支援。對於 Windows PowerShell,僅支援 5.1 版,且僅在盡力而為的基礎上提供支援。PowerShell Core 6、7.0 和 7.1 已終止支援。我們測試下列組態

  • Windows Server 2022 搭配 Windows PowerShell 5.1 和 PowerShell 7.2
  • Windows Server 2019 搭配 Windows PowerShell 5.1 和 PowerShell 7.2
  • macOS 11 搭配 PowerShell Core 7.2
  • Ubuntu 20.04 搭配 PowerShell Core 7.2

安裝 PowerShell 擴充功能

PowerShell 擴充功能可以從 Visual Studio Code Marketplace 安裝,方法是按一下 安裝按鈕。您也可以從 VS Code 內安裝 PowerShell 擴充功能,方法是使用鍵盤快速鍵 ⇧⌘X (Windows、Linux Ctrl+Shift+X) 開啟 擴充功能 檢視,輸入 PowerShell,然後選取 PowerShell 擴充功能

PowerShell extension

主要功能

偵錯

PowerShell 擴充功能使用 VS Code 的內建 偵錯介面,以允許偵錯 PowerShell 指令碼和模組。如需有關偵錯 PowerShell 的詳細資訊,請參閱 使用 VS Code

多版本支援

您可以設定 PowerShell 擴充功能,以使用安裝在您電腦上的任何支援 PowerShell 版本,方法是依照 這些指示 進行操作。

或從命令面板執行 PowerShell: 顯示工作階段功能表 命令 (⇧⌘P (Windows、Linux Ctrl+Shift+P))。

CodeLens 支援

CodeLens 是 VS Code 的一項功能,可提供在原始碼中顯示的可操作內容相關資訊。

CodeLens 功能包括

  • Pester 執行測試偵錯測試

    Pester CodeLens Integration

  • Pester 符號支援

    CodeLens Pester Symbol Support

  • 函式、變數、類別和其他符號參考

    CodeLens 參考支援會顯示符號在程式碼中被參考的次數,並允許您跳至特定的參考。

    CodeLens Function Reference Support

PSScriptAnalyzer 整合

PSScriptAnalyzer 是一個 PowerShell 模組,可為模組和指令碼提供靜態原始碼檢查器。PSScriptAnalyzer 具有驗證 PowerShell 程式碼品質的規則。這些規則是以 PowerShell 團隊和社群所識別的 PowerShell 最佳做法為基礎。PSScriptAnalyzer 會產生診斷記錄 (錯誤和警告),以通知使用者潛在的程式碼瑕疵,並建議可能的改進方案。

PowerShell 擴充功能預設包含 PSScriptAnalyzer,並自動對您在 VS Code 中編輯的 PowerShell 指令碼檔案執行分析。

PSScriptAnalyzer 隨附一組內建規則,可檢查 PowerShell 原始碼的各個層面,例如未初始化變數的存在、PSCredential 類型的使用、Invoke-Expression 的使用等等。此模組也允許您包含或排除特定規則。

若要停用 PSScriptAnalyzer,請開啟您的設定 (⌘, (Windows、Linux Ctrl+,)),瀏覽 擴充功能,選取 PowerShell 擴充功能,然後取消選取 指令碼分析:啟用 (powershell.scriptAnalysis.enable) 的核取方塊。

PSScriptAnalyzer Settings

PSScriptAnalyzer 也提供程式碼格式化。您可以使用 格式化文件 命令或 (⇧⌥F (Windows Shift+Alt+F、Linux Ctrl+Shift+I)) 鍵盤快速鍵叫用自動文件格式化。

Pester 整合

Pester 是一個用於執行單元測試的架構,Windows PowerShell 5.1 隨附預先安裝的 Pester 3.40。若要更新 Pester 或在其他平台上安裝最新版本,請依照 Pester 安裝指示 進行操作。

Plaster 整合

Plaster 是一個以範本為基礎的檔案和專案產生器,以 PowerShell 撰寫。其目的是簡化 PowerShell 模組專案、Pester 測試、DSC 設定等的建立。

PowerShell 擴充功能允許使用命令面板中的 PowerShell: 從 Plaster 範本建立新專案 命令 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 建立新的 Plaster 專案。

Plaster Project

PowerShell 擴充功能設定

您可以從 檔案 > 喜好設定 > 設定 功能表項目自訂 VS Code 設定

您也可以選取位於活動列左下角的齒輪圖示。

codeGear

您也可以使用鍵盤快速鍵 ⌘, (Windows、Linux Ctrl+,) 開啟您的設定。您仍然可以使用命令面板中的 喜好設定:開啟使用者設定 (JSON) 命令 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 或透過變更 "workbench.settings.editor" 設定的預設設定編輯器來開啟 settings.json 檔案。

前往 使用者和工作區設定 以取得有關設定 VS Code 設定的詳細資訊。

Types.ps1xml 和 Format.ps1xml 檔案

PowerShell .ps1xml 檔案用於擴充類型系統和定義輸出格式。如需有關這些檔案的詳細資訊,請參閱有關 Types.ps1xmlFormat.ps1xml 的官方 PowerShell 文件。您可以透過安裝 Red Hat 的 XML 擴充功能,在撰寫 .ps1xml 檔案時取得 IntelliSense 功能。安裝後,將此組態新增至您的使用者設定

"xml.fileAssociations": [
  {
    "systemId": "https://raw.githubusercontent.com/PowerShell/PowerShell/master/src/Schemas/Format.xsd",
    "pattern": "**/*.Format.ps1xml"
  },
  {
    "systemId": "https://raw.githubusercontent.com/PowerShell/PowerShell/master/src/Schemas/Types.xsd",
    "pattern": "**/*.Types.ps1xml"
  }
]

此組態會告知 XML 擴充功能針對所有 .ps1xml 檔案使用 PowerShell 存放庫中的官方 XML 結構描述。設定這些結構描述會在 ps1xml 檔案中啟用下列功能

  • 語法錯誤報告
  • 結構描述驗證
  • 標籤和屬性完成
  • 自動關閉標籤
  • 符號醒目提示
  • 文件摺疊
  • 文件符號和大綱
  • 重新命名支援
  • 文件格式化

範例指令碼

範例指令碼包含在擴充功能中,可以在下列路徑找到。

~/.vscode/extensions/ms-vscode.PowerShell-<version>/examples

若要在 VS Code 中開啟或檢視範例,請從您的 PowerShell 命令提示字元執行下列命令

code (Get-ChildItem ~\.vscode\extensions\ms-vscode.PowerShell-*\examples)[-1]

您也可以使用 PowerShell: 開啟範例資料夾 命令,從命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 開啟範例。

Open PowerShell Examples

其他資源

PowerShell 文件中有更詳細的文章。從 使用 VS Code 開始。

查看 疑難排解指南 以取得常見問題的解答。

如需有關偵錯的詳細資訊,請查看由 @keithHill 撰寫的 Hey, Scripting Guy! 關於使用 PowerShell 擴充功能進行偵錯的兩部分部落格文章系列

測試新功能並提供意見反應

我們鼓勵您盡可能試用預先發行版本。當預先發行版本可用時,可以使用 切換至預先發行版本 按鈕從 Marketplace 安裝。您可以使用將出現的 切換至發行版本 按鈕切換回穩定版本的擴充功能。您也可以使用 解除安裝 按鈕旁的箭頭,然後選擇 安裝另一個版本... 來降級至其他版本的擴充功能。

Screenshot showing the button to switch to a pre-release version.

如果您發現錯誤,請開啟問題,並在我們修正錯誤時還原為穩定版本。