如何更改由 powershell 运行的 dotnet 应用程序的控制台窗口标题?

How to change the console window title of a dotnet application run by powershell?

提问人:Maurice Klimek 提问时间:11/15/2023 最后编辑:mklement0Maurice Klimek 更新时间:11/16/2023 访问量:30

问:

我正在使用 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 参数用于命令。我可以通过命令实现相同的目的吗?powershelldotnet run

PowerShell 控制台 net-6.0 标题

评论


答:

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 参数解释为新控制台窗口的标题,其余所有参数构成要启动的可执行文件以及任何参数。/dstart"..."

    • 请注意,诸如 must 出现在窗口标题/可执行文件前面的选项加上要开始的参数。/d
  • Start-Process相比之下,它不支持为应用程序设置控制台窗口标题,因此唯一的方法是让新启动的进程本身更改标题;如果该过程也是一个 shell(或 PowerShell CLI, / ),则可以使用后者的功能来执行此操作( 或 )。
    虽然您可以使用此技术间接启动目标可执行文件,但上述技术更简单。
    cmd.exepowershell.exepwsh.exetitle Speed Tests[Console]::Title = 'Speed Test'