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.