You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell安装MS Store等Appx包时如何分段以管理员和本地用户运行

解决方案

你可以通过身份检测+临时文件传递参数的方式实现权限拆分,无需手动输入凭据,实现逻辑如下:

  • 脚本启动后先判断运行身份:
    • 如果是管理员身份:先执行获取所有用户下Appx包全路径的逻辑,将获取到的包名列表写入公共临时文件,之后主动降权触发当前脚本以普通用户身份运行
    • 如果是普通用户身份:直接读取临时文件中的包名列表,逐个执行应用注册操作
  • 全流程执行完成后自动清理临时文件

修改后可直接运行的完整脚本如下:

# 定义需要安装的应用列表
$NAMES = @(
        "WindowsStore"
        "Photos"
        "WindowsCalculator"
        )
$tempFile = Join-Path $env:TEMP "appx_install_list.tmp"

# 检测当前是否为管理员身份
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$isAdmin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if ($isAdmin) {
    # ========== 管理员权限执行部分 ==========
    $packageList = @()
    foreach ($NAME in $NAMES) {
        Write-Host "正在查询$NAME 包信息..."
        $PackageFullName = Get-Appxpackage -Allusers -Name *$NAME | Sort-Object Version -Descending | Select-Object -ExpandProperty PackageFullName -First 1
        if ($PackageFullName) {
            $packageList += $PackageFullName
        } else {
            Write-Warning "未找到$NAME 的安装包,请确认系统已预存该应用的部署文件"
        }
    }
    # 将包名列表写入临时文件
    $packageList | Out-File $tempFile -Encoding UTF8

    # 以当前普通用户身份重新启动脚本执行注册逻辑
    Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -UseNewEnvironment -Wait

    # 执行完成后清理临时文件
    Remove-Item $tempFile -Force -ErrorAction SilentlyContinue
    exit
} else {
    # ========== 普通用户权限执行部分 ==========
    if (-not (Test-Path $tempFile)) {
        Write-Error "未找到包信息文件,请先以管理员身份运行本脚本"
        pause
        exit 1
    }
    $packageList = Get-Content $tempFile -Encoding UTF8
    foreach ($PackageFullName in $packageList) {
        Write-Host "正在注册应用:$PackageFullName"
        Add-AppxPackage -register "C:\Program Files\WindowsApps\$PackageFullName\AppxManifest.xml" -DisableDevelopmentMode
    }
    Write-Host "所有应用注册完成"
    pause
    exit
}

注意事项

  • 直接右键选择「以管理员身份运行」脚本即可自动完成全流程,不需要手动切换权限或者输入凭据
  • 脚本中已添加取最新版本包的逻辑,避免系统存在多个版本部署包时出现注册错误
  • 如果需要新增要安装的应用,直接在$NAMES数组中添加对应的应用名称即可

内容的提问来源于stack exchange,提问作者Tealk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:36:04