第 8 章
PowerShell 腳本入門:.ps1、執行政策、常見問題
本章重點
- 了解什麼是 .ps1 腳本檔案
- 學會建立與執行第一個腳本
- 認識參數與函式的寫法
- 知道如何處理常見的執行錯誤
什麼是 .ps1 腳本?
把多個 PowerShell 指令存成一個 .ps1 檔案,
就是一個腳本。每次執行這個檔案,就會依序執行裡面所有的指令。
腳本適合用在:重複性工作、需要多個步驟的操作、定時自動執行的任務。
建立第一個腳本
用任何文字編輯器(記事本、VS Code 都可以)建立 hello.ps1:
# hello.ps1
Write-Output "Hello, PowerShell!"
Write-Output "現在時間:$(Get-Date)"
Get-ChildItem $env:USERPROFILE | Select-Object -First 5
存檔後,在 PowerShell 執行:
# 用相對路徑執行(必須加 .\)
.\hello.ps1
# 用絕對路徑執行
C:\scripts\hello.ps1
一定要加
.\:
執行同一個資料夾的腳本,名稱前面必須加 .\,
直接輸入 hello.ps1 會找不到。
加入參數
# greet.ps1
param(
[string]$Name = "朋友",
[int]$Times = 1
)
for ($i = 0; $i -lt $Times; $i++) {
Write-Output "你好,$Name!"
}
執行時傳入參數:
.\greet.ps1 -Name "Jack" -Times 3
函式(Function)
# 定義函式
function Say-Hello {
param([string]$Name)
Write-Output "你好,$Name!"
}
# 呼叫函式
Say-Hello -Name "Alice"
Say-Hello "Bob"
# 有回傳值的函式
function Add-Numbers {
param([int]$A, [int]$B)
return $A + $B
}
$result = Add-Numbers -A 10 -B 20
Write-Output "結果:$result"
錯誤處理
# 設定遇到錯誤就停止
$ErrorActionPreference = "Stop"
# try / catch 捕捉錯誤
try {
Get-Content "不存在的檔案.txt"
} catch {
Write-Output "發生錯誤:$($_.Exception.Message)"
} finally {
Write-Output "不管有沒有錯,這裡都會執行"
}
常見執行問題
-
「無法執行腳本」:執行政策限制,參考第 3 章設定
RemoteSigned -
「找不到路徑」:確認你在正確的資料夾,加上
.\ - 「存取被拒」:以系統管理員身分重新開啟 PowerShell
- 中文亂碼:存檔時選 UTF-8(無 BOM)編碼
小練習:
- 建立
info.ps1,內容包含:顯示電腦名稱、目前使用者、PowerShell 版本 - 執行它:
.\info.ps1 - 加入
param讓使用者可以傳入一個$Message顯示在最後
# 參考:顯示系統資訊
Write-Output "電腦名稱:$env:COMPUTERNAME"
Write-Output "使用者:$env:USERNAME"
Write-Output "PowerShell 版本:$($PSVersionTable.PSVersion)"
小結
腳本就是把指令存成 .ps1 檔案。
用 param 接收參數,用 function 封裝邏輯,
用 try/catch 處理錯誤。
這些是寫出實用腳本的基礎。
下一章,把這些技巧組合成真實的小自動化。