- Chocolatey 允许您自动且安全地安装、更新和卸载软件。
- 软件包是经过审核的,许多都是[已批准],并且可以在安装之前审核脚本。
- 连接器 PowerShell的 和 packages.config 您可以标准化部署和安排升级。
- MGI 日志 全局确认有利于无人值守执行和可追溯性。
如果你来自 Linux 或 macOS 听起来很熟悉从 终端, 但在 Windows 仍然有人用奇怪的眼光看待文字。 comandos现实情况是,当你寻求自动化、标准化和加速部署时, Chocolatey 成为你最好的盟友 创建安装脚本,无需单击“下一步、下一步、完成”。
在本实用指南中,您将学习如何使用 Chocolatey 创建安装脚本:它是什么,如何安全地安装它,关键命令,如何构建你的 PowerShell 脚本,如何使用 packages.config,安全指南,如何安排自动更新,以及一些 技巧 生产力,以便每个新团队都能在几分钟内做好准备。
什么是 Chocolatey 以及它为何能让你编写脚本更加轻松
Chocolatey 是一款受 apt、dnf 或 pacman 启发的 Windows 软件包管理器,拥有一个大型社区维护的仓库和官方工具。其方法:以一致、可重复的方式从命令行安装、更新和卸载软件,而无需图形安装程序中经常出现的额外垃圾软件。
Chocolatey 的公共目录远远超过几千个独特的软件包,由社区审核和验证。许多软件包不包含最终的二进制文件,而是从供应商官方网站下载的脚本,并使用适当的参数运行静默安装,以避免广告软件或不需要的组件。
自动化的巨大优势 你可以用一个简单的 脚本 (PowerShell 或 CMD)、定义全局确认选项、捕获日志并在新计算机上重现相同的环境或 虚拟机 在几分钟内
除了安装之外,Chocolatey 还允许您更新所有软件。 使用单个命令和计划在任务计划程序中更新,以忘记烦人的“有新版本可用”通知。

