如何通过PowerShell从Microsoft Store安装应用程序
通过脚本自动化安装Microsoft Store应用的可行方案
嘿,我明白你想要通过脚本批量/自动化安装Microsoft Store应用的需求——确实,这类操作不像卸载默认应用那么直观,但其实是有几种靠谱的实现方式,和卸载默认应用的命令行思路是相通的,下面给你详细拆解:
一、使用Winget(微软官方包管理器,最推荐)
这是目前微软官方主推的命令行包管理工具,完美支持从Microsoft Store拉取并安装应用,操作逻辑和卸载默认应用的自动化脚本非常类似,都是通过命令行批量执行。
操作步骤:
- 确认Winget已安装:Win11系统一般自带,Win10用户可以从Microsoft Store安装「App Installer」应用,就能获得Winget。
- 查找应用的ID或名称:
在PowerShell/命令提示符里运行:
比如查找微信:winget search "应用名称"winget search 微信,会返回应用的唯一ID(比如9NKSQGP7F2NH)。 - 编写安装脚本:
单个应用安装命令:
批量安装的话,可以写个PowerShell脚本(winget install 9NKSQGP7F2NH # 或者直接用应用名称(如果唯一的话) winget install "微信".ps1):
参数说明:# 批量安装Store应用 $apps = @( "9NKSQGP7F2NH", # 微信 "9WZDNCRFHVQM", # 腾讯视频 "9PFHDD62MXS1" # 网易云音乐 ) foreach ($appId in $apps) { Write-Host "正在安装 $appId..." winget install $appId --silent --accept-package-agreements --accept-source-agreements }--silent静默安装,--accept-package-agreements自动同意协议,适合无人值守。
二、PowerShell的Add-AppxPackage命令(对应卸载的Remove-AppxPackage)
这个方法和你熟悉的卸载默认应用的Remove-AppxPackage是同一系列的命令,适合你已经获取到应用的安装包文件(.appx/.appxbundle)的场景。
操作步骤:
- 获取应用安装包:你可以通过工具提取Microsoft Store应用的安装包(比如从Store下载后缓存的文件,或者通过官方渠道获取特定应用的包)。
- 编写安装脚本:
这个方法完全是卸载命令的反向操作,逻辑上和你熟悉的卸载脚本一致。# 安装主应用包 Add-AppxPackage -Path "C:\Downloads\WeChat.appxbundle" # 如果有依赖包,先安装依赖 Add-AppxPackage -Path "C:\Downloads\Dependencies\*.appx"
三、通过Store应用Product ID直接拉取安装(进阶玩法)
如果不想提前下载安装包,可以通过应用的Product ID直接从微软服务器获取安装链接并安装,适合动态获取最新版本的应用。
操作脚本示例:
# 替换为你要安装的应用Product ID(从Store网页URL提取,比如微信是9NKSQGP7F2NH) $productId = "9NKSQGP7F2NH" $market = "CN" # 替换为你的区域代码,比如US、CN # 获取应用安装链接 $apiUrl = "https://storeedgefd.dsx.mp.microsoft.com/v9.0/products/$productId?market=$market&locale=zh-CN" $response = Invoke-WebRequest -Uri $apiUrl -UseBasicParsing $appInfo = $response.Content | ConvertFrom-Json $installUri = $appInfo.InstallationInfo.Uri # 开始安装 Add-AppxPackage -Uri $installUri
注意事项:
- 有些应用可能需要特定的系统版本或依赖,安装失败时可以查看PowerShell的错误信息排查。
- 如果你需要管理员权限运行脚本,可以在脚本开头添加:
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Start-Process PowerShell -Verb RunAs -ArgumentList "-File `"$PSCommandPath`"" exit }
内容的提问来源于stack exchange,提问作者Pavel




