Udostępnij za pomocą


Tee-Object

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

Składnia

File (domyślnie)

Tee-Object
    [-FilePath] <String>
    [-InputObject <PSObject>]
    [-Append]
    [<CommonParameters>]

LiteralFile

Tee-Object
    -LiteralPath <String>
    [-InputObject <PSObject>]
    [<CommonParameters>]

Variable

Tee-Object
    -Variable <String>
    [-InputObject <PSObject>]
    [<CommonParameters>]

Opis

Polecenie Tee-Object cmdlet zapisuje dane wyjściowe w dwóch kierunkach. 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 konsoli programu .

Tee-Object Wewnętrznie używa poleceń Set-Variable i Out-File . Te polecenia obsługują parametr WhatIf . Polecenie Tee-Object nie obsługuje parametru WhatIf . Jeśli jednak opakowujesz Tee-Object skrypt lub funkcję, która obsługuje parametr WhatIf , Tee-Object przekazuje stan WhatIf do Set-Variable poleceń i Out-File .

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 w celu Select-Object.

Get-Process notepad | Tee-Object -Variable proc | Select-Object ProcessName, Handles
ProcessName                              Handles
-----------                              -------
notepad                                  43
notepad                                  37
notepad                                  38
notepad                                  38

Polecenie cmdlet Select-Object 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: Dane wyjściowe plików systemowych do dwóch plików dziennika

W tym przykładzie jest zapisywana lista 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 polecenia cmdlet Get-ChildItem 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 polecenia cmdlet Out-File, które zapisuje listę w NewSystemFiles.txt file.

Przykład 4: użyj parametru "Tee-Object" w skryfcie z parametrem **WhatIf**

Polecenie Tee-Object nie obsługuje parametru WhatIf . Jeśli jednak opakowujesz Tee-Object skrypt lub funkcję, która obsługuje parametr WhatIf , Tee-Object przekazuje stan WhatIf do Set-Variable poleceń i Out-File używanych wewnętrznie.

PS> function Test-Tee {
    [Cmdletbinding(SupportsShouldProcess)]
    Param()
    $true|tee -Variable b
    "Variable `$b is set to '$b'"
}

PS> Test-Tee

True
Variable $b is set to 'True'

PS> Test-Tee -WhatIf
True
What if: Performing the operation "Set variable" on target "Name: b Value: True".
Variable $b is set to ''

Parametry

-Append

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

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

File
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-FilePath

Określa plik, który to polecenie cmdlet zapisuje obiekt w postaci symboli wieloznacznych, ale musi zostać rozpoznany jako pojedynczy plik.

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:True
DontShow:False

Zestawy parametrów

File
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-InputObject

Określa obiekt, który ma zostać zapisany i wyświetlony. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty. Możesz również przekazać obiekt do Tee-Object.

Jeśli używasz parametru InputObject z Tee-Object, zamiast potokowania wyników polecenia, aby Tee-Object, wartość InputObject jest traktowana jako pojedynczy obiekt, nawet jeśli wartość jest kolekcją.

Właściwości parametru

Typ:PSObject
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-LiteralPath

Określa plik, do którego to polecenie cmdlet zapisuje obiekt. W przeciwieństwie do FilePathwartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Żadne znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze cudzysłowy wskazują programowi PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:PSPath

Zestawy parametrów

LiteralFile
Position:Named
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Variable

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

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

Variable
Position:Named
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

PSObject

Do tego polecenia cmdlet można przekazywać obiekty.

Dane wyjściowe

PSObject

To polecenie cmdlet zwraca obiekt, który przekierowuje.

Uwagi

Program Windows PowerShell zawiera następujące aliasy dla Tee-Object:

  • tee

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

Tee-Object używa kodowania "Unicode" (UTF-16LE) podczas zapisywania w plikach. Jeśli potrzebujesz innego kodowania, użyj polecenia cmdlet Out-File z parametrem Encoding.