Powershell yazı tipi yüzünü ve boyutunu özelleştirme


10

Aşağıdaki komutları kullanarak varsayılan kabuk olarak powershell kurulumuna sahip bir dizi Windows 2012 sunucu çekirdeği sistemimiz var:

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

Powershell yazı tipi rengini c: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ profile.ps1 adresindeki özel bir powershell komut dosyasıyla özelleştirebileceğimizi anladım. Bu komut dosyası tüm kullanıcılar tarafından kullanılır.

Ancak şimdi kalıcı olan yazı tipi yüzünü ve yazı tipi boyutunu (yine tüm kullanıcılar için) özelleştirmek istiyorum. IE Sunucudan çıkış yapıp tekrar giriş yaparsam ayarların korunmasını istiyorum. Aynı şekilde yönetici olarak giriş yaparsam veya kendi hesap gücüm aynı görünüyorsa - aynı yazı tipi rengini, yazı tipi yüzünü ve yazı tipi boyutunu kullanın.

Powershell ISE ile yazı tipi yüzünü ve yazı tipi boyutunu aşağıdakileri kullanarak ayarlamak mümkündür:

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

Peki powershell kendisi için eşdeğer nedir?

Yanıtlar:


4

Powershell (ISE değil), eski MS-DOS komut istemine biraz daha modern bir güncelleştirme olan "Konsol Ana Bilgisayarı" nı kullanır . Konsol Ana Bilgisayarı, Microsoft'un Komut İstemi'ni Windows'un modern sürümleriyle uyumlu tutmanın yanı sıra eski konsol uygulamalarıyla da uyumlu tutma biçimiydi.

Powershell.exe'yi başlattığınızda, csrss.exe conhost.exe adlı bir alt işlemi oluşturur. Bu davranış, Cmd.exe'yi başlattığınızda aynıdır.

Ancak eski konsol uygulamalarıyla uyumluluğu sürdürmek zorunda oldukları için, görünümü ve hissi çok fazla değiştiremediler, ne de bir sürü iç arabirimi değiştirip parçalayamadılar.

Bunun imkansız olduğunu söylemeyeceğim, ama düşündüğünden daha zor.

İçinde hiçbir şey yok (Get-Host).UI.RawUI. System.Console.NET sınıfında hiçbir şey yok .

Aşağıdaki gibi bir şey yaparak kayıt defterindeki yazı tipi yüzünü ve boyutunu değiştirebilirsiniz:

(değiştir: eğik çizgi olmayan alt çizgiler)

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

Ayrıca, kernel32.dll'de yazı tipini değiştiren bir sürü ihracat vardır:

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

Kayıt defteri aracılığıyla yazı tipini değiştirmek için yukarıdaki kodu kullanmaya çalıştım (ama hiçbir şey yapmamış gibi görünüyor). Ayarın geçerli olması için bir şey gerekli mi?
Brad

Doğru kayıt defteri anahtarları (en azından Windows Server 2012 için) biraz farklı Set-Location '. \% SystemRoot% _System32_WindowsPowerShell_v1.0_powershell.exe' ve Set-Location '. \% SystemRoot% _SysWOW64_WindowsPowerShell_v1.0_powershell.exe' ve kod yürütülüyor gibi görünüyor, ancak yazı tipim powershell konsolunu değiştirmiyor.
Brad

Bu modülü kullanarak: gallery.technet.microsoft.com/scriptcenter/… Yazı tiplerini değiştirebildim, ancak seçenekler çok sınırlı görünüyor. Aslında benim için mevcut yazı tipleri ya bozuk, çok büyük ya da çok küçük oldu. Farklı yazı tipi boyutlarını nasıl seçebileceğimi anlamaya çalışıyorum.
Brad

1
Evet, bunu yazan kişi, bahsettiğim kernel32.dll'den bu ihracatı araştırıyor. Ve evet, seçenekler oldukça sınırlıdır. Bu nedenle, GUI aracılığıyla herhangi bir konsol uygulaması için yazı tipini değiştirdiğinizde, yalnızca 3 yazı tipi seçeneğiniz vardır. Konsol uygulamanızda Powershell dahil Comic Sans bulunamaz. O adamın senaryosunda, yazı tipini ayarlıyor Set-ConsoleFont 28. Her yazı tipi numarasının önceden belirlenmiş bir yüksekliği ve genişliği vardır. Tıpkı GUI'de değiştirdiğinizde olduğu gibi.
Ryan Ries

Yazı tipi yüzünü ve boyutunu değiştirmek gibi basit bir şey (ki bu bir ilkel değişiklik olacağını varsayar) neredeyse imkansızdır (veya en azından son derece zor / çok sınırlı seçeneklerle). Bu yüzden sanırım şaşılıktan kör olmamı sağlayacak bir yazı tipi boyutu ile sıkışıp kaldık - teşekkürler Microsoft.
Brad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.