如何通过脚本获取PowerShell控制台的字体大小?
如何通过脚本获取PowerShell控制台的字体大小?
我明白你想要的是和PowerShell控制台属性里显示的完全一致的字体大小数值,之前尝试的几种方法要么找不到对应值,要么得到的是其他参数,我来帮你解决这个问题。
方法一:从注册表获取默认字体大小(需转换)
你从注册表拿到的FontSize值(比如十进制1835025,对应十六进制0x1C0011)其实是个组合值:它的低16位代表字体的像素高度,高16位代表字体的像素宽度。我们可以用位运算提取出像素高度:
# 读取注册表中的字体大小值 $fontSizeReg = (Get-ItemProperty "HKCU:\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe").FontSize # 提取低16位得到像素高度 $pixelHeight = $fontSizeReg -band 0xFFFF Write-Host "字体像素高度: $pixelHeight"
而控制台属性里显示的“字体大小”是字体点数(pt),如果你的系统是默认96DPI(100%缩放),可以通过公式把像素高度转换成点数:
$pointSize = [math]::Round($pixelHeight * 72 / 96) Write-Host "对应属性显示的字体点数大小: $pointSize"
⚠️ 注意:注册表的值是控制台的默认设置,如果你在运行时临时修改了字体大小,这个值不会实时更新。
方法二:调用Windows API获取实时字体大小(更准确)
如果想获取当前正在运行的控制台的实时字体大小,$Host.UI.RawUI确实没有暴露这个属性,我们可以直接调用Windows原生API来实现。下面是一段可直接运行的脚本:
Add-Type @" using System; using System.Runtime.InteropServices; public class ConsoleFontUtils { [StructLayout(LayoutKind.Sequential)] public struct CONSOLE_FONT_INFO { public uint nFont; public COORD dwFontSize; } [StructLayout(LayoutKind.Sequential)] public struct COORD { public short X; public short Y; } [DllImport("kernel32.dll", SetLastError = true)] public static extern bool GetCurrentConsoleFont(IntPtr hConsoleOutput, bool bMaximumWindow, out CONSOLE_FONT_INFO lpConsoleCurrentFont); [DllImport("kernel32.dll", SetLastError = true)] public static extern IntPtr GetStdHandle(int nStdHandle); } "@ # 获取标准输出句柄 $stdOutHandle = [ConsoleFontUtils]::GetStdHandle(-11) $fontInfo = New-Object ConsoleFontUtils+CONSOLE_FONT_INFO # 获取当前控制台字体信息 [ConsoleFontUtils]::GetCurrentConsoleFont($stdOutHandle, $false, [ref]$fontInfo) | Out-Null $pixelHeight = $fontInfo.dwFontSize.Y # 转换为对应点数(默认96DPI) $pointSize = [math]::Round($pixelHeight * 72 / 96) Write-Host "当前控制台字体像素高度: $pixelHeight" Write-Host "对应属性显示的字体点数大小: $pointSize"
这段脚本通过GetCurrentConsoleFont API直接读取当前控制台的字体尺寸,转换后就能得到和属性里完全一致的数值,就算你临时修改了字体大小也能实时获取。
关于WindowsConsoleFonts模块
你提到的(Get-ConsoleFont).Size返回的是控制台窗口的缓冲区大小(宽×高),并不是字体本身的大小,所以这个模块没法帮你获取目标值。
备注:内容来源于stack exchange,提问作者Mr.Key7
相关产品推荐
相关产品推荐

