提问人:Maurice Klimek 提问时间:11/15/2023 最后编辑:mklement0Maurice Klimek 更新时间:11/16/2023 访问量:30
如何更改由 powershell 运行的 dotnet 应用程序的控制台窗口标题?
How to change the console window title of a dotnet application run by powershell?
问:
我正在使用 Powershell 脚本启动多个命令。dotnet run
$projectsRootDirectory = "$PSScriptRoot\.."
Start-Process -FilePath 'dotnet' `
-WorkingDirectory "$projectsRootDirectory\SomeProjectFolder" `
-ArgumentList 'run --launch-profile My.Profile --debug'
当我同时启动其中的 6 个时,我无法区分哪个是哪个。
从这样的问题中,我了解到使用 -c 参数是可能的:
Start-Process powershell '-c "$host.UI.RawUI.WindowTitle = \"Speed Test\"; .\SpeedTest.ps1"'
但据我了解,-c 参数用于命令。我可以通过命令实现相同的目的吗?powershell
dotnet run
答:
1赞
mklement0
11/16/2023
#1
在您的情况下,最简单的解决方案是调用 CLI 以调用其内部 start
命令,该命令与 Start-Process
相当,同时允许您直接设置控制台窗口标题:cmd.exe
$projectsRootDirectory = "$PSScriptRoot\.."
cmd /c @"
start /d "$projectsRootDirectory\SomeProjectFolder" "Speed Test" dotnet run --launch-profile My.Profile --debug
"@
请注意,使用 here-string 可以更轻松地使用嵌入式引号。
跟随其中任何一个拥有选项(例如设置新进程的工作目录)将紧跟在后面的 -enclosed 参数解释为新控制台窗口的标题,其余所有参数构成要启动的可执行文件以及任何参数。
/d
start
"..."
- 请注意,诸如 must 出现在窗口标题/可执行文件前面的选项加上要开始的参数。
/d
- 请注意,诸如 must 出现在窗口标题/可执行文件前面的选项加上要开始的参数。
Start-Process
相比之下,它不支持为应用程序设置控制台窗口标题,因此唯一的方法是让新启动的进程本身更改标题;如果该过程也是一个 shell(或 PowerShell CLI, / ),则可以使用后者的功能来执行此操作( 或 )。
虽然您可以使用此技术间接启动目标可执行文件,但上述技术更简单。cmd.exe
powershell.exe
pwsh.exe
title Speed Tests
[Console]::Title = 'Speed Test'
评论