Tee-Object
Hiermee wordt de uitvoer van de opdracht in een bestand of variabele opgeslagen en wordt deze ook in de pijplijn verzonden.
Syntax
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
De Tee-Object
cmdlet stuurt de uitvoer om, dat wil gezegd dat de uitvoer van een opdracht in twee richtingen (zoals de letter T) wordt verzonden. De uitvoer wordt opgeslagen in een bestand of variabele en wordt ook door de pijplijn verzonden. Als Tee-Object
de laatste opdracht in de pijplijn is, wordt de uitvoer van de opdracht weergegeven bij de prompt.
Voorbeelden
Voorbeeld 1: uitvoerprocessen naar een bestand en naar de console
In dit voorbeeld wordt een lijst met de processen die op de computer worden uitgevoerd, opgeslagen en wordt het resultaat naar een bestand verzonden. Omdat er geen tweede pad is opgegeven, worden de processen ook weergegeven in de console.
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
...
Voorbeeld 2: processen uitvoeren naar een variabele en 'Select-Object'
In dit voorbeeld wordt een lijst met de processen die op de computer worden uitgevoerd, opgeslagen in de $proc
variabele en krijgt u ze toe aan Select-Object
.
Get-Process notepad | Tee-Object -Variable proc | Select-Object processname,handles
ProcessName Handles
----------- -------
notepad 43
notepad 37
notepad 38
notepad 38
De Select-Object
cmdlet selecteert de eigenschappen ProcessName en Handles . Houd er rekening mee dat de $proc
variabele de standaardgegevens bevat die worden geretourneerd door Get-Process
.
Voorbeeld 3: systeembestanden uitvoeren naar twee logboekbestanden
In dit voorbeeld wordt een lijst met systeembestanden opgeslagen in twee logboekbestanden, een cumulatief bestand en een huidig bestand.
Get-ChildItem -Path D: -File -System -Recurse |
Tee-Object -FilePath "c:\test\AllSystemFiles.txt" -Append |
Out-File c:\test\NewSystemFiles.txt
De opdracht gebruikt de Get-ChildItem
cmdlet om een recursieve zoekopdracht uit te voeren naar systeembestanden op station D: . Een pijplijnoperator (|
) verzendt de lijst naar Tee-Object
, die de lijst toevoegt aan het AllSystemFiles.txt-bestand en de lijst in de pijplijn doorgeeft aan de Out-File
cmdlet, die de lijst opslaat in de NewSystemFiles.txt file
.
Voorbeeld 4: Uitvoer afdrukken naar console en gebruiken in de pijplijn
In dit voorbeeld worden de bestanden in een map opgeslagen, afgedrukt naar de console en worden de bestanden gefilterd op bestanden met een gedefinieerd blok met metagegevens van de front-matter. Ten slotte worden de namen vermeld van de artikelen met voorgrond.
$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
In het voorbeeld wordt de $consoleDevice
variabele ingesteld op de waarde van het consoleapparaat van de huidige terminal. In Windows kunt u schrijven naar het huidige consoleapparaat door de uitvoer om te leiden naar het \\.\CON
bestandspad. Op niet-Windows-systemen gebruikt u het /dev/tty
bestandspad.
Vervolgens wordt de $frontMatterPattern
variabele ingesteld op een reguliere expressie die overeenkomt wanneer een tekenreeks begint met drie streepjes (---
) en inhoud heeft vóór nog eens drie streepjes. Wanneer dit patroon overeenkomt met de inhoud van een artikel, heeft het artikel een gedefinieerd metagegevensblok voor de voorgrond.
Vervolgens wordt in het voorbeeld gebruikt Get-ChildItem
om elk bestand in de About
map op te halen. Tee-Object
hiermee worden de doorgesluisde resultaten naar de console afgedrukt met behulp van de parameter FileName . Where-Object
filtert de bestanden door hun inhoud op te halen als één tekenreeks met de onbewerkte parameter van Get-Content
en deze tekenreeks te $frontMatterPattern
vergelijken met .
Ten slotte worden in het voorbeeld de namen afgedrukt van de bestanden in de map met een gedefinieerd blok met metagegevens van de front matter.
Parameters
-Append
Geeft aan dat de cmdlet de uitvoer toevoegt aan het opgegeven bestand. Zonder deze parameter vervangt de nieuwe inhoud alle bestaande inhoud in het bestand zonder waarschuwing.
Deze parameter is geïntroduceerd in Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Hiermee geeft u het type codering voor het doelbestand. De standaardwaarde is utf8NoBOM
.
De acceptabele waarden voor deze parameter zijn als volgt:
ascii
: Gebruikt de codering voor de ASCII-tekenset (7-bits).bigendianunicode
: Codeert in UTF-16-indeling met behulp van de bytevolgorde big-endian.oem
: Gebruikt de standaardcodering voor MS-DOS en consoleprogramma's.unicode
: Codeert in UTF-16-indeling met behulp van de bytevolgorde little-endian.utf7
: Codeert in UTF-7-indeling.utf8
: Codeert in UTF-8-indeling.utf8BOM
: Codeert in UTF-8-indeling met Byte Order Mark (BOM)utf8NoBOM
: Codeert in UTF-8-indeling zonder Byte Order Mark (BOM)utf32
: Codeert in UTF-32-indeling.
Vanaf PowerShell 6.2 staat de coderingsparameter ook numerieke id's toe van geregistreerde codepagina's (zoals -Encoding 1251
) of tekenreeksnamen van geregistreerde codepagina's (zoals -Encoding "windows-1251"
). Zie de .NET-documentatie voor Encoding.CodePage voor meer informatie.
Deze parameter is geïntroduceerd in PowerShell 7.2.
Notitie
UTF-7* wordt niet meer aanbevolen om te gebruiken. Vanaf PowerShell 7.1 wordt er een waarschuwing geschreven als u opgeeft utf7
voor de coderingsparameter .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Hiermee geeft u een bestand op dat met deze cmdlet het object opslaat in jokertekens zijn toegestaan, maar moet worden omgezet in één bestand.
Vanaf PowerShell 7 wordt het InputObject afgedrukt in de console wanneer u het FilePath opgeeft als \\.\CON
in Windows of /dev/tty
op niet-Windows-systemen. Deze bestandspaden komen overeen met het consoleapparaat van de huidige terminal op het systeem, zodat u het InputObject kunt afdrukken en verzenden naar de uitvoerstroom met één opdracht.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-InputObject
Hiermee geeft u het object op dat moet worden opgeslagen en weergegeven. Voer een variabele in die de objecten bevat of typ een opdracht of expressie waarmee de objecten worden opgehaald. U kunt een object ook doorspezen naar Tee-Object
.
Wanneer u de parameter InputObject gebruikt met Tee-Object
, in plaats van de opdrachtresultaten door te slangen naar Tee-Object
, wordt de Waarde InputObject behandeld als één object, zelfs als de waarde een verzameling is.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Hiermee geeft u een bestand op waarin deze cmdlet het object opslaat. In tegenstelling tot FilePath wordt de waarde van de parameter LiteralPath precies gebruikt zoals deze wordt getypt. Geen tekens worden geïnterpreteerd als jokertekens. Als het pad escape-tekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens geven PowerShell aan dat geen tekens als escape-reeksen worden geïnterpreteerd.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Variable
Hiermee geeft u een variabele op waarin de cmdlet het object opslaat. Voer een variabelenaam in zonder het voorgaande dollarteken ($
).
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Invoerwaarden
U kunt objecten doorspezen naar deze cmdlet.
Uitvoerwaarden
Deze cmdlet retourneert het object dat wordt omgeleid.
Notities
PowerShell bevat de volgende aliassen voor Tee-Object
:
- Windows:
tee
U kunt ook de Out-File
cmdlet of de omleidingsoperator gebruiken, die beide de uitvoer opslaan in een bestand, maar deze niet in de pijplijn verzenden.
Vanaf PowerShell 6 Tee-Object
wordt UTF-8-codering gebruikt die geen bom bevat wanneer naar bestanden wordt geschreven. Als u een andere codering nodig hebt, gebruikt u de Out-File
cmdlet met de parameter Encoding .