O Powershell (não o ISE) aproveita o "Console Host", que é uma atualização um pouco mais moderna para o prompt de comando do MS-DOS antigo . O Console Host era a maneira da Microsoft de manter o Prompt de Comando compatível com as versões modernas do Windows, mas também era compatível com aplicativos de console antigos.
Quando você inicia o Powershell.exe, o csrss.exe gera um processo filho chamado conhost.exe. Esse comportamento é idêntico ao quando você inicia o Cmd.exe.
Mas como eles precisavam manter a compatibilidade com os aplicativos de console antigos, eles não podiam mudar muito a aparência , nem poderiam mudar e quebrar um monte de interfaces internas.
Eu não vou dizer que é impossível, mas é mais difícil do que se pensa.
Não há nada em (Get-Host).UI.RawUI
. Não há nada na classe System.Console
.NET.
Você pode alterar a face e o tamanho da fonte no registro fazendo algo parecido com isto:
(editar: sublinhados e não barras)
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
Há também um monte de exportações no kernel32.dll que mudam a fonte:
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);