通过 Windows 终端最大化启动 Powershell

通过 Windows 终端最大化启动 Powershell

简短描述:
如果pwsh/powershell没有运行最大化,请重新打开最大化

我已经安装了pwshwt,并将其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

感谢所有通过回答或评论提供帮助的人

相关内容