Chocolatey 的安全安装:命令和重要细节
如果以管理员身份运行 PowerShell,Chocolatey 安装会非常快。 (在开始菜单中找到它,右键单击,然后选择“以管理员身份运行”。)最好只针对进程会话调整执行策略,而不是在系统级别调整。
PowerShell 中的推荐命令(提升会话) 要配置现代 TLS 协议并以仅限于当前进程的方式运行安装程序:
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
还有一种传统 cmd 的变体 您会在许多教程中看到它;如果您使用它,请确保以管理员权限打开 cmd 以避免权限问题并确保您的 PATH 变量正确更新:
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
需要考虑的细节:如果您不以管理员身份运行,则范围将覆盖整个用户,并且您可能会在需要提升权限的安装中遇到错误。Chocolatey 会记录所有信息 C:\ProgramData\chocolatey\logs\chocolatey.log,这样您就可以完全追溯所发生的一切。
关于 Set-ExecutionPolicy:最好使用 Bypass 和 Scope Process(如上所述)来避免触碰全局指令。一些较旧的教程要求 无限制 o 使用AllSigned; 如果您使用 使用AllSigned,您需要在每次运行时签署自己的脚本或确认有效签名。
安全性:数据包审核、[已批准] 和脚本验证
Chocolatey 采用手动和自动包装审核。 来自社区存储库。许多条目带有标签 [得到正式认可的],这表明它们已经通过了质量和安全控制;一些包裹可能还带有数字签名。
尽管如此,基本的良好做法:如果您担心安全问题(例如, 巧克力安装-dv 有关详细信息),请查看包页面,如果您管理关键环境,请考虑内部存储库或企业许可证。
为什么安装程序使用 chocolateyinstall.ps1? 剧本 安装.ps1 该 下载 从官方网站上看,它是一个“引导程序”, 下载 Chocolatey nupkg 包并运行其 chocolateyinstall.ps1它们不匹配很正常:一个是启动器,另一个是包安装脚本。这种差异本身不是什么问题,而是 NuGet/Chocolatey 架构的问题。
真正的安全优势:避免使用垃圾软件、将下载集中到可验证的来源、自动化且无欺骗性点击、以及维护最新版本可减少攻击面和过时软件带来的风险。
脚本的基本命令:安装、搜索、列出、更新和卸载
安装套件 它很简单:
choco install nombre_paquete -y
-y 修饰符强制确认 这样你的脚本就无需等待交互了。如果你愿意,也可以全局启用它:
choco feature enable -n allowGlobalConfirmation
典型示例 您将在指南中看到:使用 巧克力安装Skype,CMDER与 choco 安装 cmder -y 或使用 VLC choco 安装 vlc -y您可以使用以下方式搜索包:
choco search <termino>
当你搜索时,你会看到带有变体的包: 例如, 7zip.安装 安装具有经典界面的应用程序,同时 7zip 它可以简单地是“无头”命令行版本。选择变体 。安装 无论何时您需要 GUI。
列出已安装的内容 帮助您快速审核您的设备:
choco list --local-only
检查过时的版本 它很简单:
choco outdated
更新特定或所有包 批量处理对于计划脚本来说非常方便:
choco upgrade <paquete> -y
choco upgrade all -y
卸载也很简单,并且如果适用的话,您还可以包含依赖项:
choco uninstall <paquete> -y --remove-dependencies
创建您的第一个 PowerShell 安装脚本(可重复使用的模板)
最实用的自动化方法是在 PowerShell 中创建脚本 它验证权限、配置会话的执行策略、安装 Chocolatey(如果缺失),然后在链中部署您最喜欢的应用程序。
示例模板 您可以根据自己的软件列表和内部政策进行调整:
# Comprobar privilegios de administrador
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host 'Este script requiere privilegios de Administrador. Vuelve a ejecutarlo elevado.'; exit 1 }
# Política de ejecución solo para este proceso y TLS 1.2
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
# Instalar Chocolatey si no existe
if (-not (Get-Command choco -ErrorAction SilentlyContinue)) { iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) }
# Confirmación global para evitar prompts
choco feature enable -n allowGlobalConfirmation
# Instalar aplicaciones (modifica a tu gusto)
choco install google-chrome-x64 -y; choco install visualstudiocode -y; choco install vscode-powershell -y; choco install docker-desktop -y; choco install 7zip.install -y; choco install vlc -y; choco install git -y
# Limpiezas opcionales (ejemplo: accesos directos del Escritorio)
# Get-ChildItem -Path "$env:Public\Desktop\*.lnk" -ErrorAction SilentlyContinue | Remove-Item -Force
# Mostrar resumen local
choco list --local-only
评议会:将“必备”包与“可选”包分成两个不同的块或脚本,这样您就可以拥有一个最小基础和一个用于特定配置文件(开发、设计、视频编辑等)的附加层。
如果您已经手动安装了版本,在运行脚本之前卸载它们以避免冲突,特别是在较旧的 Windows 安装上;全新安装的 Windows 10/11 通常可以提供更流畅的体验。
使用 packages.config 实现自动化:无需修改脚本即可批量安装
除了 PowerShell,Chocolatey 还允许您定义 packages.config (NuGet 风格)包含所需的软件包及其版本。这对于共享团队列表或 Git 控制的仓库非常有用。
最小 packages.config 示例 (将其保存在运行 choco 的同一文件夹中):
<?xml version='1.0'?>
<packages>
<package id='google-chrome-x64' />
<package id='visualstudiocode' />
<package id='7zip.install' />
<package id='vlc' />
<package id='git' />
</packages>
安装所有定义的 在该文件中运行:
choco install packages.config -y
优点:软件列表的声明性维护、文件版本控制以及轻松审查审计设备的变更。
使用任务计划程序安排自动更新

让您的软件保持最新状态且无需侵入通知就像编程一样简单。 执行的操作 choco全部升级 当您登录时或在特定时间。
逐步总结:打开“任务计划程序”,创建一个任务,选中“以最高权限运行”,选择触发器(例如,登录时),并在操作中将“程序或脚本”设置为 巧克力 并在“添加参数”中写入 升级全部-y.
如果您更喜欢通过脚本管理,您可以使用 PowerShell 创建任务 注册计划任务,在准备企业图像或大规模部署时很有用。
记住 Chocolatey 的日志 这将帮助您确认更新进展顺利: C:\ProgramData\chocolatey\logs\chocolatey.log.
实际使用示例:从零到就绪环境
办公自动化和多媒体的基础安装:浏览器、压缩器、视频播放器和 PDF 只需几秒钟即可通过单个复合命令。
choco install google-chrome-x64 7zip.install vlc sumatrapdf.install -y
轻量级开发环境:VS Code、Git 和 PowerShell 工具,首次使用后即可使用别名和扩展 引导.
choco install visualstudiocode vscode-powershell git -y
搜索和精选:如果您不确定确切名称,请尝试 巧克力搜索命令 o 巧克力搜索 Adobe 查看变体以及哪些是 [得到正式认可的].
choco search mpv
choco install mpv.install -y
更新和维护:一眼就能检查是否有任何内容已过时,然后使用夜间脚本中的单个命令直接更新所有内容。
choco outdated
choco upgrade all -y
拥有扎实的命令基础、良好的安全实践以及一两个精心设计的脚本有了它,您将能够在几分钟内部署设备,使其保持最新状态,避免使用垃圾软件,并完全跟踪已安装和更新的内容,所有这些都比传统安装程序流程更简洁,并且无需依赖手动点击。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。