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

PowerShell批量静默安装Asana桌面端脚本执行失败求助

Asana桌面端批量部署脚本Ninja RMM执行失败问题排查与修复

根因分析

  • 执行上下文不匹配:Ninja RMM默认以SYSTEM系统账户执行脚本,Asana桌面端默认是单用户安装程序,安装路径默认写入当前执行用户的AppData目录,SYSTEM账户的目录普通登录用户不可见,自然看不到安装好的Asana
  • TLS版本限制:PowerShell默认使用TLS 1.0发起请求,Asana下载站点已禁用低版本TLS,SYSTEM账户无特殊配置的情况下会下载安装包失败,原脚本没有错误捕获逻辑,不会触发失败告警
  • 静默安装参数错误:AsanaSetup.exe基于Squirrel框架打包,标准静默安装参数为--silent,原脚本使用的/install /quiet /norestart参数仅适用于MSI包或InstallShield打包的程序,参数不匹配会导致安装进程直接闪退
  • 写入路径权限问题:部分设备的C盘根目录对SYSTEM账户有写入限制,原脚本创建的C:\files目录可能写入失败,导致安装包下载到无效路径

修复后可用脚本

<#
Asana桌面端静默部署脚本,适配Ninja RMM执行环境
#>
# 强制启用TLS1.2适配下载站点要求
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# 使用系统临时目录替代C盘根目录,避免权限问题
$installerPath = Join-Path $env:TEMP "AsanaSetup.exe"

try {
    # 直接下载安装包,省略冗余HEAD请求避免被站点拦截
    Invoke-WebRequest -Uri "https://desktop-downloads.asana.com/win32_x64/prod/latest/AsanaSetup.exe" -OutFile $installerPath -UseBasicParsing -ErrorAction Stop

    # 使用正确的静默参数启动安装
    $installProcess = Start-Process -FilePath $installerPath -ArgumentList "--silent" -Wait -PassThru -NoNewWindow
    
    # 清理安装包
    Remove-Item $installerPath -Force -ErrorAction SilentlyContinue

    # 返回正确的退出码给Ninja RMM触发告警
    exit $installProcess.ExitCode
}
catch {
    # 捕获任意阶段错误返回非0退出码
    Write-Error $_.Exception.Message
    exit 1
}

部署注意事项

  • 如果需要让设备上的普通登录用户能看到Asana,需要在Ninja RMM的脚本执行配置中,将执行上下文修改为当前登录用户,不要使用默认的SYSTEM账户
  • 如果需要批量为设备上所有用户预安装Asana,可以下载Asana提供的MSI企业部署包,配合ALLUSERS=1参数进行系统级安装
  • 若设备配置了企业代理,可以在Invoke-WebRequest参数中添加-Proxy参数指定代理地址,适配SYSTEM账户无代理配置的场景

内容的提问来源于stack exchange,提问作者Danny.Garrido

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:18:03