我们有许多 Windows 2012 服务器核心系统,使用以下命令将 powershell 设置为默认 shell:
$RegPath = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\winlogon"
Set-ItemProperty -Confirm -Path $RegPath -Name Shell -Value 'cmd.exe /C start /max PowerShell.exe -noExit'
我发现我们可以在 c:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 使用特殊的 powershell 脚本自定义 powershell 字体颜色。该脚本被所有用户使用。
但是现在我想自定义持久的字体和字体大小(同样适用于所有用户)。IE 如果我退出服务器并重新登录,我希望保留这些设置。同样,如果我以管理员身份登录,或者我自己的帐户 powershell 应该看起来相同 - 使用相同的字体颜色、字体和字体大小。
使用 Powershell ISE,似乎可以使用以下方法设置字体和字体大小:
$psISE.Options.FontName = 'Lucida Sans Console'
$psISE.Options.FontSize = 14
但是,powershell 本身的等价物是什么?
Powershell(不是 ISE)利用“控制台主机”,它是对古老的MS-DOS 命令提示符的稍微更现代的更新。控制台主机是 Microsoft 保持命令提示符与现代版本的 Windows 兼容的方式,但仍与旧的控制台应用程序兼容。
当您启动 Powershell.exe 时,csrss.exe 会生成一个名为 conhost.exe 的子进程。此行为与启动 Cmd.exe 时相同。
但由于他们必须保持与旧控制台应用程序的兼容性,他们不能过多地改变外观和感觉,也不能去改变和破坏一堆内部界面。
我不会说这是不可能的,但它比人们想象的要难。
(Get-Host).UI.RawUI
里面什么都没有System.Console
.NET 类中没有任何内容。您可以通过执行以下操作更改注册表中的字体和大小:
(编辑:下划线不是斜线)
kernel32.dll 中还有一堆导出会改变字体: