跳轉至

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

檔案與系統管理

管理檔案與系統是 PowerShell 最經典的用途。本頁整理最常用的 cmdlet,並介紹兩個能避免誤刪的安全開關:-WhatIf-Confirm

瀏覽與操作檔案

PowerShell 把檔案系統當成一種「提供者(provider)」,所以很多熟悉的指令都有別名。在 Windows 上,lscpmvrm 都是 cmdlet 的別名;在 macOS 與 Linux 上,這幾個名稱會直接執行系統原生指令,不是 cmdlet 別名(cd 則在各平台都是 Set-Location)。所以寫腳本時請用完整的 cmdlet 名稱,行為才會一致。

目的 Cmdlet 常見別名
列出檔案 Get-ChildItem lsdir
切換位置 Set-Location cd
複製 Copy-Item cp
移動或改名 Move-ItemRename-Item mv
刪除 Remove-Item rm
建立檔案或資料夾 New-Item
是否存在 Test-Path
# 遞迴找出所有 .log,並依大小排序
Get-ChildItem -Path C:\Logs -Filter *.log -Recurse |
    Sort-Object Length -Descending |
    Select-Object -First 10 FullName, Length

# 建立資料夾並複製檔案
New-Item -ItemType Directory -Path .\backup -Force | Out-Null
Copy-Item .\report.xlsx -Destination .\backup\

# 找出 30 天以上沒動過的檔案
$cutoff = (Get-Date).AddDays(-30)
Get-ChildItem -Path . -File | Where-Object LastWriteTime -lt $cutoff

在跨平台的腳本裡,請用 Join-Path 組路徑,不要手寫 \/

動手前的安全網:-WhatIf 與 -Confirm

會修改系統的 cmdlet(Remove-ItemStop-ProcessSet-Service 等)幾乎都支援兩個安全開關:

# 只顯示「將會」做什麼,實際上不執行
Get-ChildItem *.tmp | Remove-Item -WhatIf

# 每一項都詢問你是否確定
Get-ChildItem *.tmp | Remove-Item -Confirm

先加 -WhatIf 看輸出的清單對不對,確認無誤後再拿掉。 這個習慣能救你很多次。

讀寫文字檔

# 讀取:每一行成為陣列的一個元素
$lines = Get-Content .\app.log

# 一次讀成單一字串
$text = Get-Content .\app.log -Raw

# 寫入(會覆蓋原內容)與附加
'第一行' | Set-Content .\note.txt
'新增一行' | Add-Content .\note.txt

# 用管線篩選:找出含 ERROR 的行
Get-Content .\app.log | Select-String 'ERROR'

Select-String 相當於 grep,支援正規表示式。文字檔的編碼在 PowerShell 7 預設為 UTF-8(不含 BOM),Windows PowerShell 5.1 的預設則因 cmdlet 而異,處理中文檔案時請留意,必要時用 -Encoding 明確指定。

處理程序與服務

# 記憶體用量前五名的處理程序
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5 Name, Id

# 停止某個處理程序(先用 -WhatIf 預覽)
Stop-Process -Name notepad -WhatIf

# 服務(Windows)
Get-Service | Where-Object Status -eq 'Running'
Restart-Service -Name Spooler

Get-Service 等服務相關 cmdlet 僅適用於 Windows。在 macOS 與 Linux 上,服務管理請用系統自己的工具(如 systemctl),也可以直接在 PowerShell 中呼叫這些外部程式。

系統資訊

$PSVersionTable                       # PowerShell 版本與作業系統
$env:COMPUTERNAME                     # 電腦名稱(Windows)
Get-Date                              # 現在時間
Get-Location                          # 目前所在資料夾

相關資料