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

如何在Windows 11中通过PowerShell调整Windows Terminal窗口大小?

问题描述

在Windows 11中直接启动PowerShell.exe时,窗口外观显示为Windows Terminal,但PowerShell进程的父进程实际是explorer.exe。常规调整PowerShell窗口大小的方法无法生效,例如:

$host.UI.RawUI.WindowSize = New-Object System.Management.Automation.Host.Size(80, 40)
Add-Type @" 
using System;
using System.Runtime.InteropServices;

public class Win32 {
    [DllImport("user32.dll")]
    public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
}
"@

$ThisProc = Get-Process -Id $PID
[Win32]::MoveWindow($ThisProc.MainWindowHandle, 100, 100, 600, 200, $true)

需要找到定位PowerShell所属Windows Terminal窗口并调整其大小的方法。

解决方案

思路说明

直接启动的PowerShell.exe是作为Windows Terminal的一个标签页运行的,因此需要先找到当前PowerShell控制台对应的父窗口(即Windows Terminal主窗口),再对该窗口进行大小调整。

实现代码

以下PowerShell脚本可以完成定位并调整窗口大小的操作:

Add-Type @"
using System;
using System.Runtime.InteropServices;

public class Win32 {
    // 获取当前控制台窗口句柄
    [DllImport("kernel32.dll")]
    public static extern IntPtr GetConsoleWindow();
    
    // 获取指定窗口的父窗口句柄
    [DllImport("user32.dll", SetLastError = true)]
    public static extern IntPtr GetParent(IntPtr hWnd);
    
    // 移动并调整窗口大小
    [DllImport("user32.dll")]
    public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
}
"@

# 获取当前控制台窗口句柄
$consoleHandle = [Win32]::GetConsoleWindow()

# 获取Windows Terminal主窗口句柄(控制台窗口的父窗口)
$terminalHandle = [Win32]::GetParent($consoleHandle)

# 调整Terminal窗口位置和大小:参数依次为句柄、X坐标、Y坐标、宽度、高度、是否重绘
[Win32]::MoveWindow($terminalHandle, 100, 100, 800, 600, $true)

补充说明

  • GetConsoleWindow()用于获取当前PowerShell控制台的窗口句柄,这个句柄对应的是Terminal中的单个标签页容器。
  • GetParent()通过控制台窗口句柄找到其父窗口,也就是Windows Terminal的主窗口。
  • MoveWindow()的参数可以根据需求修改,其中X和Y是窗口左上角的屏幕坐标,nWidth和nHeight是窗口的宽高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 11:12:07