Mengalihkan output

PowerShell menyediakan beberapa cmdlet yang memungkinkan Anda mengontrol output data secara langsung. Cmdlet ini berbagi dua karakteristik penting.

Pertama, mereka umumnya mengubah data ke beberapa bentuk teks. Mereka melakukan ini karena mereka menghasilkan data ke komponen sistem yang memerlukan input teks. Ini berarti mereka perlu mewakili objek sebagai teks. Oleh karena itu, teks diformat seperti yang Anda lihat di jendela konsol PowerShell.

Kedua, cmdlet ini menggunakan kata kerja PowerShell Out karena mereka mengirim informasi dari PowerShell ke tempat lain.

Output konsol

Secara default, PowerShell mengirim data ke jendela host, yang persis seperti yang Out-Host dilakukan cmdlet. Penggunaan utama untuk Out-Host cmdlet adalah halaman. Misalnya, perintah berikut menggunakan Out-Host untuk halaman output Get-Command cmdlet:

Get-Command | Out-Host -Paging

Tampilan jendela host berada di luar PowerShell. Ini penting karena ketika data dikirim dari PowerShell, data tersebut benar-benar dihapus. Anda dapat melihat ini jika Anda mencoba membuat alur yang halaman datanya ke jendela host, lalu mencoba memformatnya sebagai daftar, seperti yang ditunjukkan di sini:

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

Anda mungkin mengharapkan perintah menampilkan halaman informasi proses dalam format daftar. Sebagai gantinya, ini menampilkan daftar tabular default:

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 mengirimkan data langsung ke konsol, sehingga Format-List perintah tidak pernah menerima apa pun untuk diformat.

Cara yang benar untuk menyusun perintah ini adalah dengan menempatkan Out-Host cmdlet di akhir alur seperti yang ditunjukkan di bawah ini. Ini menyebabkan data proses diformat dalam daftar sebelum ditampilkan dan ditampilkan.

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
...

Ini berlaku untuk semua cmdlet Out . Cmdlet Out harus selalu muncul di akhir alur.

Catatan

Semua cmdlet Keluar merender output sebagai teks, menggunakan pemformatan yang berlaku untuk jendela konsol, termasuk batas panjang baris.

Membuang output

Out-Null Cmdlet dirancang untuk segera membuang input apa pun yang diterimanya. Ini berguna untuk membuang data yang tidak perlu yang Anda dapatkan sebagai efek samping menjalankan perintah. Saat mengetik perintah berikut, Anda tidak mendapatkan apa pun kembali dari perintah:

Get-Command | Out-Null

Out-Null Cmdlet tidak membuang output kesalahan. Misalnya, jika Anda memasukkan perintah berikut, pesan ditampilkan yang memberi tahu Anda bahwa PowerShell tidak mengenali Is-NotACommand:

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

Mencetak data

Out-Printer hanya tersedia di platform Windows.

Anda dapat mencetak data menggunakan Out-Printer cmdlet. Out-Printer Cmdlet menggunakan printer default Anda jika Anda tidak menyediakan nama printer. Anda dapat menggunakan printer berbasis Windows dengan menentukan nama tampilannya. Tidak perlu pemetaan port printer apa pun atau bahkan printer fisik nyata. Misalnya, jika Anda memiliki alat pencitraan dokumen Microsoft Office yang terinstal, Anda bisa mengirim data ke file gambar dengan mengetik:

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

Menyimpan data

Anda dapat mengirim output ke file alih-alih jendela konsol menggunakan Out-File cmdlet. Baris perintah berikut mengirimkan daftar proses ke file C:\temp\processlist.txt:

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

Hasil penggunaan Out-File cmdlet mungkin bukan yang Anda harapkan jika Anda terbiasa dengan pengalihan output tradisional. Untuk memahami perilakunya, Anda harus mengetahui konteks tempat Out-File cmdlet beroperasi.

Pada Window PowerShell 5.1, Out-File cmdlet membuat file Unicode. Beberapa alat, yang mengharapkan file ASCII, tidak berfungsi dengan benar dengan format output default. Anda dapat mengubah format output default ke ASCII menggunakan parameter Pengodean :

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

Out-file memformat konten file agar terlihat seperti output konsol. Hal ini menyebabkan output dipotong sama seperti di jendela konsol dalam kebanyakan keadaan. Misalnya, jika Anda menjalankan perintah berikut:

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

Output akan terlihat seperti ini:

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

Untuk mendapatkan output yang tidak memaksa pembungkus garis agar sesuai dengan lebar layar, Anda dapat menggunakan parameter Lebar untuk menentukan lebar garis. Karena Lebar adalah parameter bilangan bulat 32-bit, nilai maksimum yang dapat dimilikinya adalah 2147483647. Ketik berikut ini untuk mengatur lebar garis ke nilai maksimum ini:

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

Out-File Cmdlet paling berguna ketika Anda ingin menyimpan output seperti yang akan ditampilkan di konsol.