PowerShell Yazma Çıkışı: Kolay Çıkış Arkadaşınız
Sıkıcı, öngörülebilir senaryo çıktılarına elveda deyin! PowerShell Yazma-Çıktı cmdlet'i ile PowerShell komut dosyalarınıza yaratıcılık ve kişilik dokunuşu ekleyebilirsiniz.
Write-Output cmdlet'i güçlü bir araçtır ve tüm otomasyon ve sistem yönetimi ihtiyaçlarınız için mükemmel bir yardımcıdır. Bu eğitimde Write-Output cmdlet'inin potansiyelini en üst düzeye çıkarmayı öğreneceksiniz.
Hazır? Okumaya devam edin ve Write-Output cmdlet'inin büyüsünü keşfedin!
Önkoşullar
Bu eğitim uygulamalı bir gösteri olacaktır. Devam etmek için PowerShell'in yüklü olduğu bir bilgisayarınız olduğundan emin olun (tercihen en son sürüm). Bu eğitimde PowerShell 7 yüklü Windows 10 kullanılmaktadır.
Nesneleri Konsola Çıkarma
PowerShell Write-Output cmdlet'i, nesneleri çıkış akışına yazar ve konsolda bir komutun veya mesajın çıkışını görüntüler. Ancak bu aracın çıktıyı nasıl daha anlamlı ve değerli hale getirdiğine şaşıracaksınız.
Çıktıyı konsolda görüntülemek yerine çıktıyı özelleştirmek için Write-Output cmdlet'ini kullanın. Write-Output cmdlet'i dizeler, tamsayılar, diziler ve hatta karmaşık nesneler gibi herhangi bir nesnenin veya veri türünün çıktısını alabilir.
Konsola bir Merhaba Dünya! mesajı göndermek için aşağıdaki komutu çalıştırın.
Write-Output "Hello, World!”Aşağıda Write-Output cmdlet'inin en temel işlevini görebilirsiniz. Ancak bu cmdlet'in orta ila ileri düzey kullanımını öğrenmek için okumaya devam edin.<>
Nesneleri Başka Bir Komuta Aktarmak
Çıktıyı konsolda görüntülemenin yanı sıra, nesneyi daha ileri işlemler için başka bir komuta göndermek için Write-Output komutunu kullanabilirsiniz. Nasıl? İşlem hattı operatörünü (|) kullanarak. Ardışık düzen, Yazma-Çıktı'yı otomasyon ve sistem yönetimi görevleri için kullanışlı ve çok yönlü bir komut haline getirir.
CPU gibi kaynaklarınızın çoğunu hangi sürecin tükettiğini görmek istediğinizi varsayalım.
Aşağıdakileri gerçekleştirmek için aşağıdaki komutları çalıştırın:
- Sisteminizde çalışan tüm işlemlerin (
Get-Process) listesini alın. - Listeyi işlem hattına gönderin ve bu işlem hattı daha sonra
Sort-Objectkomutuna aktarılır. Boru hattı operatörü, birden fazla komutu birbirine zincirlemenize ve bir komutun çıktısını diğerinin girdisi olarak işlemenize olanak tanır. - İşlemlerin listesini (
Sort-Object)CPUkullanımına göre-Azalansırasına göre sıralayın.
$processes = Get-Process
Write-Output $processes | Sort-Object CPU -DescendingBu eğitimdeki komutlardan herhangi birini bir PowerShell betiğine yerleştirip çalıştırabileceğinizi unutmayın.
Sıralanan liste aşağıda gösterildiği gibi konsolda görüntülenir.
Nesnelerin Özel Formatla Çıktısını Alma
Write-Output cmdlet'inin düzgün çalışan temel çıktı formatını gördünüz. Ancak isterseniz kişisel bir dokunuş eklemek için nesnelerin çıktısını özel bir formatta da alabilirsiniz. Belirli nesne özelliklerini görüntülemek veya çıktının görünümünü özelleştirmek istediğinizde özel bir format yararlı olabilir.
Özel bir formatta bir nesnenin çıktısını almak için, Format-Custom ile Write-Output cmdlet'i aşağıdaki gibi iş görecektir:
özel çıktı biçimini oluşturmak ve ardından Format-Custom cmdlet'inin çıktısını Write-Output'a yönlendirmek için.<>
Çıktı oluşturmayan ancak çıktıya karşılık gelen değerlere sahip üç özellik içeren bir nesne (karma tablosu) oluşturan aşağıdaki komutu çalıştırın.
$object = [pscustomobject]@{
Property1 = "Value1"
Property2 = "Value2"
Property3 = "Value3"
}Şimdi aşağıdakileri gerçekleştirmek için aşağıdaki komutu çalıştırın:
- Hashtable'ınızın (
$object) çıktısı (Write-Output) için özel bir format (Format-Table) oluşturun.Property1,Property2veProperty3özellikleri sütun olarak ayarlanır. - Sütun genişliklerini (
-AutoSize) içeriğe uyacak şekilde ayarlayın.
$object | Format-Table -Property Property1, Property2, Property3 -AutoSize | Write-OutputAlternatif olarak, nesnenin çıktısını özellik-değer çiftlerinin bir listesi olarak çıkarmak için Format-List cmdlet'ini Write-Output ile birlikte kullanabilirsiniz.
$object | Format-List -Property Property1, Property2, Property3 | Write-OutputBir Koleksiyon Nesnesini Tek Varlık Olarak Aktarmak
Varsayılan olarak, Yazma-Çıktı her toplama öğesini ardışık düzen aracılığıyla ayrı ayrı gönderir; bu işleme numaralandırma adı verilir. Ancak -NoEnumerate parametresini ekleyerek koleksiyon nesnesinin tamamını tek bir varlık olarak geçirerek bu davranışı önleyebilirsiniz.
-NoEnumerate parametresinin nasıl çalıştığını görmek için şu adımları izleyin:
Aşağıdakileri gerçekleştirmek için aşağıdaki komutları çalıştırın:
- Birden üçe kadar bir
$numbersdizisi bildirin (1,2,3).
- İşlem hattından geçen nesnelerin (
Measure-Object) sayısını sayın. - Nesne ölçümünün çıktısını alın (
Yazma-Çıkış $sayıları).
NoEnumerate parametresi olmadan, Measure-Object, $numbers3) döndürür. dizisi numaralandırıldı ve işlem hattından tek tek aktarıldı.
# Declares an Array
$numbers = 1,2,3
# Outputs the object count passed through the pipeline
Write-Output $numbers | Measure-ObjectŞimdi, boru hattından geçen nesnelerin sayısının çıktısını almak için aşağıdaki komutları çalıştırın.
Ancak -NoEnumerate parametresini eklediğiniz için Measure-Object cmdlet'i nesneyi tek bir varlık olarak ele alır ve bir sayısını (1) döndürür. ).
# Declares an Array
$numbers = 1,2,3
# Outputs the object count as a single entity passed through the pipeline
Write-Output -NoEnumerate $numbers | Measure-Object
Write-Outputkomutunu parantez içine almak (yani,(Write-Output 1,2,3)),'den bağımsız olarak numaralandırmanın gerçekleşmesini zorlayacaktır. -NoEnumerateparametresi.
Menü Sistemi ve Giriş İstemleri Oluşturma
Write-Output cmdlet'inin bir diğer mükemmel kullanımı, kullanıcıdan giriş yapmasını isteyen bir PowerShell betiği içeren bir menü sistemi oluşturmaktır.
Tercih ettiğiniz metin/kod düzenleyiciyle bir .ps1 dosyası oluşturun, aşağıdaki kodu girin ve dosyayı kaydedin. Dosyayı istediğiniz gibi adlandırabilirsiniz ancak bu eğitimin tercihi myoutput.ps1 olacaktır.
Aşağıdaki kod, kullanıcı Çıkış seçeneğini seçene kadar sürekli olarak kullanıcıdan seçenekler listesinden bir seçenek seçmesini isteyen bir döngü kullanır.
# Initialize the $exit variable to $false
$exit = $false
# Start a loop that will run until the user selects the "Exit" option
while (!$exit) {
# Display a list of options to the user
Write-Output "Please select from the following options:"
Write-Output "1. Option 1"
Write-Output "2. Option 2"
Write-Output "3. Option 3"
Write-Output "4. Exit"
# Prompt the user for a selection
$selection = Read-Host
# Use a switch statement to execute different codes based on the user's selection
switch ($selection) {
1 {
# If the user selects option 1, display a message and do something for option 1
Write-Output "You selected Option 1."
# Do something for option 1
}
2 {
# If the user selects option 2, display a message and do something for option 2
Write-Output "You selected Option 2."
# Do something for option 2
}
3 {
# If the user selects option 3, display a message and do something for option 3
Write-Output "You selected Option 3."
# Do something for option 3
}
4 {
# If the user selects option 4, set $exit to $true to exit the loop
$exit = $true
}
}
}Şimdi betiği (myoutput.ps1) çalışma dizininden çalıştırın.
./myoutput.ps1Aşağıda gösterildiği gibi, 1, 2 veya 3 seçeneğini belirlediğinizde seçiminizle ilişkili mesaj görüntülenir. Ancak 4 seçeneğini belirlediğinizde komut dosyası sonlandırılır.
Açılış Ekranı veya Hoş Geldiniz Mesajı Görüntüleme
Yazma-Çıktı ile kullanıcıların seçebileceği seçeneklerin listelenmesinin yanı sıra, bir açılış ekranı veya hoş geldiniz mesajı da görüntüleyebilirsiniz. Süslü açılış ekranları senaryonuz üzerinde iyi bir izlenim (profesyonel ve gösterişli) bırakır.
myoutput.ps1 dosyanızdaki kodu, komut dosyanızı çalıştırdığınızda bir açılış ekranı (hoş geldiniz mesajı başlığı) görüntüleyen aşağıdaki kodla değiştirin.
Başlığın metnini ve biçimini değiştirerek açılış ekranını özelleştirebilirsiniz. Açılış ekranına istediğiniz gibi logo veya metin gibi ek öğeler ekleyebilirsiniz.
# Clear the screen
Clear-Host
# Display the splash screen using Write-Output
Write-Output "##############################################"
Write-Output "# #"
Write-Output "# Welcome to the SuperScript 3000! #"
Write-Output "# #"
Write-Output "##############################################"Şimdi betiği çalıştırın ve açılış ekranınızın nasıl göründüğüne bakın.
./myoutput.ps1İlerleme Çubuğunun Görüntülenmesi
Komut dosyalarını çalıştırırken bir ilerleme göstergesi, kullanıcının komut dosyasının çalışıp çalışmadığına ilişkin endişesini ortadan kaldırır. İlerleme çubukları, uzun süredir devam eden bir komut dosyasının veya işlemin ilerlemesini kullanıcıya göstermek için yararlı olabilir. Neyse ki, Write-Output cmdlet'iyle beğeninize göre bir ilerleme çubuğu oluşturabilirsiniz.
myoutput.ps1 dosyanızı açın ve aşağıdaki kodu, komut dosyasındaki mevcut kodun altına ekleyin.
Aşağıdaki kod, birkaç adımı yinelemek için bir while döngüsü kullanır. Bu örnekte 100 adım. Döngünün her yinelemesi, tamamlanan adımların yüzdesini hesaplar ve Write-Output'u kullanarak bir ilerleme çubuğu görüntüler.
İlerleme çubuğu aşağıdaki operatörlerin birleşimi kullanılarak oluşturulur:
*- Bir dizeyi belirtilen sayıda tekrarlar$()- Bir ifadenin çıktısının bir dizeye dahil edilmesine izin verir.
Komut dosyası daha sonra bir sonraki adıma geçmeden önce ilerlemeyi simüle etmek için 1 saniye duraklar (Başlatma-Uyku).
# Set the total number of steps for the progress bar
$steps = 100
# Initialize the counter for the current step
$currentStep = 0
# Start a loop that will run for the number of steps
while ($currentStep -lt $steps) {
# Increment the current step counter
$currentStep++
# Calculate the percentage of steps completed
$percentComplete = [int] ($currentStep / $steps * 100)
# Display a progress bar using Write-Output
Write-Output "Progress: [$("=" * $percentComplete)$(" " * ($steps-$percentComplete))] $percentComplete% complete"
# Pause for 1 second to simulate the progress
Start-Sleep -Seconds 1
}Şimdi betiği çalıştırın ve ilerleme çubuğunun nasıl çalıştığını görün.
./myoutput.ps1Aşağıda, ilerleme çubuğuyla birlikte açılış ekranını görebilirsiniz.
Çözüm
Bu eğitimde Yazma-Çıktı'ın nesnelerin, veri türlerinin ve özel biçimlerin çıktısını nasıl kolayca alabildiğini gördünüz. Ayrıca, daha sonraki işlemler için çıktıyı diğer komutlara göndermek amacıyla boru hattı operatörünü kullanmaya değindiniz.
İster basit bir mesaj çıkışı ister karmaşık otomasyon görevleri yazıyor olun, Write-Output, daha bilgilendirici ve profesyonel PowerShell komut dosyaları oluşturmak için vazgeçilmez bir araçtır.
Bu yeni keşfedilen bilgiyle neden çıktılarınızı .txt ve .xml dosyaları gibi farklı dosya türlerine yazmıyorsunuz? Amaç ne olursa olsun, çıktı kopyaları sisteminiz veya uygulamalarınızla ilgili sorunların giderilmesinde kullanışlıdır. Write-Output ve Out-File cmdlet'i size ihtiyaç duyduğunuzu hiç bilmediğiniz gücü sağlar.







