如何用PowerShell循环批量安装Chocolatey软件包?
在PowerShell中批量安装Chocolatey软件包
没问题!既然你熟悉Linux/Mac的Bash循环逻辑,在PowerShell里实现Chocolatey包的批量安装其实非常直观,我给你两种实用方案——既满足你对循环逻辑的好奇,也提供更高效的原生Chocolatey批量安装方式。
方案1:Chocolatey原生批量安装(最简便)
Chocolatey本身支持一次性安装多个软件包,不需要额外写循环,直接把所有包名(带版本的话按正确格式指定)列在命令里即可,这是效率最高的方式:
首先,把你提供的包列表调整为Chocolatey支持的格式(指定版本需要用--version=版本号参数,而非空格分隔),然后执行以下命令:
choco install ` chocolatey --version=0.10.15 ` androidstudio --version=3.5.3.0 ` atom --version=1.41.0.20191029 ` awk --version=4.2.132 ` chocolatey-core.extension --version=1.3.5 ` chocolatey-dotnetfx.extension --version=1.0.1 ` chocolatey-visualstudio.extension --version=1.8.1 ` chocolatey-windowsupdate.extension --version=1.0.4 ` CrystalReports2010Runtime --version=13.0.18 ` curl --version=7.67.0 ` docker --version=99.0.0 ` docker-cli --version=19.03.3 ` DotNet3.5 --version=3.5.20160716 ` dotnetcore-runtime --version=3.1.0 ` dotnetcoresdk --version=1.0.1 ` dotnetfx --version=4.8.0.20190930 ` filezilla --version=3.46.0 ` flashplayeractivex --version=32.0.0.303 ` flashplayerplugin --version=32.0.0.293 ` gawk --version=5.0.1 ` gimp --version=2.10.14 ` git --version=2.24.0 ` git.install --version=2.24.0 ` gitlab-runner --version=12.5.0 ` GoogleChrome --version=80.0.3987.116 ` gpg4win-vanilla --version=2.3.4.20191021 ` grafana --version=6.3.6 ` grep --version=2.1032 ` jdk8 --version=8.0.231 ` jenkins-x --version=2.0.1082 ` jq --version=1.6 ` KB2533623 --version=1.0.4 ` KB2919355 --version=1.0.20160915 ` KB2919442 --version=1.0.20160915 ` KB2999226 --version=1.0.20181019 ` KB3033929 --version=1.0.5 ` KB3035131 --version=1.0.3 ` kubernetes-cli --version=1.17.0 ` less --version=5.51.0.20191024 ` minikube --version=1.6.1 ` mysql-odbc --version=5.3.12 ` nano --version=2.5.3 ` nodejs.install --version=13.3.0 ` openssh --version=8.0.0.1 ` openvpn --version=2.4.7 ` postgresql --version=12.1 ` postgresql12 --version=12.1 ` postman --version=7.13.0 ` prometheus --version=2.2.1 ` prometheus-wmi-exporter.install --version=0.9.0 ` putty --version=0.73 ` putty.portable --version=0.73 ` python --version=3.8.0 ` python3 --version=3.8.0 ` random-number-generator --version=3.0.0 ` ruby --version=2.6.5.1 ` rubymine --version=2019.2.4 ` runinbash --version=0.1.1 ` sed --version=4.7 ` teamviewer --version=15.0.8397 ` unzip --version=6.0 ` vagrant --version=2.2.6 ` vault --version=1.3.0 ` vcredist140 --version=14.23.27820 ` vcredist2013 --version=12.0.40660.20180427 ` vcredist2015 --version=14.0.24215.20170201 ` vim --version=8.1.2318 ` visioviewer --version=16.0 ` visioviewer2016 --version=16.0 ` visualstudio-installer --version=2.0.1 ` visualstudio2019community --version=16.3.10.0 ` vlc --version=3.0.8 ` Wget --version=1.20.3.20190531 ` -y
注:每行末尾的反引号
是PowerShell的换行续行符,让长命令更易读;-y`参数和你单个安装时用的一样,用来自动确认所有安装提示。
方案2:PowerShell循环安装(适配你的Bash习惯)
如果你想实现类似Bash的循环逻辑,我们可以把所有包(带版本参数)存成PowerShell数组,然后用foreach循环逐个安装,和你熟悉的Bash逻辑几乎一致:
# 定义包含所有包(带版本参数)的数组 $packages = @( "chocolatey --version=0.10.15", "androidstudio --version=3.5.3.0", "atom --version=1.41.0.20191029", "awk --version=4.2.132", "chocolatey-core.extension --version=1.3.5", "chocolatey-dotnetfx.extension --version=1.0.1", "chocolatey-visualstudio.extension --version=1.8.1", "chocolatey-windowsupdate.extension --version=1.0.4", "CrystalReports2010Runtime --version=13.0.18", "curl --version=7.67.0", "docker --version=99.0.0", "docker-cli --version=19.03.3", "DotNet3.5 --version=3.5.20160716", "dotnetcore-runtime --version=3.1.0", "dotnetcoresdk --version=1.0.1", "dotnetfx --version=4.8.0.20190930", "filezilla --version=3.46.0", "flashplayeractivex --version=32.0.0.303", "flashplayerplugin --version=32.0.0.293", "gawk --version=5.0.1", "gimp --version=2.10.14", "git --version=2.24.0", "git.install --version=2.24.0", "gitlab-runner --version=12.5.0", "GoogleChrome --version=80.0.3987.116", "gpg4win-vanilla --version=2.3.4.20191021", "grafana --version=6.3.6", "grep --version=2.1032", "jdk8 --version=8.0.231", "jenkins-x --version=2.0.1082", "jq --version=1.6", "KB2533623 --version=1.0.4", "KB2919355 --version=1.0.20160915", "KB2919442 --version=1.0.20160915", "KB2999226 --version=1.0.20181019", "KB3033929 --version=1.0.5", "KB3035131 --version=1.0.3", "kubernetes-cli --version=1.17.0", "less --version=5.51.0.20191024", "minikube --version=1.6.1", "mysql-odbc --version=5.3.12", "nano --version=2.5.3", "nodejs.install --version=13.3.0", "openssh --version=8.0.0.1", "openvpn --version=2.4.7", "postgresql --version=12.1", "postgresql12 --version=12.1", "postman --version=7.13.0", "prometheus --version=2.2.1", "prometheus-wmi-exporter.install --version=0.9.0", "putty --version=0.73", "putty.portable --version=0.73", "python --version=3.8.0", "python3 --version=3.8.0", "random-number-generator --version=3.0.0", "ruby --version=2.6.5.1", "rubymine --version=2019.2.4", "runinbash --version=0.1.1", "sed --version=4.7", "teamviewer --version=15.0.8397", "unzip --version=6.0", "vagrant --version=2.2.6", "vault --version=1.3.0", "vcredist140 --version=14.23.27820", "vcredist2013 --version=12.0.40660.20180427", "vcredist2015 --version=14.0.24215.20170201", "vim --version=8.1.2318", "visioviewer --version=16.0", "visioviewer2016 --version=16.0", "visualstudio-installer --version=2.0.1", "visualstudio2019community --version=16.3.10.0", "vlc --version=3.0.8", "Wget --version=1.20.3.20190531" ) # 循环安装每个包,同时输出当前进度 foreach ($pkg in $packages) { Write-Host "正在安装: $pkg" choco install $pkg -y }
这个逻辑和你在Bash里写的for pkg in "${pkgs[@]}"; do echo "Installing $pkg"; choco install $pkg -y; done几乎完全对应,Write-Host用来输出当前安装的包名,方便你跟踪进度。
小提示
- 如果你不需要指定版本,直接写包名即可(比如
choco install git -y会安装最新版); - 执行PowerShell命令时,记得以管理员身份启动PowerShell,否则部分系统级包可能安装失败;
- 如果安装过程中某个包失败,Chocolatey会继续安装下一个包,你之后可以单独重新安装失败的包。
内容的提问来源于stack exchange,提问作者R. Barrett
相关产品推荐
相关产品推荐

