Aracılığıyla paylaş


Çıkış yeniden yönlendiriliyor

PowerShell, veri çıkışını doğrudan denetlemenize olanak sağlayan çeşitli cmdlet'ler sağlar. Bu cmdlet'ler iki önemli özelliği paylaşır.

İlk olarak, verileri genellikle bir metin biçimine dönüştürürler. Bunun nedeni, verilerin metin girişi gerektiren sistem bileşenlerine çıkışıdır. Bu, nesneleri metin olarak temsil etmeleri gerektiği anlamına gelir. Bu nedenle, metin PowerShell konsol penceresinde gördüğünüz şekilde biçimlendirilir.

İkincisi, bu cmdlet'ler PowerShell'den başka bir yere bilgi gönderdiğinden PowerShell Out fiilini kullanır.

Konsol çıktısı

Varsayılan olarak PowerShell, tam olarak Out-Host cmdlet'in yaptığı gibi veriyi konak penceresine gönderir. Out-Host cmdlet'inin birincil kullanımı sayfalamadır. Örneğin, aşağıdaki komut Out-Host kullanarak Get-Command cmdlet'inin çıktısını sayfalar:

Get-Command | Out-Host -Paging

Ana ortam pencere görüntüsü PowerShell'in dışındadır. Veriler PowerShell'in dışına gönderildiğinde aslında kaldırıldığı için bu önemlidir. Verileri konak penceresine sayfalayan bir işlem hattı oluşturmayı ve ardından burada gösterildiği gibi liste olarak biçimlendirmeyi denerseniz bunu görebilirsiniz:

Get-Process | Out-Host -Paging | Format-List

komutunun işlem bilgileri sayfalarını liste biçiminde görüntülemesini bekleyebilirsiniz. Bunun yerine, varsayılan tablosal listeyi görüntüler:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    101       5     1076       3316    32     0.05   2888 alg
...
    618      18    39348      51108   143   211.20    740 explorer
    257       8     9752      16828    79     3.02   2560 explorer
...
<SPACE> next page; <CR> next line; Q quit
...

Out-Host Cmdlet verileri doğrudan konsola gönderir, böylece Format-List komut hiçbir zaman biçimlendirecek bir şey almaz.

Bu komutu yapılandırmanın doğru yolu, cmdlet'i Out-Host aşağıda gösterildiği gibi işlem hattının sonuna yerleştirmektir. Bu, işlem verilerinin sayfalandırılıp görüntülenmeden önce listede biçimlendirilmesine neden olur.

Get-Process | Format-List | Out-Host -Paging
Id      : 2888
Handles : 101
CPU     : 0.046875
Name    : alg
...

Id      : 740
Handles : 612
CPU     : 211.703125
Name    : explorer

Id      : 2560
Handles : 257
CPU     : 3.015625
Name    : explorer
...
<SPACE> next page; <CR> next line; Q quit
...

Bu, tüm Out cmdlet'leri için geçerlidir. Bir Out cmdlet'i her zaman işlem hattının sonunda yer almalıdır.

Uyarı

Tüm Out cmdlet'leri, satır uzunluğu sınırları da dahil olmak üzere konsol penceresi için geçerli olan biçimlendirmeyi kullanarak çıktıyı metin olarak işler.

Çıkışı iptal et

Out-Null Cmdlet, aldığı tüm girişleri hemen atacak şekilde tasarlanmıştır. Bu, komut çalıştırmanın yan etkisi olarak elde ettiğiniz gereksiz verileri atmak için kullanışlıdır. Aşağıdaki komutu yazdığınızda, komuttan hiçbir şey geri alamazsınız:

Get-Command | Out-Null

Out-Null cmdlet hata çıkışını yok saymıyor. Örneğin, aşağıdaki komutu girerseniz, PowerShell'in öğesini tanımadığını Is-NotACommandbildiren bir ileti görüntülenir:

PS> Get-Command Is-NotACommand | Out-Null
Get-Command : 'Is-NotACommand' isn't recognized as a cmdlet, function, operable program, or script file.
At line:1 char:12
+ Get-Command  <<<< Is-NotACommand | Out-Null

Verileri yazdırma

Out-Printer yalnızca Windows platformlarında kullanılabilir.

Cmdlet'ini Out-Printer kullanarak verileri yazdırabilirsiniz. Yazıcı Out-Printer adı sağlamazsanız cmdlet varsayılan yazıcınızı kullanır. Windows tabanlı herhangi bir yazıcıyı, görünen adını belirterek kullanabilirsiniz. Herhangi bir tür yazıcı bağlantı noktası eşlemesine veya hatta gerçek bir fiziksel yazıcıya gerek yoktur. Örneğin, Microsoft Office belge görüntüleme araçları yüklüyse, şunu yazarak verileri bir görüntü dosyasına gönderebilirsiniz:

Get-Command -Name Get-* | Out-Printer -Name 'Microsoft Office Document Image Writer'

Verileri kaydetme

Cmdlet'ini kullanarak çıktıyı konsol penceresi yerine bir dosyaya Out-File gönderebilirsiniz. Aşağıdaki komut satırı dosyaya C:\temp\processlist.txtbir işlem listesi gönderir:

Get-Process | Out-File -FilePath C:\temp\processlist.txt

Geleneksel çıkış yeniden yönlendirmesine Out-File alışkınsanız cmdlet'i kullanmanın sonuçları beklediğiniz gibi olmayabilir. Davranışını anlamak için cmdlet'in çalıştığı bağlamı Out-File bilmeniz gerekir.

Windows PowerShell 5.1'de Out-File , cmdlet bir Unicode dosyası oluşturur. ASCII dosyaları bekleyen bazı araçlar, varsayılan çıkış biçimiyle düzgün çalışmaz. Kodlama parametresini kullanarak varsayılan çıkış biçimini ASCII olarak değiştirebilirsiniz:

Get-Process | Out-File -FilePath C:\temp\processlist.txt -Encoding ascii

Out-File dosya içeriğini konsol çıkışı gibi görünecek şekilde biçimlendirin. Bu, çoğu durumda bir konsol penceresinde olduğu gibi çıkışın kesilmesine neden olur. Örneğin, aşağıdaki komutu çalıştırırsanız:

Get-Command | Out-File -FilePath C:\temp\output.txt

Çıkış şöyle görünür:

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Add-Content                     Add-Content [-Path] <String[...
Cmdlet          Add-History                     Add-History [[-InputObject] ...
...

Çizgi kaydırmalarını ekran genişliğiyle eşleşmeye zorlamayan bir çıktı almak için , Genişlik parametresini kullanarak çizgi genişliğini belirtebilirsiniz. Width bir 32 bit tamsayı parametresi olduğundan, sahip olabileceği en büyük değer 2147483647. Çizgi genişliğini bu en yüksek değere ayarlamak için aşağıdakileri yazın:

Get-Command | Out-File -FilePath C:\temp\output.txt -Width 2147483647

Cmdlet Out-File en çok çıkışı konsolda görüntülendiği gibi kaydetmek istediğinizde kullanışlıdır.