如何使用PowerShell脚本自动化安装Windows软件【效率工具】
技术百科
幻夢星雲
发布时间:2026-01-21
浏览: 次 可通过PowerShell实现Windows软件批量静默部署,包括:一、Invoke-WebRequest+Start-Process下载安装;二、msiexec命令行安装MSI包;三、Chocolatey包管理器一键安装;四、WinGet CLI调用应用商店式安装;五、XML配置驱动模块化安装。
如果您希望在Windows系统中批量部署软件而无需手动操作,则可以通过PowerShell脚本实现静默安装与流程控制。以下是多种可直接执行的自动化安装方法:
一、使用Invoke-WebRequest配合Start-Process静默安装
该方法适用于已知下载链接的独立安装包(如.exe或.msi),通过网络获取安装文件后调用系统进程执行无交互安装。
1、以管理员身份打开PowerShell窗口。
2、执行以下命令下载并安装软件:
Invoke-WebRequest -Uri "https://example.com/app-installer.exe" -OutFile "$env:TEMP\installer.exe"; Start-Process -FilePath "$env:TEMP\installer.exe" -ArgumentList "/S /VERYSILENT /NORESTART" -Wait
3、安装完成后,删除临时文件:
Remove-Item "$env:TEMP\installer.exe" -Force
二、调用msiexec安装MSI格式软件
MSI安装包原生支持命令行参数控制安装行为,PowerShell可通过Start-Process调用msiexec.exe完成无人值守部署。
1、确认目标MSI文件路径,例如位于当前目录下的“setup.msi”。
2、运行以下命令启动静默安装:
Start-Process msiexec.exe -ArgumentList '/i "setup.msi" /quiet /norestart INSTALLDIR="C:\Program Files\MyApp"' -Wait
3、检查退出代码验证是否成功:
if ($LASTEXITCODE -eq 0) { Write-Host "安装成功" } else { Write-Host "安装失败,错误码:" $LASTEXITCODE }
三、利用Chocolatey包管理器批量安装
Chocolatey是Windows平台的命令行包管理工具,可一键安装数百种常用软件,适合标准化环境部署。
1、以管理员权限运行PowerShell,执行安装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'))
2、安装完成后,使用choco install命令部署软件:
choco install googlechrome vlc notepadplusplus -y
3、如需从自定义源安装,可先添加源:
choco source add -n=internal -s="https://myrepo.local/choco"
四、通过WinGet CLI调用应用商店式安装
WinGet是微软官方推出的现代Windows包管理工具,支持从Microsoft Store、GitHub等渠道自动拉取并安装最新版本软件。
1、确认系统已安装Windows App Installer(Windows 10 1709+ 或 Windows 11 默认内置)。
2、在PowerShell中查询可用软件:
winget search "vscode"
3、执行静默安装:
winget install --id Microsoft.VisualStudioCode --silent --accept-package-agreements --accept-source-agreements
4、批量安装多个应用时,可将ID列表写入数组循环执行:
$apps = @("Mozilla.Firefox", "Zoom.Zoom"); foreach ($app in $apps) { winget install --id $app --silent --accept-package-agreements }
五、基于XML配置文件驱动的模块化安装流程
该方法将软件信息与安装参数分离至外部配置文件,便于维护和复用,适用于企业级多场景部署需求。
1、创建名为software-config.xml的配置文件,内容如下:
2、在PowerShell中加载并解析该XML:
$config = [xml](Get-Content .\software-config.xml); $config.SoftwareList.App | ForEach-Object {
$filePath = "$env:TEMP\$($_.Name)-installer.exe";
Invoke-WebRequest -Uri $_.Url -OutFile $filePa

Start-Process -FilePath $filePath -ArgumentList $_.Args -Wait;
Remove-Item $filePath -Force
}
# 自动化
# ai
# 多个
# windows
# 安装包
# 可通过
# 适用于
# 如果您
# 微软
# 一键
# app
# 命令行
# 配置文件
# 工具
# win
# microsoft
# https
# internal
# go
# 循环
# if
# xml
# git
# github
# foreach
# Object
# for
# 管理器
# zoom
# firefox
# vscode
# 命令行参数
# 安装完成后
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11文件夹预览图不显示怎么办_Win11缩略
- Win11怎么关闭VBS安全性_Windows11
- Windows怎样关闭开始菜单推荐广告_Windo
- Python列表推导式与字典推导式教程_简化代码高
- Mac如何调整Dock栏大小和位置_Mac程序坞个
- Go 中实现 Python urllib.quot
- C++如何解析JSON数据?(nlohmann/j
- 如何在Golang中优化文件读写性能_使用缓冲和并
- Windows10电脑怎么连接蓝牙设备_Win10
- php485返回数据不完整怎么办_php485数据
- php怎么下载安装后无法解析php文件_服务器配置
- c++中如何使用std::variant_c++1
- Win11怎么关闭SmartScreen_禁用Wi
- PythonFastAPI项目实战教程_API接口
- Win11怎么关闭自动修复_跳过Win11开机自动
- 短链接怎么用php还原_从基础原理到代码实现教学【
- Mac的“预览”如何合并多个PDF_Mac文件处理
- php打包exe如何加密代码_防反编译保护方法【技
- LINUX怎么查看进程_LINUX ps命令查看运
- Win11怎么清理C盘系统错误报告_Win11清理
- Python日志系统设计与实现_高可观测性架构实战
- Win11关机界面怎么改_Win11自定义关机画面
- Python代码测试策略_质量保障解析【教程】
- Windows7怎么找回经典开始菜单_Window
- Mac自带的词典App怎么用_Mac添加和使用多语
- Win11怎么清理C盘OneDrive缓存_Win
- Windows10电脑怎么设置电源按钮_Win10
- c++如何利用doxygen生成开发文档_c++
- Win10如何卸载Skype_Win10卸载Sky
- 如何使用Golang安装依赖库_管理模块和第三方包
- c++ std::atomic如何保证原子性 c+
- Win11怎么清理C盘虚拟内存_Win11清理虚拟
- Win11怎样激活系统密钥_Win11系统密钥激活
- Mac如何彻底清理浏览器缓存?(Safari与Ch
- Golang如何遍历目录文件_Golang fil
- 如何在 Go 后端安全获取并验证前端存储的 JWT
- Mac的访达(Finder)怎么用_Mac文件管理
- Win11怎么开启空间音效_Windows11耳机
- C#如何在一个XML文件中查找并替换文本内容
- Win11怎么关闭右下角弹窗_Win11拦截系统通
- Win11怎么关闭搜索历史_Win11清除任务栏搜
- Win11怎么关闭定位服务 Win11禁止应用获取
- Python如何创建带属性的XML节点
- Windows蓝屏错误0x0000002C怎么解决
- c++中如何使用auto关键字_c++11类型推导
- Go 中 defer 在 goroutine 内部
- Win10 BitLocker加密教程 Win10
- php订单日志怎么在swoole写_php协程sw
- Python与GPU加速技术_CUDA与Numba
- 如何使用Golang defer优化性能_减少不必

QQ客服