【问题标题】:Change powershell Title on every command在每个命令上更改 powershell 标题
【发布时间】:2026-01-05 20:45:03
【问题描述】:

我想在窗口的标题中显示我在powershell中输入的最后一个命令,以便更容易找到

目前我有:

C:\> $host.ui.rawui.WindowTitle = $$

但这只是获取与我输入时相关的上一个命令,所以如果我有

C:\> cd
C:\> $host.ui.rawui.WindowTitle = $$

标题保持cd,而不是随着我给它的每个命令而改变。 有没有办法可以设置标题,以便它随着我输入的每个命令而改变,即

进入

 C:\> cd

将其更改为cd,然后

 C:\> python 

将其更改为python

【问题讨论】:

  • 也许您的意思是$^(第一个令牌),而不是$$(最后一个令牌)。这对于带有参数的命令很重要,例如cd \temp.
  • 获得第一个令牌,但它仅在我运行命令时才会改变 - 我想我的问题是,有没有办法获取命令 [$host.ui.rawui.WindowTitle = $^ ] 每次我在 powershell 中运行任何命令时运行?

标签: powershell


【解决方案1】:

您可以使用您的个人资料中定义的自定义函数prompt。 例如:

function prompt {
    # get the last command from history
    $command = Get-History -Count 1

    # set it to the window title
    if ($command) {
        $host.ui.rawui.WindowTitle = $command
    }

    # specify your custom prompt, e.g. the default PowerShell:
    "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}

注意:在此函数中使用$^$$ 没有帮助,它们尚未设置为最后一个命令数据。

【讨论】:

  • 谢谢 - 效果很好!
  • 这个答案比我的好。只想添加如何查找您的配置文件:输入 $PROFILE 以查看您的 PowerShell 配置文件的路径。