Tee-Object

Zapisuje dane wyjściowe polecenia w pliku lub zmiennej, a także wysyła je w dół potoku.

Składnia

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

Opis

Polecenie Tee-Object cmdlet przekierowuje dane wyjściowe, czyli wysyła dane wyjściowe polecenia w dwóch kierunkach (na przykład literę T). Przechowuje dane wyjściowe w pliku lub zmiennej, a także wysyła je w dół potoku. Jeśli Tee-Object jest ostatnim poleceniem w potoku, dane wyjściowe polecenia są wyświetlane w wierszu polecenia.

Przykłady

Przykład 1. Procesy wyjściowe do pliku i do konsoli

Ten przykład pobiera listę procesów uruchomionych na komputerze i wysyła wynik do pliku. Ponieważ nie określono drugiej ścieżki, procesy są również wyświetlane w konsoli programu .

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

Przykład 2. Procesy wyjściowe do zmiennej i "Select-Object"

Ten przykład pobiera listę procesów uruchomionych na komputerze, zapisuje je w zmiennej $proc i potokuje 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

Polecenie Select-Object cmdlet wybiera właściwości ProcessName i Handles . Należy pamiętać, że zmienna $proc zawiera informacje domyślne zwracane przez Get-Process.

Przykład 3. Wyjściowe pliki systemowe do dwóch plików dziennika

W tym przykładzie zapisano listę plików systemowych w dwóch plikach dziennika, pliku skumulowanego i bieżącego pliku.

Get-ChildItem -Path D: -File -System -Recurse |
  Tee-Object -FilePath "c:\test\AllSystemFiles.txt" -Append |
    Out-File c:\test\NewSystemFiles.txt

Polecenie używa Get-ChildItem polecenia cmdlet do wykonywania cyklicznego wyszukiwania plików systemowych na dysku D:. Operator potoku (|) wysyła listę do Tee-Object, która dołącza listę do pliku AllSystemFiles.txt i przekazuje listę w dół potoku do Out-File polecenia cmdlet, co zapisuje listę na liście w NewSystemFiles.txt filepliku .

Parametry

-Append

Wskazuje, że polecenie cmdlet dołącza dane wyjściowe do określonego pliku. Bez tego parametru nowa zawartość zastępuje istniejącą zawartość w pliku bez ostrzeżenia.

Ten parametr został wprowadzony w Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Określa typ kodowania dla pliku docelowego. Wartość domyślna to utf8NoBOM.

Dopuszczalne wartości tego parametru są następujące:

  • ascii: używa kodowania dla zestawu znaków ASCII (7-bitowych).
  • bigendianunicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów big-endian.
  • oem: używa domyślnego kodowania dla programów MS-DOS i konsolowych.
  • unicode: Koduje w formacie UTF-16 przy użyciu kolejności bajtów little-endian.
  • utf7: Koduje w formacie UTF-7.
  • utf8: Koduje w formacie UTF-8.
  • utf8BOM: Koduje w formacie UTF-8 za pomocą znacznika kolejności bajtów (BOM)
  • utf8NoBOM: Koduje w formacie UTF-8 bez znaku zamówienia bajtów (BOM)
  • utf32: Koduje w formacie UTF-32.

Począwszy od programu PowerShell 6.2, parametr kodowania umożliwia również identyfikatory liczbowe zarejestrowanych stron kodu (takich jak ) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding 1251-Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą pliku Encoding.CodePage.

Ten parametr został wprowadzony w programie PowerShell 7.2.

Uwaga

UtF-7* nie jest już zalecane do użycia. Od programu PowerShell 7.1 jest napisane ostrzeżenie, jeśli zostanie określone utf7 dla parametru Kodowanie .

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Default value:UTF8NoBOM
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Określa plik, który to polecenie cmdlet zapisuje obiekt w symbolach wieloznacznych, ale musi rozpoznać pojedynczy plik.

Type:String
Aliases:Path
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-InputObject

Określa obiekt do zapisania i wyświetlenia. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty. Możesz również potokować obiekt do Tee-Objectobiektu .

Jeśli używasz parametru InputObject z parametrem Tee-Object, zamiast potokować wyniki polecenia do Tee-Object, wartość InputObject jest traktowana jako pojedynczy obiekt, nawet jeśli wartość jest kolekcją.

Type:PSObject
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Określa plik, do którego to polecenie cmdlet zapisuje obiekt. W przeciwieństwie do parametru FilePath wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy je ująć w pojedynczy cudzysłów. Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Variable

Określa zmienną, do którego polecenie cmdlet zapisuje obiekt. Wprowadź nazwę zmiennej bez poprzedniego znaku dolara ($).

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

PSObject

Obiekty można potokować do Tee-Objectobiektu .

Dane wyjściowe

PSObject

Tee-Object zwraca obiekt, który przekierowuje.

Uwagi

Możesz również użyć Out-File polecenia cmdlet lub operatora przekierowania, z których oba zapisują dane wyjściowe w pliku, ale nie wysyłają go w dół potoku.

Począwszy od programu PowerShell 6, Tee-Object używa kodowania UTF-8 bez protokołu BOM podczas zapisywania w plikach. Jeśli potrzebujesz innego kodowania, użyj Out-File polecenia cmdlet z parametrem Kodowanie .