powershell - 启动新进程时如何在 PowerShell 中更改 UI 标题
问题描述
我正在尝试使用Start-Process
PowerShell 中的 cmdlet 在新窗口中运行 PS 脚本,其标题标识正在运行的脚本。例如,我想SpeedTest.ps1
在标题为“速度测试”的窗口中运行我的脚本。在阅读了许多类似问题的答案后,我认为这将是一项简单的任务。但是,它似乎不起作用。我的PS代码是:
$host.UI.RawUI.WindowTitle = "Speed Test"
Start-Process powershell -ArgumentList .\SpeedTest.ps1
该脚本按预期在新窗口中运行,但窗口的标题是“Windows PowerShell”而不是“速度测试”。我验证WindowTitle
变量设置为“速度测试”,但无法弄清楚为什么窗口标题不会改变。我究竟做错了什么?
解决方案
通过/ (隐含在 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'
推荐阅读
- regex - Apache Hive regEx serde:混合格式(json)的正确正则表达式
- java - GWT编译器错误缺少java的核心库
- asp.net-core-2.2 - asp.net core 2.2 重定向身份登录路径
- c# - 如何使用变量而不是 id 在 asp.net aspx.cs 文件中选择 html 元素
- javascript - 除了获取下一个父元素的子元素之外,如何仅获取 XML 子元素(如果它存在)?
- sql - 从连接表中选择值作为单列
- objective-c - 显示上传图像的历史记录
- machine-learning - 如何计算多类总体准确度、敏感性和特异性?
- c# - C# 每个 ID 仅触发一次延迟作业
- angular - 以编程方式登录到在 Cognito 中配置为 SAML 身份提供者的 Okta