Tee-Object
Uloží výstup příkazu do souboru nebo proměnné a odešle ho také do kanálu.
Syntaxe
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>]
Description
Rutina Tee-Object
přesměruje výstup, to znamená, že odesílá výstup příkazu ve dvou směrech (například písmeno T). Uloží výstup do souboru nebo proměnné a také ho odešle do kanálu. Pokud Tee-Object
je posledním příkazem v kanálu, zobrazí se na příkazovém řádku výstup příkazu.
Příklady
Příklad 1: Výstupní procesy do souboru a konzoly
Tento příklad získá seznam procesů spuštěných v počítači a odešle výsledek do souboru. Protože není zadána druhá cesta, procesy se také zobrazí v konzole.
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
...
Příklad 2: Výstupní procesy do proměnné a Select-Object
Tento příklad získá seznam procesů spuštěných v počítači, uloží je do $proc
proměnné a předá je do Select-Object
.
Get-Process notepad | Tee-Object -Variable proc | Select-Object processname,handles
ProcessName Handles
----------- -------
notepad 43
notepad 37
notepad 38
notepad 38
Rutina Select-Object
vybere vlastnosti ProcessName a Handles . Všimněte si, že $proc
proměnná obsahuje výchozí informace vrácené Get-Process
.
Příklad 3: Výstupní systémové soubory do dvou souborů protokolu
Tento příklad uloží seznam systémových souborů do dvou souborů protokolu, kumulativního souboru a aktuálního souboru.
Get-ChildItem -Path D: -File -System -Recurse |
Tee-Object -FilePath "c:\test\AllSystemFiles.txt" -Append |
Out-File c:\test\NewSystemFiles.txt
Příkaz používá rutinu Get-ChildItem
k rekurzivnímu vyhledávání systémových souborů na jednotce D: . Operátor kanálu (|
) odešle seznam Tee-Object
, který připojí seznam k souboru AllSystemFiles.txt a předá seznam dolů kanálu do Out-File
rutiny, která uloží seznam do NewSystemFiles.txt file
souboru .
Příklad 4: Tisk výstupu do konzoly a použití v kanálu
Tento příklad získá soubory ve složce, vytiskne je do konzoly a pak vyfiltruje soubory pro ty, které mají definovaný blok metadat front matter. Nakonec se zobrazí seznam názvů článků, které mají přední část.
$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
Příklad nastaví proměnnou $consoleDevice
na hodnotu zařízení konzoly aktuálního terminálu. Ve Windows můžete zapisovat do aktuálního zařízení konzoly přesměrováním výstupu \\.\CON
do cesty k souboru. V systémech, které nejsou systémy Windows, použijete /dev/tty
cestu k souboru.
Potom nastaví $frontMatterPattern
proměnnou na regulární výraz, který se shoduje, když řetězec začíná třemi pomlčkami (---
) a má jakýkoli obsah před dalšími třemi pomlčkami. Pokud tento vzor odpovídá obsahu článku, obsahuje článek definovaný blok metadat front matter.
V dalším příkladu se načte Get-ChildItem
každý soubor ve About
složce. Tee-Object
vytiskne výsledky kanálu do konzoly pomocí parametru FileName . Where-Object
filtruje soubory získáním jejich obsahu jako jeden řetězec s nezpracovaným Get-Content
parametrem a porovnáním tohoto řetězce s $frontMatterPattern
.
Příklad nakonec vytiskne názvy souborů ve složce, které mají definovaný blok metadat front matter.
Parametry
-Append
Označuje, že rutina připojí výstup k zadanému souboru. Bez tohoto parametru nahradí nový obsah veškerý existující obsah v souboru bez upozornění.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Encoding
Určuje typ kódování cílového souboru. Výchozí hodnota je utf8NoBOM
.
Přijatelné hodnoty pro tento parametr jsou následující:
ascii
: Používá kódování znakové sady ASCII (7bitová).ansi
: Používá kódování pro kódovou stránku ANSI aktuální jazykové verze. Tato možnost byla přidána v PowerShellu 7.4.bigendianunicode
: Kóduje ve formátu UTF-16 pomocí pořadí velkých bajtů.oem
: Používá výchozí kódování pro MS-DOS a konzolové programy.unicode
: Kóduje ve formátu UTF-16 pomocí malého bajtového pořadí.utf7
: Kóduje ve formátu UTF-7.utf8
: Kóduje ve formátu UTF-8.utf8BOM
: Kódování ve formátu UTF-8 pomocí značky pořadí bajtů (BOM)utf8NoBOM
: Kódování ve formátu UTF-8 bez značky pořadí bajtů (BOM)utf32
: Kóduje ve formátu UTF-32.
Počínaje PowerShellem 6.2 umožňuje parametr Kódování také číselná ID registrovaných znakových stránek (jako -Encoding 1251
) nebo názvy řetězců registrovaných znakových stránek (například -Encoding "windows-1251"
). Další informace najdete v dokumentaci k .NET pro Encoding.CodePage.
Počínaje PowerShellem 7.4 můžete hodnotu parametru Encoding použít Ansi
k předání číselného ID pro znakovou stránku ANSI aktuální jazykové verze, aniž byste ji museli zadávat ručně.
Tento parametr byl představen v PowerShellu 7.2.
Poznámka:
UTF-7* se už nedoporučuje používat. Od PowerShellu 7.1 se při zadání parametru Encoding zapíše utf7
upozornění.
Typ: | Encoding |
Přípustné hodnoty: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Default value: | UTF8NoBOM |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-FilePath
Určuje soubor, který tato rutina uloží objekt do zástupných znaků, ale musí se přeložit na jeden soubor.
Když v PowerShellu 7 zadáte Cestu k souboru ve \\.\CON
Windows nebo /dev/tty
v systémech, které nejsou systémy Windows, zobrazí se v konzole objekt InputObject. Tyto cesty k souborům odpovídají zařízení konzoly aktuálního terminálu v systému, které umožňuje vytisknout InputObject a odeslat ho do výstupního datového proudu jedním příkazem.
Typ: | String |
Aliasy: | Path |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-InputObject
Určuje objekt, který se má uložit a zobrazit. Zadejte proměnnou obsahující objekty nebo zadejte příkaz nebo výraz, který objekty získá. Objekt můžete také pipetovat na Tee-Object
.
Pokud použijete inputObject parametr s Tee-Object
, místo piping command výsledky , Tee-Object
InputObject je považována za jeden objekt, i když je hodnota kolekce.
Typ: | PSObject |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-LiteralPath
Určuje soubor, do kterého tato rutina uloží objekt. Na rozdíl od FilePath se hodnota parametru LiteralPath používá přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.
Typ: | String |
Aliasy: | PSPath, LP |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Variable
Určuje proměnnou, do které rutina uloží objekt. Zadejte název proměnné bez předchozího znaku dolaru ($
).
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Objekty můžete do této rutiny pipetovat.
Výstupy
Tato rutina vrátí objekt, který přesměruje.
Poznámky
PowerShell obsahuje následující aliasy pro Tee-Object
:
- Windows:
tee
Můžete také použít rutinu Out-File
nebo operátor přesměrování, z nichž oba ukládají výstup do souboru, ale neodesílají ho do kanálu.
Počínaje PowerShellem 6 Tee-Object
používá kódování BOM-less UTF-8 při zápisu do souborů. Pokud potřebujete jiné kódování, použijte rutinu Out-File
s parametrem Kódování .