如何在Windows Terminal中移除PowerShell广告和更新检查?

16
当我启动Windows终端时,会出现以下内容:

enter image description here

如何去除版权和版本通知、帮助URL以及更新检查?我只想进入命令行。

我的PowerShell配置文件settings.json(Windows终端的配置文件)如下:

{
    "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
    "hidden": false,
    "name": "PowerShell",
    "source": "Windows.Terminal.PowershellCore",
    "fontFace": "Cascadia Code PL",
    "startingDirectory": "C:\\Users\\user1\\desktop\\"
}

我见过像-nologo之类的标志,但我没有命令行可以传递它。

3
这回答解决了你的问题吗?如何移除PowerShell的启动文本? - Cpt.Whale
如何删除PowerShell的“Start”文本 - Cpt.Whale
1
@user19702,链接的帖子只回答了问题的一半; 此外,这个问题具体关注的是Windows终端。 - mklement0
它实际上涵盖了整个事情。传递“-nologo”命令会启动仅显示命令行的环境。并且那里的答案也涵盖了Windows终端。 - TylerH
2个回答

24

更新:

  • 下面的答案向您展示了如何直接编辑您的settings.json文件

  • 至少在Windows Terminal 1.16中,您也可以使用GUI感谢Chris

    • 打开设置选项卡(例如通过Ctrl-,
    • 在左侧侧边栏底部,单击+添加新配置文件,然后在复制配置文件旁边选择现有的PowerShell(Core)配置文件,然后按复制按钮。
    • 单击命令行,并通过附加-nologo来修改现有的命令行,如下所示。

在 Windows 终端的 settings.json 文件中创建一个自定义档案,方法如下(在 profiles.list 数组属性内):

至少从 PowerShell 7.2.1 开始,-nologo 也会停用更新通知:感谢Maximilian Hils

{
    // no strict need for a GUID; create a *new* one, if needed.
    "hidden": false,
    "name": "PowerShell - no logo, no update notification",
    "commandline": "pwsh.exe -nologo"
    // ... other properties omitted.
},

在早期版本中,您可能需要使用环境变量POWERSHELL_UPDATECHECK来禁用更新通知:
{
    // no strict need for a GUID; create a *new* one, if needed.
    "hidden": false,
    "name": "PowerShell - no logo, no update notification",
    "commandline": "cmd /c set POWERSHELL_UPDATECHECK=Off & pwsh.exe -nologo"
    // ... other properties omitted.
},
  • 如果需要,从您的问题中显示的动态配置文件中复制startingDirectoryfontFace属性。(动态配置文件是由Windows Terminal自动生成的,取决于安装了哪些shell;它们具有一个source属性,其值以Windows.Terminal开头,如您问题中显示的条目所示。

  • 在这种情况下,没有严格需要guid属性(通常,名称和GUID可以互换使用来标识配置文件);如果您确实使用了一个,创建一个新的GUID(例如使用New-Guid)。

    • 如果您想使用与动态PowerShell Core配置文件相同的name值,则最好通过将其hidden属性设置为true隐藏后者。
  • 自定义配置文件使用commandline属性来定义生成具有此配置文件的选项卡时要执行的命令。上面的值假定PowerShell的可执行文件pwsh.exe在您的路径中;如果不在路径中,因此需要指定完整路径,请务必双倍\字符。(例如\"C:\\Program Files\\PowerShell\\7\\pwsh.exe\")或使用/代替(例如\"C:/Program Files/PowerShell/7/pwsh.exe\"

  • 可能在7.2.1之前的PowerShell版本中需要:

    • cmd /c set POWERSHELL_UPDATECHECK=Off定义相关环境变量以关闭PowerShell的更新通知,然后启动PowerShell。

      • 这意味着您的PowerShell实例将具有一个cmd.exe父进程,但这不应该是问题。
    • 您还可以通过注册表持久地定义此环境变量,这样就不再需要cmd.exe了。

  • PowerShell的CLI传递-nologo可以抑制“标志”,即版权消息和帮助提示。

    • 至少在PowerShell 7.2.1中,-nologo自动停用更新通知-潜在地,它一直以这种方式工作。

3
非常好,现在POWERSHELL_UPDATECHECK是一个环境变量了,所以命令行只需要输入pwsh.exe -nologo - AngryHacker
1
在 PowerShell 7.2.1 上,只需在命令行中添加“-nologo”,就足以抑制更新消息。 - Maximilian Hils
1
@mklement0:我恰好使用的是7.2.1版本,传递“-nologo”就足够了。这可能是在早期版本中引入的。 :) - Maximilian Hils
2
作为扩展,如果您想在 VScode 终端中隐藏标志,您可以在设置 json 的 "terminal.integrated.profiles.windows": {"PowerShell":{...}} 部分中指定 "args":["-nologo"] - LSgeo

1

我不会称这为一种解决方法,但如果有人不想深入了解如何禁用终端设置的详细信息,您可以在配置文件中的代码末尾添加clear-host,我把它放在底部,这样每次打开控制台时都会清除它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接