【问题标题】:How do I create a new custom profile in Windows Terminal from a Powershell script?如何从 Powershell 脚本在 Windows 终端中创建新的自定义配置文件?
【发布时间】:2022-10-04 22:26:00
【问题描述】:
我正在创建一个 PowerShell 脚本来帮助我在新 PC 上安装和配置软件。发出 PowerShell 命令安装 Windows 终端后,我想添加设置自定义配置文件的其他命令。使用终端 GUI 来创建这些配置文件很容易(设置->添加新配置文件->等),但我想自动化它。
我唯一的选择是直接查找和编辑终端的 settings.json 吗?或者是否有 API 调用使这成为可能?
【问题讨论】:
标签:
powershell
windows-terminal
【解决方案1】:
Windows 终端有一个称为JSON Fragment Extensions 的功能,开发人员无需直接修改settings.json 即可添加其他配置文件。
最困难的部分是为您的个人资料名称创建正确的 GUID——我自己并不能 100% 确定这个过程,我没有亲自尝试过,但至少该页面上有示例 Python 代码。一旦确定了配置文件的 GUID,就可以对其进行硬编码——在安装过程中无需以编程方式进行。
由于这听起来不像您正在开发商店应用程序,因此出于where to place 片段的目的,您可能会被视为“从网络安装的应用程序”。对于系统上的所有用户,您可以将其放入C:ProgramDataMicrosoftWindows TerminalFragments{app-name}{file-name}.json,对于单个用户,您可以将其放入C:Users<user>AppDataLocalMicrosoftWindows TerminalFragments{app-name}{file-name}.json。
请注意,由于您说您将使用 PowerShell 进行安装,文档中提到您必须使用 UTF-8 编码(例如Out-File $fragmentPath -Encoding Utf8)。
如果您想查看一些真实的、有效的 JSON 片段示例,我知道的以下应用程序利用了该功能:
- Git 重击
- 适用于 WSL 的 Ubuntu 22.04
您可以通过启动管理 PowerShell 并运行以下命令找到 Ubuntu(可能还有其他一些):
Get-ChildItem -Recurse 'C:Program FilesWindowsApps' | Where-Object {$_.Name -like 'terminal.json' }