powershell-windows

powershell-windows

熱門

PowerShell Windows 開發模式。關鍵踩坑點、運算子語法與錯誤處理規範。

4.4萬星標
6509分支
更新於 2026/7/31
SKILL.md
唯讀
名稱
powershell-windows
描述

PowerShell Windows 開發模式。關鍵踩坑點、運算子語法與錯誤處理規範。

PowerShell Windows 開發模式

Windows PowerShell 的關鍵開發模式與常見陷阱。


1. 運算子語法規則

重要:必須使用小括號

❌ 錯誤 ✅ 正確
if (Test-Path "a" -or Test-Path "b") if ((Test-Path "a") -or (Test-Path "b"))
if (Get-Item $x -and $y -eq 5) if ((Get-Item $x) -and ($y -eq 5))

規則: 使用邏輯運算子時,每個 cmdlet 呼叫必須包在小括號中。


2. Unicode/Emoji 使用限制

重要:指令碼中切勿使用 Unicode

用途 ❌ 請勿使用 ✅ 建議使用
成功 ✅ ✓ [OK] [+]
錯誤 ❌ ✗ 🔴 [!] [X]
警告 ⚠️ 🟡 [*] [WARN]
資訊 ℹ️ 🔵 [i] [INFO]
進度 [...]

規則: PowerShell 指令碼中僅能使用 ASCII 字元。


3. Null 檢查模式

存取前務必進行檢查

❌ 錯誤 ✅ 正確
$array.Count -gt 0 $array -and $array.Count -gt 0
$text.Length if ($text) { $text.Length }

4. 字串插值

複雜運算式

❌ 錯誤 ✅ 正確
"Value: $($obj.prop.sub)" 先存入變數中

模式:

$value = $obj.prop.sub
Write-Output "Value: $value"

5. 錯誤處理

ErrorActionPreference 設定

適用情境
Stop 開發階段(快速失敗)
Continue 正式環境指令碼
SilentlyContinue 預期會有錯誤時

Try/Catch 寫法模式

  • 切勿在 try 區塊內直接 return
  • 使用 finally 進行資源清理
  • 在 try/catch 區塊外進行 return

6. 檔案路徑

Windows 路徑規則

模式 說明 / 用法
字面量路徑 C:\Users\User\file.txt
變數路徑 Join-Path $env:USERPROFILE "file.txt"
相對路徑 Join-Path $ScriptDir "data"

規則: 建議使用 Join-Path 以確保跨平台相容性與安全性。


7. 陣列操作

正確寫法模式

操作 語法
空陣列 $array = @()
新增項目 $array += $item
ArrayList 新增 `$list.Add($item)

8. JSON 操作

重要:Depth 參數

❌ 錯誤 ✅ 正確
ConvertTo-Json ConvertTo-Json -Depth 10

規則: 處理巢狀物件時,務必指定 -Depth 參數。

檔案操作

操作 寫法模式
讀取 `Get-Content "file.json" -Raw
寫入 `$data

9. 常見錯誤

錯誤訊息 原因 解決方案
"parameter 'or'" 漏掉小括號 將 cmdlet 用 () 包裹
"Unexpected token" 包含 Unicode 字元 僅使用 ASCII 字元
"Cannot find property" 物件為 Null 存取前先檢查是否為 Null
"Cannot convert" 型別不匹配 使用 .ToString() 轉換

10. 指令碼範本

# 嚴格模式
Set-StrictMode -Version Latest
$ErrorActionPreference = "Continue"

# 路徑
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path

# 主邏輯
try {
    # 邏輯寫在這裡
    Write-Output "[OK] Done"
    exit 0
}
catch {
    Write-Warning "Error: $_"
    exit 1
}

提醒: PowerShell 擁有獨特的語法規則。小括號、僅限 ASCII 字元以及 Null 檢查都是不可妥協的基本原則。

何時使用

當需要執行概述中所描述的工作流程或操作時,即可套用此 Skill。

使用限制

  • 僅在任務明確符合上述適用範圍時使用此 Skill。
  • 請勿將輸出結果視為替代特定環境驗證、測試或專家審查的依據。
  • 若缺少必要的輸入資料、權限、安全界限或成功標準,請立即停止並尋求進一步確認。