简短描述:
如果pwsh
/powershell
没有运行最大化,请重新打开最大化
我已经安装了pwsh
和wt
,并将其pwsh
作为 中的默认控制台wt
,并且在某些脚本中,我想wt
运行最大化(wt
默认情况下不以最大化模式运行。我不想设置它)。
在此.ps1
,需要什么代码来确定是否wt
未全屏/最大化运行,如果不是,则以最大化重新打开它?
# demo.ps1
#$IsMax =
If (!$IsMax) {
wt.exe -M PWSH $PSCommandPath; exit 0
}
pause
答案1
例如,您可以:
- 获取 PowerShell 脚本的父 Windows Terminal 进程:
(Get-WmiObject Win32_Process -Filter "ProcessId = $PID").ParentProcessId
或者更简单:
(Get-Process -Id $PID).Parent.Id
如果您以管理员身份运行。
检查具有该 ID 的进程是否全屏。由于 PS API 缺少此类数据,因此没有简单的方法可以做到这一点,但一种解决方法是检查
CommandLine
进程的属性以检查它是否使用-F
/以全屏模式启动-FullScreen
。当然,这不会考虑您使用键盘快捷键或任何非 CLI 方式切换到/从全屏切换的情况。以全屏方式重新启动 Windows Terminal,并运行您想要运行的任何内容,例如:
wt -F -d "$(pwd)" somescript.ps1
-F
全屏的参数在哪里。
考虑到第二点,我认为不值得为了偶尔节省几秒钟而去寻求完全最佳的解决方案。我建议始终以全屏模式重新启动。
答案2
要以全屏模式启动 Windows 终端:
- 进入“设置”,“启动”部分
- 打开分支“启动参数”
- 将“启动模式”更改为“全屏”。
请注意,按下F11终端将在全屏和正常模式之间切换。
答案3
经过谷歌搜索和一些测试后,我终于找到了我想要的东西。
如果 WT 未最大化,则重新启动以最大化
基于:确定 PowerShell 控制台的大小
要检查它是否最大化,可以通过查找$Host.UI.RawUI.WindowSize.Width
$IsWTRun = 'WindowsTerminal' -in (Get-Process).Name
# WindowSize.Width while Maximized: WT=95, NotWT=103 (in my PC)
If ($IsWTRun) {$WID = 95} else {$WID = 103}
$IsMax = $Host.UI.RawUI.WindowSize.Width -eq $WID
if ( $IsMax ) {'in M.A.X.I.M.I.Z.E.D'; pause; exit 0}
$PS7 = $Host.Version.Major -eq 7
if ( $PS7 ) {wt.exe -M PWSH $PSCommandPath; exit 0}
$AL = "-M -d `"$PSScriptRoot`" -p `"Windows PowerShell`"",
"PowerShell -NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`""
start wt.exe -ArgumentList $AL ; exit 0
感谢所有通过回答或评论提供帮助的人