Powershell Yazma Ana Bilgisayarı nasıl kullanılır?
PowerShell Write-Host cmdlet'i, kullanıcının konsola metin çıktısını almak için kullanılır. Genellikle bir betiğin ilerleyişini, çıktı sonuçlarını göstermek veya kullanıcıya talimatları göstermek için kullanılır.
Bu yazımızda Write-Host cmdlet'inin nasıl kullanılacağına ve beraberinde gelen farklı seçeneklere bir göz atacağız ve size birkaç örnek göstereceğim.
PowerShell Yazma Ana Bilgisayarı CmdLet
Write-Host cmdlet'i aslında eski Write-Information cmdlet'i için bir sarmalayıcıdır. PowerShell 5.0'a kadar konsola bilgi çıkışı sağlamak için Write-Information veya Write-Output cmdlet'ini kullanmak zorundaydık. Eski cmdlet'ler pek çok özellikle birlikte gelmiyordu, oysa yazma sunucusu bize kullanabileceğimiz birkaç stil seçeneği sunuyor:
- -ForegroundColor
Metnin rengi
- -BackgroundColor
Metnin arka plan rengi
- -NoNewline
-
Çıktıdan sonra yeni satır eklenmeyecek
- -Separator
Bir nesne veya dizideki her öğenin çıktısı arasına bir ayırıcı ekler
Varsayılan olarak Write-Host cmdlet'i, konsolun varsayılan rengini (çoğu zaman beyaz) kullanarak konsoldaki yeni bir satırda bir dize çıktısı alır:
Write-Host "Welcome to the Lazy Script!"Write-Host'ta Renkleri Kullanma< /açıklık>
Renkler, kullanıcının dikkatini çekmenin veya durum hakkında sözsüz olarak bir şeyler anlatmanın harika bir yoludur. Örneğin, sarı metin çoğunlukla bir uyarıyı belirtirken, kırmızı metin çoğunlukla büyük olasılıkla bir hatadır. PowerShell'de -foregroundcolor parametresini kullanarak metin için bir renk ve -backgroundcolor ile metin için bir arka plan rengi atayabiliriz.
Her iki parametre için de aşağıdaki renkleri kullanabiliriz:
Siyah
Koyu mavi
Koyu yeşil
-
Koyu Camgöbeği
Koyu Kırmızı
Koyu Macenta
Koyu sarı
Gri
Koyu gri
Mavi
Yeşil
Camgöbeği
Kırmızı
-
Macenta
Sarı
Beyaz
Çıktıyı Biçimlendirme
Varsayılan olarak Write-Host tarafından çıkarılan her dize yeni bir satırda görüntülenir. Çoğu durumda bu iyidir, ancak bazen yeni bir satır veya çıktılar arasında fazladan yeni bir satır istemezsiniz.
Öncelikle sonuçların önceki Write-Host çıktısının arkasına nasıl ekleneceğine bir göz atalım. Bunu yapmak için -NoNewline parametresini kullanabiliriz. Eklendiğinde, bir sonraki çıktı mevcut satıra eklenecektir:
Write-Host "Number of mailboxes: " -NoNewline
# Get all mailboxes function
$mailboxes = Get-AllMailboxes
Write-Host $mailboxes
# Result:
Number of mailboxes: 5Gördüğünüz gibi $mailboxes değeri “Posta kutusu sayısı” satırının arkasına ekleniyor.
Çıkışlar arasında ekstra yeni bir boş satır oluşturmak istiyorsanız `n karakterini kullanabiliriz. Bu, write-host cmdlet'inin çıktısının arkasına fazladan yeni bir satır ekleyecektir:
Write-Host "Getting all user mailboxes `n" -ForegroundColor Cyan
Write-Host "Shared mailboxes found `n `n" -ForegroundColor Yellow
Write-Host "Script finished" -ForegroundColor GreenYazma Ana Bilgisayarı İçindeki Değişkenleri Kullanma
Bilmeniz gereken şey, write-host cmdlet'inin çıktısı içindeki değişkenleri kullanabileceğimizdir. Çift tırnak " " kullanıldığında, yazma-anasisteminin dizesine basit bir dize değişkeni eklenebilir. Tek tırnak işaretleri ' ' ile sarılmış dizelerin içindeki değişkenleri kullanamayacağınızı unutmayın. Buradaki fark, PowerShell'in yalnızca çift tırnak içine alınmış dizeleri işlemesidir.
$user = "[email "
Write-Host "Getting mailbox of $user"
# Result
Getting mailbox of [email Ancak nesnelerle çalışırken bir nesnenin öğelerinin çıktısını alamayacağınızı fark etmiş olabilirsiniz. Örneğin, bu işe yaramaz:
$user = [PSCustomObject]@{
DisplayName = "Megan"
Email = "[email "
}
Write-Host "Getting mailbox of $user.displayname"Kullanıcı nesnesinin görünen adını göstermek için, onu şu şekilde parantez içine almamız gerekir:
$user = [PSCustomObject]@{
DisplayName = "Megan"
Email = "[email "
}
Write-Host "Getting mailbox of $($user.DisplayName)"
# Result
Getting mailbox of MeganAyırıcı Kullanma
Bir dizinin sonuçlarını konsola çıkarmak istediğinizde, sonuçlar varsayılan olarak tek bir satırda görüntülenecektir. Örneğin bazı meyvelerin bulunduğu bir CSV dosyam var. CSV dosyasını içe aktardığımızda ve sonucu çıkardığımızda, şu şekilde biçimlendirilecektir:
$example = import-csv -path C:\temp\example.csv -Header Fruit
Write-Host $example.fruit
# Result
Apple Banana Pear Kiwi Raspberry MelonHer meyveyi kendi satırında göstermek veya her meyveyi bir karakterle ayırmak için -Separator parametresini kullanabiliriz:
# Show results on a new line
$example = import-csv -path C:\temp\example.csv -Header Fruit
Write-Host $example.fruit -Separator "`n"
# Result
Apple
Banana
Pear
Kiwi
Raspberry
Melon
# Separate results with a space and dash
$example = import-csv -path C:\temp\example.csv -Header Fruit
Write-Host $example.fruit -Separator " - "
# Result
Apple - Banana - Pear - Kiwi - Raspberry - MelonAna Bilgisayar Biçimlendirme Örneklerini Yazma
Biraz yaratıcılıkla, komut dosyalarınızda gerçekten göze çarpan farklı banner'lar veya uyarılar oluşturabilirsiniz. Aşağıda sizin için ilham kaynağı olacak birkaç örnek topladım. Başka iyi örnekleriniz varsa, lütfen bunları aşağıdaki yorumlarda paylaşın!
Bir uyarı mesajının üstüne ve altına yeni bir satır eklemek, mesajın çevresine bir miktar boşluk eklemek ve arka plan rengini kullanmak, mesajın gerçekten öne çıkmasını sağlayabilir:
Write-Host "`n"
Write-Host " RUNNING IN TEST MODE " -BackgroundColor Yellow -ForegroundColor Black
Write-Host "`n"Senaryo banner'larını doğru yapmak her zaman biraz zorlayıcıdır. Aşağıdaki kod örneğinde hizalanmış görünmüyor ancak bir komut dosyasında kullandığınızda mükemmel bir banner göreceksiniz.
Write-Host "`n"
Write-Host " ------------------------------------------------- " -ForegroundColor Cyan
Write-Host " | | " -ForegroundColor Cyan
Write-Host " | Create new AD User | " -ForegroundColor Cyan
Write-Host " | Version 1.7 | " -ForegroundColor Cyan
Write-Host " | | " -ForegroundColor Cyan
Write-Host " | Author R. Mens - LazyAdmin.nl | " -ForegroundColor Cyan
Write-Host " | | " -ForegroundColor Cyan
Write-Host " ------------------------------------------------- " -ForegroundColor Cyan
Write-Host "`n"Ayrıca ön plan renkleri ve bazı ASCII sanatıyla eğlenceli bir şeyler de yapabiliriz. Aşağıdaki kod her karakterin konumunu 6'ya böler. Sonuca göre karaktere bir renk atayacaktır. -NoNewline parametresini kullanarak sonuçları ekleyebiliriz:
$text = "
_ ___ _ _
| | / _ \ | | (_)
| | __ _ _____ _/ /_\ \ __| |_ __ ___ _ _ __
| | / _ |_ / | | | _ |/ _ | '_ _ \| | '_ \
| |___| (_| |/ /| |_| | | | | (_| | | | | | | | | | |
\_____/\__,_/___|\__, \_| |_/\__,_|_| |_| |_|_|_| |_|
__/ |
|___/ "
for ($i=0; $i -lt $text.length; $i++) {
switch ($i % 6) {
0 { $c = "white" }
2 { $c = "green" }
4 { $c = "blue" }
default { $c = "cyan" }
}
write-host $text[$i] -NoNewline -ForegroundColor $c
}Sonlandırma
Write-Host cmdlet'i, komut dosyanızın kullanıcısını komut dosyalarınızın ilerleyişi hakkında bilgilendirmenin harika bir yoludur. Kullanıcıya talimatlar verebilir, sonuçları gösterebilir veya komut dosyası tamamlandığında veya bir hatayla karşılaştığında kullanıcıyı bilgilendirebilir.
Ön plan renklerinden iyi yararlanın çünkü bunlar bir mesajın anlamını hızlı bir şekilde tanımlamaya gerçekten yardımcı olur.
Umarım bu makaleyi beğenirsiniz, herhangi bir sorunuz varsa aşağıya yorum bırakmanız yeterli!





