重灌電腦後需要一一下載安裝軟體,是每個工程師都碰過的苦差事。Chocolatey 是 Windows 上的套件管理工具,搭配幾行 PowerShell,就能備份軟體清單、在新環境一鍵還原。

Chocolatey 是什麼?

Chocolatey 是 Windows 平台上的套件管理工具,如果你用過 Linux 的 apt 或 Mac 的 Homebrew,就會覺得 Chocolatey 相當親切。它讓你能透過命令列來安裝、更新和管理各種軟體,不必再手動下載安裝檔、點擊下一步、同意條款⋯⋯這些繁瑣的步驟。

有了 Chocolatey,只需執行一個指令檔,就能自動裝回 Chrome、7-Zip、VS Code、Notepad++、Everything 等所有日常軟體,也不會忘記那些不常用但關鍵時刻需要的工具。

安裝 Chocolatey:開始你的套件管理之旅

安裝 Chocolatey 超級簡單。只要開啟 PowerShell(以系統管理員身分執行),然後貼上以下指令:

1
2
3
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

輸入完指令後,按下 Enter 鍵,PowerShell 會自動下載並安裝 Chocolatey。安裝完成後,你可以輸入 choco -v 來確認是否安裝成功以及查看版本號。

用 Chocolatey 安裝軟體:再見,下一步按鈕!

有了 Chocolatey 後,安裝軟體變得超簡單。例如,如果你想安裝 Google Chrome,只需在 PowerShell 中輸入:

1
choco install googlechrome -y

這個指令會自動下載並安裝 Chrome 瀏覽器,-y 參數表示自動同意所有提示,讓安裝過程完全自動化。

你也可以一次安裝多個軟體:

1
choco install 7zip vscode notepadplusplus everything googlechrome -y

這樣就能一次安裝 7-Zip、VS Code、Notepad++、Everything 和 Chrome 五個軟體,省去了逐一下載安裝的麻煩。

備份已安裝的套件清單

你可以用 PowerShell 將目前安裝的套件清單匯出,以便在新電腦或重灌後快速還原。

Chocolatey v2+ 推薦作法:使用官方內建的 choco export 指令,輸出標準 XML 格式(packages.config):

1
choco export -o "$env:USERPROFILE\Desktop\packages.config"

還原時直接:

1
choco install "$env:USERPROFILE\Desktop\packages.config" -y

若你習慣純文字清單格式,也可以用 --limit-output(或 -r)輸出機器可讀的乾淨列表:

1
choco list --limit-output | ForEach-Object { $_.Split('|')[0] } | Out-File -FilePath "$env:USERPROFILE\Desktop\chocolatey-packages.txt"

注意:Chocolatey v2.0(2023 年起)已移除 --local-only 旗標,choco list 預設即為本機清單。若你在 v2+ 環境執行舊的 choco list --local-only 會收到錯誤訊息。

這個指令說明:

  • choco list --limit-output:列出本機已安裝的 Chocolatey 套件,每行格式為 套件名稱|版本號
  • ForEach-Object { $_.Split('|')[0] }:取出套件名稱,去掉版本號部分
  • Out-File:輸出到桌面檔案

快速還原所有軟體

當你需要在新電腦或重灌系統後還原軟體時,執行以下步驟(需以系統管理員身分執行 PowerShell):

  1. 安裝 Chocolatey(見上文)
  2. 將備份檔複製到新電腦
  3. 若備份格式為 packages.config:
    1
    choco install "C:\路徑\packages.config" -y
    若備份格式為純文字清單:
    1
    Get-Content -Path "$env:USERPROFILE\Desktop\chocolatey-packages.txt" | ForEach-Object { choco install $_ -y }

-y 參數讓安裝過程自動同意所有提示,不需人工干預。

進階技巧:建立一鍵備份還原腳本

你也可以建立一個完整的 PowerShell 腳本,將備份和還原過程進一步自動化。以下是一個範例腳本:

備份腳本 (backup-packages.ps1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 確認是否以管理員權限運行
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Warning "請以系統管理員身分執行此腳本"
break
}

# 備份路徑,這裡設定為桌面
$backupPath = "$env:USERPROFILE\Desktop\chocolatey-backup"

# 如果備份資料夾不存在則建立
if (!(Test-Path -Path $backupPath)) {
New-Item -ItemType Directory -Path $backupPath | Out-Null
}

# 備份已安裝的套件
$packagesFile = "$backupPath\packages.txt"
Write-Host "正在備份已安裝的 Chocolatey 套件..."
choco list --limit-output | ForEach-Object { $_.Split('|')[0] } | Out-File -FilePath $packagesFile

# 建立還原腳本
$restoreScriptPath = "$backupPath\restore-packages.ps1"
$restoreScript = @"
# 確認是否以管理員權限運行
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Warning "請以系統管理員身分執行此腳本"
break
}

# 檢查 Chocolatey 是否已安裝
if (!(Get-Command choco -ErrorAction SilentlyContinue)) {
Write-Host "正在安裝 Chocolatey..."
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
}

# 還原套件
Write-Host "正在還原 Chocolatey 套件..."
Get-Content -Path "`$PSScriptRoot\packages.txt" | ForEach-Object {
Write-Host "安裝套件: `$_" -ForegroundColor Cyan
choco install `$_ -y
}

Write-Host "所有套件已還原完成!" -ForegroundColor Green
Read-Host "按 Enter 鍵結束"
"@

$restoreScript | Out-File -FilePath $restoreScriptPath

Write-Host "備份完成!" -ForegroundColor Green
Write-Host "備份檔案和還原腳本已保存到: $backupPath" -ForegroundColor Yellow
Write-Host "在新系統上,只需執行 restore-packages.ps1 腳本即可還原所有軟體。" -ForegroundColor Yellow
Read-Host "按 Enter 鍵結束"

這個腳本會備份套件清單,並自動產生一個還原腳本。把整個 chocolatey-backup 資料夾複製到新電腦,執行 restore-packages.ps1 即可。

Chocolatey GUI

不喜歡命令列的話,Chocolatey 也有圖形界面版本 Chocolatey GUI,可以用更直觀的方式搜尋、安裝、更新套件。安裝方法:

1
choco install chocolateygui -y

安裝完成後,在開始選單中找到 Chocolatey GUI,即可搜尋、安裝、更新和移除軟體。

結語

Chocolatey 對 IT 部門來說也是批量部署軟體的實用工具,不只限於個人使用。搭配 choco export 備份與還原,重灌後的環境重建只需幾分鐘。