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

PowerShell使用其他AD账号执行Start-Process启动应用失败如何解决?

PowerShell切换AD账号启动管理工具解决方案

问题根因

  • 路径与参数未拆分:Start-Process的-FilePath参数仅接受可执行文件/目标文件的完整路径,不能携带启动参数。你之前将启动参数和路径写在同一个字符串内,导致程序识别为无效路径,系统抛出的「账号锁定」报错属于误导性提示,和账号实际状态无关。
  • 环境变量格式错误:PowerShell不支持CMD风格的%变量名%格式环境变量,必须使用$env:变量名格式才能正确解析出系统路径。
  • MMC控制台适配问题:msc类管理控制台的启动参数需要通过-ArgumentList单独传递,和你单独测试compmgmt.msc的运行逻辑一致。

修复后完整脚本

# 定义应用列表,拆分文件路径与启动参数
$ApplicationList = @(
    @{
        FilePath = "$env:windir\system32\dsac.exe"
        ArgumentList = $null
    },
    @{
        FilePath = "$env:windir\system32\compmgmt.msc"
        ArgumentList = "/s"
    },
    @{
        FilePath = "$env:windir\system32\mmc.exe"
        ArgumentList = "$env:windir\system32\Cluadmin.msc"
    },
    @{
        FilePath = "$env:SystemRoot\system32\mmc.exe"
        ArgumentList = "$env:SystemRoot\system32\dnsmgmt.msc"
    }
)

$credential = Get-Credential -Message "使用管理员账号登录" -Title "切换账号启动脚本"
ForEach ($app in $ApplicationList) {
    $startParams = @{
        FilePath = $app.FilePath
        Credential = $credential
    }
    # 存在启动参数时再传入ArgumentList
    if ($app.ArgumentList) {
        $startParams.ArgumentList = $app.ArgumentList
    }
    Start-Process @startParams
}

补充说明

如果需要新增其他管理工具,只需按照数组内的格式,拆分好对应程序的路径和启动参数即可,不需要修改其他逻辑。

内容的提问来源于stack exchange,提问作者Senior Systems Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:51:00