首页 > 解决方案 > 启动新进程时如何在 PowerShell 中更改 UI 标题

问题描述

我正在尝试使用Start-ProcessPowerShell 中的 cmdlet 在新窗口中运行 PS 脚本,其标题标识正在运行的脚本。例如,我想SpeedTest.ps1在标题为“速度测试”的窗口中运行我的脚本。在阅读了许多类似问题的答案后,我认为这将是一项简单的任务。但是,它似乎不起作用。我的PS代码是:

$host.UI.RawUI.WindowTitle = "Speed Test"
Start-Process powershell -ArgumentList .\SpeedTest.ps1

该脚本按预期在新窗口中运行,但窗口的标题是“Windows PowerShell”而不是“速度测试”。我验证WindowTitle变量设置为“速度测试”,但无法弄清楚为什么窗口标题不会改变。我究竟做错了什么?

标签: powershell

解决方案


通过/ (隐含在 Windows PowerShell 中,而 PowerShell [Core] v6+ 现在默认为)创建更改您传递给powershell.exe可执行文件的命令字符串的窗口标题部分的语句:-c-Command-File

Start-Process powershell '-c "$host.UI.RawUI.WindowTitle = \"Speed Test\"; .\SpeedTest.ps1"'

注意:既然你知道你正在启动一个新的控制台窗口,你可以使用更简洁的[Console]::Title = ...

请注意,由于 PowerShell 的启动速度不是最快的,因此在窗口标题更改之前需要一些时间;以下使用cmd.exe' 的内部start命令的技术会立即更改窗口标题,但请注意,新窗口的颜色将是 的颜色cmd.exe,而不是 PowerShell 的颜色:

cmd /s /c 'start "Speed Test" powershell.exe -file .\SpeedTest.ps1'

推荐阅读