跳轉至

建立 2026-09-19 更新 2026-09-19

腳本與模組

一行一行在終端機輸入的指令,關掉視窗就沒了。把它們存成 腳本.ps1 檔)就能重複執行、分享給別人;把常用的函式打包成 模組,就能在任何腳本裡載入使用。本頁說明如何撰寫、執行腳本,以及如何使用別人寫好的模組。

撰寫並執行腳本

用 VS Code 建立 hello.ps1

param(
    [string]$Name = 'World'
)

"Hello, $Name!"

在終端機切到該資料夾後執行:

./hello.ps1
./hello.ps1 -Name Victor

為什麼要加 ./

PowerShell 為了安全,不會直接從目前資料夾執行程式,必須明確寫出路徑。在 Windows 上如果看到「無法載入,因為這個系統上已停用指令碼執行」,請看 安裝與環境 的執行原則。

腳本的實用習慣

#Requires -Version 7.0        # 版本不符就直接拒絕執行,並顯示清楚訊息

[CmdletBinding()]
param(
    [Parameter(Mandatory)]
    [string]$Path
)

$ErrorActionPreference = 'Stop'   # 出錯就停下來(見「錯誤處理」)

# $PSScriptRoot 是這支腳本所在的資料夾,用它組出相對於腳本的路徑,
# 不論從哪個目錄執行都不會找錯檔案
$configFile = Join-Path $PSScriptRoot 'config.json'
  • 腳本開頭的 param() 決定它接受哪些參數,寫法與 函式 完全相同。
  • 路徑組合用 Join-Path,不要手動串 \/,這樣在 Windows、macOS、Linux 都能運作。

載入函式:dot-source

想把另一個 .ps1 檔裡的函式載入目前的腳本,用點號加空格再加路徑(dot-sourcing):

. ./MyFunctions.ps1     # 注意第一個點後面有空格
Get-Greeting            # 現在可以使用 MyFunctions.ps1 裡定義的函式

函式越多,這種做法越難維護。這時就該做成模組。

模組(Module)

模組是打包好的一組函式、cmdlet 與變數,用 Import-Module 載入。PowerShell 內建的 cmdlet 也是分屬在各個模組裡。

Get-Module -ListAvailable        # 列出電腦上可用的模組
Get-Command -Module Microsoft.PowerShell.Utility   # 某模組提供的指令
Import-Module ImportExcel        # 載入已安裝的模組(安裝見下方;多數情況下用到模組指令時會自動載入)

自己做一個簡單的模組

把函式放進副檔名為 .psm1 的檔案,就是一個最簡單的模組:

# MyTools.psm1
function Get-Greeting {
    param([string]$Name = 'World')
    "Hello, $Name!"
}

Export-ModuleMember -Function Get-Greeting
Import-Module ./MyTools.psm1
Get-Greeting -Name Victor

Export-ModuleMember 指定哪些函式對外公開,沒列出的視為模組內部使用。要分享給其他人使用,可再加上描述模組資訊的 .psd1 資訊清單,本站不深入。

PowerShell Gallery 是官方的模組與腳本庫,數以千計的社群與廠商模組都可以直接安裝:

# 安裝到目前使用者,不需要系統管理員權限
Install-Module -Name ImportExcel -Scope CurrentUser

# 更新與移除
Update-Module -Name ImportExcel
Uninstall-Module -Name ImportExcel

PowerShell 7.4 起內建更新的 Microsoft.PowerShell.PSResourceGet 模組,提供 Install-PSResourceFind-PSResource 等指令,用途與上面相同,未來會逐漸取代 Install-Module

安裝前先確認來源

Gallery 上任何人都能發布模組。安裝前看一下作者、下載次數與專案網址,優先選擇 Microsoft 與知名廠商發布的模組。

設定檔(Profile)

每次開啟 PowerShell 都會自動執行一支 profile 腳本,適合放你常用的別名、函式與提示字元設定:

$PROFILE                          # 顯示 profile 的路徑
New-Item -Path $PROFILE -ItemType File -Force   # 建立(若不存在)
code $PROFILE                     # 用 VS Code 開啟編輯

推薦影音

進階腳本技巧:函式、模組與簽章

簡述:John Savill 的 PowerShell Master Class 進階腳本單元(約 46 分鐘),說明函式、自建模組,以及腳本簽章,對應本頁的「模組」與 函式。錄於 2019 年,觀念在 PowerShell 7 仍適用。

相關資料