Visual Studio Code 中的 PowerShell
PowerShell 是一個基於 .NET 的工作導向命令列殼層與指令碼語言,為各種平台上的管理員提供了強大的工具集。
適用於 Visual Studio Code (VS Code) 的 Microsoft PowerShell 擴充功能,為 PowerShell 提供了豐富的語言支援與功能,例如語法自動完成、定義追蹤和語法檢查 (linting)。只要是支援 PowerShell 7+ 當前支援版本的環境,此擴充功能皆可運作。
對 Windows PowerShell 5.1 的支援採取盡力而為 (best effort) 的原則。需要 .NET Framework 4.8 或更高版本。
支援 VS Code 遠端開發環境,包括 GitHub Codespaces 和 VS Code Server。
網頁版 Visual Studio Code 僅支援基礎功能(如基本語法標示),因為 PowerShell 引擎無法在此環境中執行。
我們積極測試下列組態:
- Windows Server 2022 (搭配 Windows PowerShell 5.1 與 PowerShell 7+)
- macOS 14.7 (搭配 PowerShell 7+)
- Ubuntu 24.04 (搭配 PowerShell 7+)
在 Windows 上,我們也會測試啟用與停用「限制語言模式」(Constrained Language Mode) 的情況。
安裝 PowerShell 擴充功能
您可以透過點擊 安裝按鈕,從 Visual Studio Code 市集中安裝 PowerShell 擴充功能。您也可以在 VS Code 內部安裝:開啟「擴充功能」檢視(鍵盤快速鍵 ⇧⌘X (Windows, Linux Ctrl+Shift+X)),輸入 PowerShell,然後選擇該擴充功能即可。

主要功能
- 語法標示
- 進階內建程式碼片段
- 適用於 Cmdlet 與其他項目的 IntelliSense 智慧感應
- 由 PowerShell Script Analyzer 報告的問題
- Cmdlet、變數、類別與更多項目的移至定義
- Cmdlet、變數、類別與更多項目的尋找參考
- 文件與工作區的符號導覽
- 基於符號的大綱檢視
- 使用 F8 在目前終端機執行選取的 PowerShell 程式碼
- 使用 Ctrl + F1 針對游標所在的符號啟動線上說明
- PowerShell 偵錯工具整合
- 可與偵錯工具互動的擴充功能終端機 (請嘗試
Set-PSBreakpoint!) - 在佈景主題選擇器中提供 PowerShell ISE 佈景主題
- 也可以使用 ⇧⌘P (Windows, Linux Ctrl+Shift+P) 並搜尋「Enable ISE Mode」來嘗試 ISE 模式
偵錯
PowerShell 擴充功能使用 VS Code 的內建偵錯介面,以允許對 PowerShell 指令碼與模組進行偵錯。如需有關對 PowerShell 進行偵錯的詳細資訊,請參閱使用 VS Code。
多版本支援
您可以按照這些指示,將 PowerShell 擴充功能設定為使用機器上安裝的任何支援版本。
或者,從命令選擇區(⇧⌘P (Windows, Linux Ctrl+Shift+P))執行 PowerShell: Show Session Menu 命令。
CodeLens 支援
CodeLens 是一項 VS Code 功能,可在原始程式碼中顯示可執行的內容資訊。
CodeLens 功能包括:
-
Pester 執行測試與偵錯測試。

-
Pester 符號支援

-
函式、變數、類別與其他符號參考
CodeLens 參考支援會顯示符號在程式碼中的參考次數,並允許您跳轉至特定參考。

PSScriptAnalyzer 整合
PSScriptAnalyzer 是一個 PowerShell 模組,為模組與指令碼提供靜態原始碼檢查。PSScriptAnalyzer 具有驗證 PowerShell 程式碼品質的規則。這些規則基於 PowerShell 團隊與社群所制定的最佳實踐。PSScriptAnalyzer 會產生診斷記錄(錯誤與警告),以告知使用者潛在的程式碼缺失,並建議改進方式。
PowerShell 擴充功能預設包含 PSScriptAnalyzer,並會自動對您在 VS Code 中編輯的 PowerShell 指令碼檔案執行分析。
PSScriptAnalyzer 隨附了一系列內建規則,可檢查 PowerShell 原始程式碼的各個方面,例如是否存在未初始化的變數、對 PSCredential 型別的使用、Invoke-Expression 的使用等。該模組也允許您包含或排除特定規則。
若要停用 PSScriptAnalyzer,請開啟您的設定(⌘, (Windows, Linux Ctrl+,)),瀏覽至擴充功能,選擇 PowerShell 擴充功能,並取消勾選指令碼分析:啟用 (powershell.scriptAnalysis.enable)。

PSScriptAnalyzer 也提供程式碼格式化功能。您可以使用格式化文件命令,或使用鍵盤快速鍵(⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I))來呼叫自動文件格式化。
Pester 整合
Pester 是一個執行單元測試的框架,Windows PowerShell 5.1 隨附了預先安裝的 Pester 3.40。若要更新 Pester 或在其他平台上安裝最新版本,請按照 Pester 安裝指南進行。
PowerShell 擴充功能設定
您可以從 檔案 > 喜好設定 > 設定 功能表項目自訂 VS Code 設定。
您也可以選擇位於活動列左下角的齒輪圖示。

您也可以使用鍵盤快速鍵 ⌘, (Windows, Linux Ctrl+,) 開啟設定。您仍然可以使用命令選擇區(⇧⌘P (Windows, Linux Ctrl+Shift+P))中的 喜好設定:開啟使用者設定 (JSON) 命令,或透過修改 "workbench.settings.editor" 設定來開啟 settings.json 檔案。
前往使用者與工作區設定,以取得有關設定 VS Code 的詳細資訊。
Types.ps1xml 與 Format.ps1xml 檔案
PowerShell .ps1xml 檔案用於擴充型別系統並定義輸出格式。有關這些檔案的詳細資訊,請參閱 Types.ps1xml 與 Format.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]
您也可以從命令選擇區(⇧⌘P (Windows, Linux Ctrl+Shift+P))中使用 PowerShell: Open Examples Folder 命令來開啟範例資料夾。

其他資源
PowerShell 文件中有更多詳細文章。請從使用 VS Code 開始。
查看疑難排解指南以取得常見問題的解答。
如需更多關於偵錯的資訊,請參考由 @keithHill 撰寫、關於使用 PowerShell 擴充功能進行偵錯的 Hey, Scripting Guy! 兩部分部落格系列:
- 在 Visual Studio Code 中對 PowerShell 指令碼進行偵錯 - 第 1 部分
- 在 Visual Studio Code 中對 PowerShell 指令碼進行偵錯 - 第 2 部分
測試新功能並提供回饋
我們鼓勵您儘可能嘗試「預覽版」(pre-release) 版本。當「預覽版」可用時,可以使用切換至預覽版本按鈕從市集中安裝。您可以使用出現的切換至正式發行版本按鈕切換回穩定版本。您也可以使用「解除安裝」按鈕旁邊的箭頭並選擇安裝另一個版本...,來降級至擴充功能的其他版本。

如果您發現錯誤,請開啟問題 (issue),並在我們修復期間切換回穩定版本。