Налаштування розміру та розміру шрифту powerhell


10

У нас є декілька ядерних систем сервера Windows 2012 з налаштуванням панцира як оболонки за замовчуванням, використовуючи наступні команди:

$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'

Я зрозумів, що ми можемо налаштувати колір шрифту powerhell за допомогою спеціального скрипта powerhell за адресою c: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ profile.ps1. Цим сценарієм користуються всі користувачі.

Однак тепер я хочу налаштувати шрифт і розмір шрифту (знову ж таки для всіх користувачів), який є стійким. IE Якщо я виходжу з сервера і знову входжу в систему, я хочу зберегти налаштування. Так само, якщо я ввійду в якості адміністратора, або ж власний обліковий запис власного облікового запису повинен виглядати однаково - використовуйте однаковий колір шрифту, обличчя шрифту та розмір шрифту.

За допомогою Powershell ISE можливо встановити обличчя та розмір шрифту за допомогою:

$psISE.Options.FontName = 'Lucida Sans Console' 
$psISE.Options.FontSize = 14

Який же еквівалент для власної оболонки?

Відповіді:


4

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);

Я намагався використовувати код вище, щоб змінити шрифт через реєстр (але, схоже, нічого не зробив). Чи потрібно щось, щоб налаштування набуло чинності?
Бред

Схоже, що правильні ключі реєстру (принаймні для Windows Server 2012) є дещо різними Set-Location '. \% SystemRoot% _System32_WindowsPowerShell_v1.0_powershell.exe' та Set-Location '. \% SystemRoot% _SysWOW64_WindowsPowerShell_v1.0_powershell.exe' і ' схоже, що виконується код, але мій шрифт не змінює консоль патронної оболонки.
Бред

Використовуючи цей модуль: gallery.technet.microsoft.com/scriptcenter/… Мені вдалося змінити шрифти, але, здається, варіанти дуже обмежені. Насправді наявні у мене шрифти або викривлені, занадто великі або занадто малі. Я намагаюся розібратися, як я можу вибрати різні розміри шрифту.
Бред

1
Так, людина, яка написала, що PINOking цих експорту з kernel32.dll, про яку я говорив. І так, варіанти досить обмежені. Ось чому, коли ви змінюєте шрифт для будь-якої консольної програми через GUI, у вас є лише 3 варіанти шрифту. У вашому консольному додатку не може бути Comic Sans, включаючи Powershell. У сценарії цього хлопця він встановлює шрифт Set-ConsoleFont 28. Кожен номер шрифту має заздалегідь задану висоту та ширину. Як і коли ви змінюєте його в графічному інтерфейсі.
Ryan Ries

Здається, що щось таке просте, як зміна розміру та розміру шрифту (який, як можна було б вважати, було б рудиментарною зміною), майже неможливо (або, принаймні, надзвичайно складно / з дуже обмеженими можливостями). Тому я думаю, що ми застрягли з розміром шрифту, який змусить мене осліпнути від примруження - дякую Microsoft.
Бред
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.