Delen via


Tee-Object

Hiermee wordt de opdrachtuitvoer opgeslagen in een bestand of variabele en wordt deze ook naar beneden verzonden naar de pijplijn.

Syntaxis

File (Standaard)

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

LiteralFile

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

Variable

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

Description

De Tee-Object cmdlet schrijft uitvoer in twee richtingen. De uitvoer wordt opgeslagen in een bestand of variabele en verzendt deze ook naar beneden in de pijplijn. Als Tee-Object dit de laatste opdracht in de pijplijn is, wordt de opdrachtuitvoer weergegeven in de console.

Intern gebruikt Tee-Object u de Set-Variable en Out-File opdrachten. Deze opdrachten ondersteunen de WhatIf-parameter . De Tee-Object opdracht biedt geen ondersteuning voor de WhatIf-parameter . Als u echter een script of functie verpakt Tee-Object die ondersteuning biedt voor de WhatIf-parameter , Tee-Object geeft u de status van WhatIf door aan de Set-Variable en Out-File opdrachten.

Voorbeelden

Voorbeeld 1: Uitvoerprocessen naar een bestand en naar de console

In dit voorbeeld wordt een lijst weergegeven met de processen die op de computer worden uitgevoerd 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: Uitvoerprocessen naar een variabele en Select-Object

In dit voorbeeld wordt een lijst weergegeven met de processen die op de computer worden uitgevoerd, worden deze opgeslagen in de $proc variabele en worden ze door leidingen naar Select-Object.

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

De cmdlet Select-Object selecteert de ProcessName- en verwerkt eigenschappen. Houd er rekening mee dat de variabele $proc 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 maakt gebruik van de Get-ChildItem cmdlet om een recursieve zoekopdracht uit te voeren naar systeembestanden op het station D: . Een pijplijnoperator (|) verzendt de lijst naar Tee-Object, waarmee de lijst wordt toegevoegd aan het AllSystemFiles.txt bestand en de lijst wordt doorgegeven aan de Out-File-cmdlet, waarmee de lijst in de NewSystemFiles.txt filewordt opgeslagen.

Voorbeeld 4: Uitvoer naar console afdrukken en gebruiken in de pijplijn

In dit voorbeeld worden de bestanden in een map opgehaald, afgedrukt naar de console en worden de bestanden gefilterd op bestanden met een gedefinieerd metagegevensblok voor front-matter. Ten slotte worden de namen vermeld van de artikelen met front-matter.

$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 variabele $consoleDevice ingesteld op de waarde van het consoleapparaat van de huidige terminal. In Windows kunt u naar het huidige consoleapparaat schrijven door de uitvoer om te leiden naar het \\.\CON bestandspad. Op niet-Windows-systemen gebruikt u het /dev/tty bestandspad.

Vervolgens wordt de variabele $frontMatterPattern 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 front-matter.

Vervolgens wordt in het voorbeeld Get-ChildItem gebruikt om elk bestand in de map About op te halen. Tee-Object de gesluisde resultaten naar de console afdrukken met behulp van de parameter FileName. Where-Object de bestanden filtert door hun inhoud als één tekenreeks op te halen met de parameter Raw van Get-Content en die tekenreeks te vergelijken met $frontMatterPattern.

Ten slotte worden in het voorbeeld de namen van de bestanden in de map afgedrukt met een gedefinieerd metagegevensblok voor front-matter.

Voorbeeld 5: 'Tee-Object' gebruiken in een script met de parameter **WhatIf**

De Tee-Object opdracht biedt geen ondersteuning voor de WhatIf-parameter . Als u echter een script of functie verpakt Tee-Object die ondersteuning biedt voor de WhatIf-parameter , Tee-Object geeft u de status van WhatIf door aan de Set-Variable en Out-File opdrachten die intern worden gebruikt.

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

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.

Parametereigenschappen

Type:SwitchParameter
Default value:False
Ondersteunt jokertekens:False
DontShow:False

Parametersets

File
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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: maakt gebruik van de codering voor de ASCII-tekenset (7-bits).
  • ansi: gebruikt de codering voor de ANSI-codepagina van de huidige cultuur. Deze optie is toegevoegd in PowerShell 7.4.
  • bigendianunicode: Codeert in UTF-16-indeling met behulp van de bytevolgorde big-endian.
  • oem: maakt gebruik van de standaardcodering voor MS-DOS- en consoleprogramma's.
  • unicode: Encodeert in UTF-16-indeling met de little-endian-bytevolgorde.
  • utf7: Codeert in UTF-7-formaat.
  • utf8: Codeert in de UTF-8-indeling.
  • utf8BOM: Codeert in UTF-8-formaat 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 parameter Coderings- 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.CodePagevoor meer informatie.

Vanaf PowerShell 7.4 kunt u de Ansi waarde voor de -coderingsparameter gebruiken om de numerieke id voor de ANSI-codepagina van de huidige cultuur door te geven zonder deze handmatig op te geven.

Deze parameter is geïntroduceerd in PowerShell 7.2.

Opmerking

UTF-7* wordt niet meer aanbevolen om te gebruiken. Vanaf PowerShell 7.1 wordt een waarschuwing geschreven als u utf7 opgeeft voor de parameter codering.

Parametereigenschappen

Type:Encoding
Default value:UTF8NoBOM
Geaccepteerde waarden:ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:1
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-FilePath

Hiermee geeft u een bestand op dat het object door deze cmdlet wordt opgeslagen in jokertekens, maar moet worden omgezet in één bestand.

Wanneer u in PowerShell 7 de FilePath- opgeeft als \\.\CON in Windows of /dev/tty op niet-Windows-systemen, wordt de InputObject- afgedrukt in de console. Deze bestandspaden komen overeen met het consoleapparaat van de huidige terminal op het systeem, zodat u de InputObject- kunt afdrukken en met één opdracht naar de uitvoerstroom kunt verzenden.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:True
DontShow:False
Aliassen:Path

Parametersets

File
Position:0
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-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 ook een object doorsluisen naar Tee-Object.

Wanneer u de parameter InputObject gebruikt met Tee-Object, Tee-Objectwordt de InputObject waarde beschouwd als één object, zelfs als de waarde een verzameling is.

Parametereigenschappen

Type:PSObject
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-LiteralPath

Hiermee geeft u een bestand op waarnaar het object door deze cmdlet wordt opgeslagen. In tegenstelling tot FilePath, wordt de waarde van de parameter LiteralPath exact gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escape-tekens bevat, zet het dan tussen enkele aanhalingstekens. Enkele aanhalingstekens zorgen ervoor dat PowerShell geen tekens als escapesequenties interpreteert.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:PSPath, LP

Parametersets

LiteralFile
Position:Named
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Variable

Hiermee geeft u een variabele op waarnaar het object wordt opgeslagen door de cmdlet. Voer een variabelenaam in zonder het voorgaande dollarteken ($).

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

Variable
Position:Named
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

Invoerwaarden

PSObject

U kunt objecten doorsluisen naar deze cmdlet.

Uitvoerwaarden

PSObject

Met deze cmdlet wordt het object geretourneerd 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 in een bestand opslaan, maar deze niet naar de pijplijn verzenden.

Vanaf PowerShell 6 gebruikt Tee-Object bomloze UTF-8-codering wanneer deze naar bestanden schrijft. Als u een andere codering nodig hebt, gebruikt u de cmdlet Out-File met de parameter Codering.