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

使用Start-Process以管理员身份运行同脚本的PowerShell问题

解决PowerShell管理员重启会话时的控制台尺寸传递问题

已解决的控制台闪关问题

之前遇到新PowerShell控制台闪关,即便加了-NoExit也无效,核心原因是脚本路径含空格但未加引号,导致Start-Process无法正确解析路径参数。解决方式是将脚本路径用双引号包裹,在-ArgumentList中通过转义确保引号生效,比如:

Start-Process powershell.exe -Verb RunAs -ArgumentList "-NoExit", "& `"$PSCommandPath`""

传递原控制台尺寸到新管理员会话

要把原快捷方式设置的控制台宽度、高度传递给新的管理员会话,避免自动换行问题,可按以下步骤实现:

  1. 获取当前控制台的尺寸参数
    直接读取当前会话的窗口大小和缓冲区大小:

    $windowSize = $host.ui.rawui.WindowSize
    $bufferSize = $host.ui.rawui.BufferSize
    
  2. 启动管理员进程时注入尺寸设置命令
    在启动新PowerShell进程的参数中,先执行控制台尺寸设置命令,再运行目标脚本并保留原传入参数:

    # 构建完整参数列表:先设置尺寸,再执行脚本
    $startArgs = @(
        "-NoExit",
        "-Command",
        # 设置窗口大小
        "`$host.ui.rawui.WindowSize = [System.Management.Automation.Host.Size]::new($($windowSize.Width), $($windowSize.Height));",
        # 设置缓冲区大小(避免内容截断)
        "`$host.ui.rawui.BufferSize = [System.Management.Automation.Host.Size]::new($($bufferSize.Width), $($bufferSize.Height));",
        # 调用原脚本并传递所有参数
        "& `"$PSCommandPath`" $($args -join ' ')"
    )
    
    # 启动管理员权限的PowerShell
    Start-Process powershell.exe -Verb RunAs -ArgumentList $startArgs
    

这样新启动的管理员会话会完全继承原会话的控制台尺寸,解决宽度不足导致的自动换行问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:10:59