Tee-Object
Menyimpan output perintah dalam file atau variabel dan juga mengirimkannya ke alur.
Sintaks
Tee-Object
[-InputObject <PSObject>]
[-FilePath] <String>
[-Append]
[[-Encoding] <Encoding>]
[<CommonParameters>]
Tee-Object
[-InputObject <PSObject>]
-LiteralPath <String>
[[-Encoding] <Encoding>]
[<CommonParameters>]
Tee-Object
[-InputObject <PSObject>]
-Variable <String>
[<CommonParameters>]
Deskripsi
Tee-Object
Cmdlet mengalihkan output, yaitu mengirimkan output perintah dalam dua arah (seperti huruf T). Ini menyimpan output dalam file atau variabel dan juga mengirimkannya ke alur. Jika Tee-Object
adalah perintah terakhir dalam alur, output perintah ditampilkan pada prompt.
Contoh
Contoh 1: Proses output ke file dan ke konsol
Contoh ini mendapatkan daftar proses yang berjalan di komputer dan mengirim hasilnya ke file. Karena jalur kedua tidak ditentukan, proses juga ditampilkan di konsol.
Get-Process | Tee-Object -FilePath "C:\Test1\testfile2.txt"
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
83 4 2300 4520 39 0.30 4032 00THotkey
272 6 1400 3944 34 0.06 3088 alg
81 3 804 3284 21 2.45 148 ApntEx
81 4 2008 5808 38 0.75 3684 Apoint
...
Contoh 2: Proses output ke variabel dan 'Select-Object'
Contoh ini mendapatkan daftar proses yang berjalan di komputer, menyimpannya ke $proc
variabel, dan menyalurkannya ke Select-Object
.
Get-Process notepad | Tee-Object -Variable proc | Select-Object processname,handles
ProcessName Handles
----------- -------
notepad 43
notepad 37
notepad 38
notepad 38
Select-Object
Cmdlet memilih properti ProcessName dan Handles. Perhatikan bahwa $proc
variabel menyertakan informasi default yang dikembalikan oleh Get-Process
.
Contoh 3: File sistem output ke dua file log
Contoh ini menyimpan daftar file sistem dalam dua file log, file kumulatif, dan file saat ini.
Get-ChildItem -Path D: -File -System -Recurse |
Tee-Object -FilePath "c:\test\AllSystemFiles.txt" -Append |
Out-File c:\test\NewSystemFiles.txt
Perintah menggunakan Get-ChildItem
cmdlet untuk melakukan pencarian rekursif untuk file sistem pada drive D: . Operator alur (|
) mengirim daftar ke Tee-Object
, yang menambahkan daftar ke file AllSystemFiles.txt dan meneruskan daftar ke bawah alur ke Out-File
cmdlet, yang menyimpan daftar di NewSystemFiles.txt file
.
Contoh 4: Cetak output ke konsol dan gunakan dalam alur
Contoh ini mendapatkan file dalam folder, mencetaknya ke konsol, lalu memfilter file untuk file yang memiliki blok metadata front matter yang ditentukan. Akhirnya, ia mencantumkan nama artikel yang memiliki materi depan.
$consoleDevice = if ($IsWindows) {
'\\.\CON'
} else {
'/dev/tty'
}
$frontMatterPattern = '(?s)^---(?<FrontMatter>.+)---'
$articles = Get-ChildItem -Path .\reference\7.4\PSReadLine\About\ |
Tee-Object -FilePath $consoleDevice |
Where-Object {
(Get-Content $_ -Raw) -match $frontMatterPattern
}
$articles.Name
Directory: C:\code\docs\PowerShell-Docs\reference\7.4\PSReadLine\About
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/13/2022 11:37 AM 384 .markdownlint.yaml
-a--- 4/25/2023 11:28 AM 40194 about_PSReadLine_Functions.md
-a--- 4/25/2023 10:58 AM 10064 about_PSReadLine.md
about_PSReadLine_Functions.md
about_PSReadLine.md
Contoh mengatur variabel ke nilai perangkat konsol $consoleDevice
terminal saat ini. Di Windows, Anda dapat menulis ke perangkat konsol saat ini dengan mengalihkan output Anda ke \\.\CON
jalur file. Pada sistem non-Windows, Anda menggunakan /dev/tty
jalur file.
Kemudian mengatur $frontMatterPattern
variabel ke ekspresi reguler yang cocok ketika string dimulai dengan tiga tanda hubung (---
) dan memiliki konten apa pun sebelum tiga tanda hubung lainnya. Ketika pola ini cocok dengan konten artikel, artikel memiliki blok metadata front matter yang ditentukan.
Selanjutnya, contoh menggunakan Get-ChildItem
untuk mengambil setiap file di About
folder. Tee-Object
mencetak hasil piped ke konsol menggunakan parameter FileName . Where-Object
memfilter file dengan mendapatkan kontennya sebagai string tunggal dengan parameter Get-Content
Mentah dan membandingkan string tersebut dengan $frontMatterPattern
.
Terakhir, contoh mencetak nama file di folder yang memiliki blok metadata front matter yang ditentukan.
Parameter
-Append
Menunjukkan bahwa cmdlet menambahkan output ke file yang ditentukan. Tanpa parameter ini, konten baru menggantikan konten yang ada dalam file tanpa peringatan.
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Encoding
Menentukan jenis pengodean untuk file target. Nilai defaultnya adalah utf8NoBOM
.
Nilai yang dapat diterima untuk parameter ini adalah sebagai berikut:
ascii
: Menggunakan pengodean untuk set karakter ASCII (7-bit).ansi
: Menggunakan pengodean untuk halaman kode ANSI budaya saat ini. Opsi ini ditambahkan di PowerShell 7.4.bigendianunicode
: Mengodekan dalam format UTF-16 menggunakan urutan byte big-endian.oem
: Menggunakan pengodean default untuk MS-DOS dan program konsol.unicode
: Mengodekan dalam format UTF-16 menggunakan urutan byte little-endian.utf7
: Mengodekan dalam format UTF-7.utf8
: Mengodekan dalam format UTF-8.utf8BOM
: Mengodekan dalam format UTF-8 dengan Byte Order Mark (BOM)utf8NoBOM
: Mengodekan dalam format UTF-8 tanpa Byte Order Mark (BOM)utf32
: Mengodekan dalam format UTF-32.
Dimulai dengan PowerShell 6.2, parameter Pengodean juga memungkinkan ID numerik halaman kode terdaftar (seperti -Encoding 1251
) atau nama string halaman kode terdaftar (seperti -Encoding "windows-1251"
). Untuk informasi selengkapnya, lihat dokumentasi .NET untuk Encoding.CodePage.
Dimulai dengan PowerShell 7.4, Anda dapat menggunakan Ansi
nilai untuk parameter Pengodean untuk meneruskan ID numerik untuk halaman kode ANSI budaya saat ini tanpa harus menentukannya secara manual.
Parameter ini diperkenalkan di PowerShell 7.2.
Catatan
UTF-7* tidak lagi disarankan untuk digunakan. Pada PowerShell 7.1, peringatan ditulis jika Anda menentukan utf7
untuk parameter Pengodean .
Jenis: | Encoding |
Nilai yang diterima: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Nilai default: | UTF8NoBOM |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-FilePath
Menentukan file yang cmdlet ini menyimpan objek ke karakter Wildcard diizinkan, tetapi harus diselesaikan ke satu file.
Dimulai di PowerShell 7, saat Anda menentukan FilePath seperti \\.\CON
pada Windows atau /dev/tty
pada sistem non-Windows, InputObject dicetak di konsol. Jalur file tersebut sesuai dengan perangkat konsol terminal saat ini pada sistem, memungkinkan Anda mencetak InputObject dan mengirimkannya ke aliran output dengan satu perintah.
Jenis: | String |
Alias: | Path |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | True |
-InputObject
Menentukan objek yang akan disimpan dan ditampilkan. Masukkan variabel yang berisi objek atau ketik perintah atau ekspresi yang mendapatkan objek. Anda juga dapat menyalurkan objek ke Tee-Object
.
Saat Anda menggunakan parameter InputObject dengan Tee-Object
, alih-alih mempipa hasil perintah ke Tee-Object
, nilai InputObject diperlakukan sebagai objek tunggal bahkan jika nilainya adalah koleksi.
Jenis: | PSObject |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | True |
Terima karakter wildcard: | False |
-LiteralPath
Menentukan file tempat cmdlet ini menyimpan objek. Tidak seperti FilePath, nilai parameter LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.
Jenis: | String |
Alias: | PSPath, LP |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Variable
Menentukan variabel tempat cmdlet menyimpan objek. Masukkan nama variabel tanpa tanda dolar sebelumnya ($
).
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
Anda dapat menyalurkan objek ke cmdlet ini.
Output
Cmdlet ini mengembalikan objek yang dialihkan.
Catatan
PowerShell menyertakan alias berikut untuk Tee-Object
:
- Windows:
tee
Anda juga dapat menggunakan Out-File
cmdlet atau operator pengalihan, yang keduanya menyimpan output dalam file tetapi tidak mengirimkannya ke alur.
Dimulai di PowerShell 6, Tee-Object
menggunakan pengodean BOM-less UTF-8 saat menulis ke file. Jika Anda memerlukan pengodean yang berbeda, gunakan Out-File
cmdlet dengan parameter Pengodean .