PowerShell ile daha önce renkli metin oluşturmanın imkansız olduğu anlamına gelmez. Aslında yapması gerçekten çok kolaydı. Ancak, PowerShell’in ANSI kaçış dizileri için yeni bulunan desteği, PowerShell’in çıktısını daha standart bir şekilde renklendirmenize olanak tanır. Ayrıca (bildiğim kadarıyla) daha önce PowerShell tarafından desteklenmeyen birkaç ek biçimlendirme seçeneği de sunar.
PowerShell 7.2′ de Stil Ayarlama
İşleri Yapmanın Eski Yolu
Daha önce de belirtildiği gibi, PowerShell uzun süredir renk kullanımını desteklemektedir. Renkli çıktı oluşturmak için en yaygın kullanılan teknik, yazma ana bilgisayar cmdlet’ine bir ön plan rengi ve/veya bir arka plan rengi eklemeyi içeriyordu. Örneğin, kırmızı bir arka plan üzerinde beyaz metin görüntülemek istiyorsanız, aşağıdaki gibi bir komut kullanarak bunu yapabilirsiniz:
Write-Host “Hello World” -ForegroundColor White -BackgroundColor Red
Bunun nasıl göründüğünü aşağıdaki resimde görebilirsiniz. Daha da önemlisi, şeklin, PowerShell’in ANSI kaçış dizileri için yeni desteğine rağmen, eski renkli çıktı oluşturma yönteminin her zaman olduğu gibi çalıştığını doğrulamasıdır.
Bu, PowerShell’de çıktı metnini biçimlendirmeye yönelik eski yöntemdir.
ANSI Yöntemi
ANSI kaçış dizisi yöntemi, biraz önce size gösterdiğimden biraz farklı çalışıyor, ancak göreceğiniz gibi bazı benzerlikler var. Microsoft, $PSStyle adlı bir değişken kullanarak ANSI kaçış dizileri için destek uygulamıştır.
En basit haliyle, bu değişkeni kullanırken sağlamanız gereken üç bilgi parçası vardır. İlk olarak, değişkenin adını sağlamanız gerekir. İkinci olarak, etkilemeye çalıştığınız öğenin adını (arka plan gibi) sağlamalısınız. Üçüncüsü, kullanmak istediğiniz rengi belirtmelisiniz. Bu üç öğe periyotlarla ayrılır. Örneğin, arka planı kırmızıya ayarlamak istiyorsanız, şunu girersiniz: $PSStyle.Background.Red. Bu arada, bu komut tarafından üretilen kırmızı renk biraz donuk. Daha canlı bir renk tercih ediyorsanız, kırmızıyı BrightRed olarak değiştirin. Bunun nasıl göründüğünü aşağıdaki resimde görebilirsiniz.
Arka plan rengini ayarlamak için $PSStyle değişkenini kullanabilirsiniz.
Elbette, $PSStyle değişkeniyle yalnızca PowerShell arka plan rengini ayarlamaktan çok daha fazlasını yapabilirsiniz. $PSStyle ile yapabileceğiniz her şeye girmeyeceğim. Kullanım örneklerinden bazıları gerçekten benzersizdir ve bu makalenin kapsamının çok ötesindedir, ancak gelecekte bunlardan bazılarını ele almayı umuyorum. Örneğin, ilerleme çubuklarını veya dosya nesnelerini biçimlendirmek için kullanılabilecek $PSStyle özellikleri vardır. Daha kullanışlı özelliklerden bazıları şunlardır:
- Background
- Foreground
- Blink
- Bold
- Hidden
- Reverse
- Italic
- Underline
Ön Plan ve Arka Plan hariç, bu özelliklerin çoğu için Kapalı özellikleri olduğunu belirtmekte fayda var. Örneğin, bir metni kalınlaştırmak için Bold özelliğini kullandığınızı varsayalım. Bu metin kalınlaştırıldıktan sonra, sonraki metnin kalın olmasını önlemek için BoldOff özelliğini kullanabilirsiniz. Ayrıca her bir dekorasyonu tek tek kapatmakla uğraşmak yerine tüm metin süslemelerini kapatmak için kullanabileceğiniz Sıfırlama özelliği de bulunmaktadır.
Diyelim ki bir an için “PowerShell’de metin böyle kalınlaşır” ifadesinin çıktısını almak istediğimi ve “kalın” kelimesini kalın yapmak istediğimi varsayalım. Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:
"$($PSStyle.Reset)PowerShell'de $($PSStyle.bold)bold$($PSStyle.BoldOff) metniniz bu şekildedir"
Teknik olarak, Sıfırla özelliğini kullanarak başlamak zorunda değildim, ancak geçerli olan diğer stilleri iptal etmek için Sıfırlama’nın nasıl kullanılabileceğini size göstermek istedim. Bu, normal metinde “bu nasılsınız” ifadesinin görüntülendiği anlamına gelir. Kalın özelliği “kalın” kelimesine uygulanır ve ardından BoldOff özelliği kalan metnin normal tipte görüntülenmesine neden olur. Bunun neye benzediğini aşağıda görebilirsiniz. Bu arada, her özellik bir renk gerektirmediğinden, bu özelliklerle birlikte bir renk belirtmem gerekmediğini fark edeceksiniz.
Bir cümlede bir kelimeyi bu şekilde kalınlaştırırsınız.
Peki, bu tür ANSI kaçış dizilerini normal bir Write-Host komutuna dahil etmek isterseniz ne olur? Bunları, önceki örnekte yaptığım gibi hemen hemen aynı şekilde kullanabilirsiniz, ancak kullanmayı tercih ettiğim daha temiz bir yöntem var.
Bir an için bir PowerShell betiği oluşturduğumu ve tüm çıktı metnimin kırmızı bir arka plan üzerinde beyaz metin olarak görünmesini istediğimi hayal edin. Bu tür bir durumda genellikle yapacağım ilk şey, stili bir değişkene eşlemektir. İşte bir örnek:
$Style = “$($PSStyle.Background.BrightRed)$($PSStyle.Foreground.BrightWhite)”
Tanımlanan değişkenle, onu bir Write-Host deyimine dahil edebilirsiniz. İşte böyle bir ifadenin nasıl görünebileceğine dair bir örnek:
Write-Host $Style”Hello World”
Bir stil tanımladım ve onu Write-Host cmdlet’i ile birlikte kullandım.
Dikkate alınması gereken ilginç bir şey, işleri benim kadar basit tutmakla sınırlı olmamanızdır. Kolayca bir dizi farklı stil oluşturabilirsiniz. Bu stiller, farklı renk şemaları, kalın metinler, italikler ve eklemek istediğiniz diğer süslemeleri içerebilir. Hatta tamamen ayrı bir PowerShell betiği içinde bir stil kitaplığı oluşturabilir ve ardından yazdığınız diğer tüm komut dosyalarından bu kitaplığa başvurabilirsiniz. Bu şekilde stilleri bir kez tanımlayabilir ve ardından bunları tüm PowerShell komut dosyalarınızda kullanabilirsiniz.