AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 548103
Accepted
Brad
Brad
Asked: 2013-10-24 08:49:32 +0800 CST2013-10-24 08:49:32 +0800 CST 2013-10-24 08:49:32 +0800 CST

自定义 powershell 字体和大小

  • 772

我们有许多 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
  • 1 1 个回答
  • 29747 Views

1 个回答

  • Voted
  1. Best Answer
    Ryan Ries
    2013-10-24T10:13:51+08:002013-10-24T10:13:51+08:00

    Powershell(不是 ISE)利用“控制台主机”,它是对古老的MS-DOS 命令提示符的稍微更现代的更新。控制台主机是 Microsoft 保持命令提示符与现代版本的 Windows 兼容的方式,但仍与旧的控制台应用程序兼容。

    当您启动 Powershell.exe 时,csrss.exe 会生成一个名为 conhost.exe 的子进程。此行为与启动 Cmd.exe 时相同。

    但由于他们必须保持与旧控制台应用程序的兼容性,他们不能过多地改变外观和感觉,也不能去改变和破坏一堆内部界面。

    我不会说这是不可能的,但它比人们想象的要难。

    (Get-Host).UI.RawUI里面什么都没有 System.Console.NET 类中没有任何内容。

    您可以通过执行以下操作更改注册表中的字体和大小:

    (编辑:下划线不是斜线)

    Set-Location HKCU:\Console
    New-Item '.\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe'
    Set-Location '.\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe'
    
    New-ItemProperty . FaceName -type STRING -value "Lucida Console"
    New-ItemProperty . FontFamily -type DWORD -value 0x00000036
    New-ItemProperty . FontSize -type DWORD -value 0x000c0000
    New-ItemProperty . FontWeight -type DWORD -value 0x00000190
    

    kernel32.dll 中还有一堆导出会改变字体:

    typedef struct _CONSOLE_FONT {
    
       DWORD index;
    
       COORD dim;
    
    } CONSOLE_FONT; 
    
    BOOL WINAPI SetConsoleFont(HANDLE hOutput, DWORD fontIndex);
    BOOL WINAPI GetConsoleFontInfo(HANDLE hOutput, BOOL bMaximize, DWORD numFonts, CONSOLE_FONT* info);
    DWORD WINAPI GetNumberOfConsoleFonts();
    BOOL WINAPI SetConsoleIcon(HICON hIcon);
    
    • 4

相关问题

  • 资源锁和电源外壳

  • 脚本 - 如何断开远程桌面会话?

  • 如何限制向通讯组发送到外部地址?

  • Powershell对值与数组的作用不同?

  • Windows Powershell Vim 键绑定

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve