Out-* Cmdlet'leri ile Verileri Yeniden Yönlendirme

Windows PowerShell doğrudan veri çıkışını denetlemeye izin veren ç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ürmektedir. Metin girişi gerektiren sistem bileşenlerine verileri çıkış olarak verdikleri için bunu yapar. Bu, nesneleri metin olarak temsil etmeleri gereken anlamına gelir. Bu nedenle, metin konsol penceresinde gördüğünüz Windows PowerShell biçimlendirildi.

İkincisi, bu cmdlet'ler Windows PowerShell başka bir yere bilgi Windows PowerShell fiilini kullanır.

Konsol Çıktısı (Ana Bilgisayar Dışında)

Varsayılan olarak, Windows PowerShell ana bilgisayar penceresine veri gönderir. Bu, Out-Host cmdlet'in tam olarak yaptığı şeydir. Out-Hostcmdlet'i için birincil kullanım disk belleğidir. Örneğin, aşağıdaki komut Out-Host cmdlet'inin çıktısını sayfa olarak Get-Command kullanır:

Get-Command | Out-Host -Paging

Konak penceresi görüntüsü, Windows PowerShell. Veriler veri kaynağı dışından gönder Windows PowerShell aslında kaldırıldığı için bu önemlidir. Burada gösterildiği gibi verileri konak penceresine silen ve liste olarak biçimlendirmeyi deneyen bir işlem hattı oluşturmak için bunu görebilirsiniz:

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

Komutun işlem bilgileri sayfalarını liste biçiminde görüntülemesi beklenebilirsiniz. Bunun yerine, varsayılan tablo listesini 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-Hostcmdlet'i verileri doğrudan konsola gönderir, bu nedenle Format-List komut biçimlendirmek için hiçbir şey vermez.

Bu komutun yapısının doğru yolu, cmdlet'i aşağıda gösterildiği gibi işlem Out-Host hattının sonuna koymaktır. Bu, işlem verilerinin sayfalara çağrılmadan ve görüntülenmeden önce bir listede biçimlendir biçimlendirilmiş olmasına 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. her zaman işlem hattının sonunda bir Out cmdlet'i görünmektedir.

Not

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

Çıkışı Atma (Out-Null)

Out-Nullcmdlet'i aldığı tüm girişleri hemen atılacak şekilde tasarlanmıştır. Bu, komutu çalıştırmanın yan etkisi olarak elde ettiysiniz gereksiz verileri atmak için kullanışlıdır. Aşağıdaki komutu yazarak komutundan herhangi bir şey geri dönmezsiniz:

Get-Command | Out-Null

Out-NullCmdlet hata çıktısını atmayacak. Örneğin, aşağıdaki komutu girersiniz, 'Is-NotACommand' Windows PowerShell olmadığını size bildiren bir ileti görüntülenir:

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

Verileri Yazdırma (Yazıcı Dışında)

cmdlet'ini kullanarak Out-Printer verileri yazdırabilirsiniz. Bir Out-Printer yazıcı adı sağlanmayacaksa cmdlet varsayılan yazıcınızı kullanır. Görünen adını belirterek Windows tabanlı herhangi bir yazıcıyı kullanabilirsiniz. Herhangi bir tür yazıcı bağlantı noktası eşlemesi 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, aşağıdakini yazarak verileri bir görüntü dosyasına gönderebilirsiniz:

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

Verileri Kaydetme (Dosya Dışında)

cmdlet'ini kullanarak konsol penceresi yerine bir dosyaya Out-File çıkış gönderebilirsiniz. Aşağıdaki komut satırı, dosyasına bir işlem listesi C:\temp\processlist.txt gönderir:

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

Geleneksel çıkış yeniden yönlendirmesi için kullanılırsanız Out-File cmdlet'ini kullanmanın sonuçları beklediğiniz gibi olabilir. Davranışını anlamak için cmdlet'in çalışma bağlamını Out-File biliyor olması gerekir.

Varsayılan olarak, Out-File cmdlet bir Unicode dosyası oluşturur. Bu, uzun çalıştırmanın en iyi varsayılanıdır ancak ASCII dosyalarını beklediğiniz araçların varsayılan çıkış biçimiyle düzgün çalışmayacakları anlamına gelir. 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 çıktısı gibi olacak şekilde biçimlendirme. Bu, çoğu durumda konsol penceresinde olduğu gibi çıkışın kesilmesine neden olur. Örneğin, aşağıdaki komutu çalıştırın:

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

Çıkış aşağıdaki gibi olur:

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

Satır kaydırmalarını ekran genişliğiyle eşleşmeye zorlamadan çıkış almak için Width parametresini kullanarak satır genişliğini belirtebilirsiniz. Width 32 bit tamsayı parametresi olduğundan sahip olduğu maksimum değer 2147483647. Satır genişliğini bu en yüksek değere ayarlamak için aşağıdakini yazın:

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

Out-FileCmdlet en çok, konsolda görüntülendiğinde olduğu gibi çıkışı kaydetmek istediğiniz zaman kullanışlıdır. Çıkış biçimi üzerinde daha iyi denetim için daha gelişmiş araçlara ihtiyacınız vardır. Bunları bir sonraki bölümde, nesne işlemeyle ilgili bazı ayrıntıların yanı sıra bunları da göz atyacağız.