Tee-Object
Sparar kommandoutdata i en fil eller variabel och skickar den även nedåt i pipelinen.
Syntax
File (Standard)
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
Cmdleten Tee-Object skriver utdata i två riktningar. Den lagrar utdata i en fil eller variabel och skickar den även nedåt i pipelinen. Om Tee-Object är det sista kommandot i pipelinen visas kommandoutdata i konsolen.
              Tee-Object Internt använder kommandona Set-Variable ochOut-File. Dessa kommandon stöder parametern WhatIf . Kommandot Tee-Object stöder inte parametern WhatIf . Men om du omsluter Tee-Object i ett skript eller en funktion som stöder parametern WhatIf skickar Tee-Object du tillståndet för WhatIf till Set-Variable kommandona och Out-File .
Exempel
Exempel 1: Utdataprocesser till en fil och till konsolen
Det här exemplet hämtar en lista över de processer som körs på datorn och skickar resultatet till en fil. Eftersom en andra sökväg inte har angetts visas även processerna i konsolen.
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
...
Exempel 2: Utdataprocesser till en variabel och "Select-Object"
Det här exemplet hämtar en lista över de processer som körs på datorn, sparar dem i variabeln $proc och skickar dem till Select-Object.
Get-Process notepad | Tee-Object -Variable proc | Select-Object ProcessName, Handles
ProcessName                              Handles
-----------                              -------
notepad                                  43
notepad                                  37
notepad                                  38
notepad                                  38
Cmdleten Select-Object väljer egenskaperna ProcessName och Handles. Observera att variabeln $proc innehåller standardinformationen som returneras av Get-Process.
Exempel 3: Mata ut systemfiler till två loggfiler
I det här exemplet sparas en lista över systemfiler i två loggfiler, en kumulativ fil och en aktuell fil.
Get-ChildItem -Path D: -File -System -Recurse |
  Tee-Object -FilePath "C:\test\AllSystemFiles.txt" -Append |
    Out-File C:\test\NewSystemFiles.txt
Kommandot använder cmdleten Get-ChildItem för att göra en rekursiv sökning efter systemfiler på D:-enheten. En pipelineoperator (|) skickar listan till Tee-Object, som lägger till listan i AllSystemFiles.txt-filen och skickar listan nedåt i pipelinen till cmdleten Out-File, vilket sparar listan i NewSystemFiles.txt file.
Exempel 4: Skriv ut utdata till konsolen och använd i pipelinen
Det här exemplet hämtar filerna i en mapp, skriver ut dem till konsolen och filtrerar sedan filerna för dem som har ett definierat metadatablock för frontmaterial. Slutligen listar den namnen på de artiklar som har 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
I exemplet anges variabeln $consoleDevice till värdet för den aktuella terminalens konsolenhet. I Windows kan du skriva till den aktuella konsolenheten genom att omdirigera dina utdata till \\.\CON-filsökvägen. På icke-Windows-system använder du /dev/tty-filsökvägen.
Sedan anges variabeln $frontMatterPattern till ett reguljärt uttryck som matchar när en sträng börjar med tre bindestreck (---) och har innehåll före ytterligare tre bindestreck. När det här mönstret matchar en artikels innehåll har artikeln ett definierat metadatablock för frontmaterial.
I exemplet används sedan Get-ChildItem för att hämta varje fil i mappen About. 
              Tee-Object skriver ut pip-resultatet till konsolen med parametern FileName. 
              Where-Object filtrerar filerna genom att hämta innehållet som en enda sträng med parametern Raw för Get-Content och jämföra strängen med $frontMatterPattern.
Slutligen skriver exemplet ut namnen på filerna i mappen som har ett definierat front matter-metadatablock.
Exempel 5: Använd "Tee-Object" i ett skript med parametern **WhatIf** 
	Kommandot Tee-Object stöder inte parametern WhatIf . Men om du omsluter Tee-Object ett skript eller en funktion som stöder parametern WhatIf skickar Tee-Object du tillståndet för WhatIf till kommandona Set-Variable och Out-File som används internt.
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 ''
Parametrar
-Append
Anger att cmdleten lägger till utdata till den angivna filen. Utan den här parametern ersätter det nya innehållet befintligt innehåll i filen utan varning.
Den här parametern introducerades i Windows PowerShell 3.0.
Parameteregenskaper
| Typ: | SwitchParameter | 
| Standardvärde: | False | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
File
| Position: | Named | 
| Obligatorisk: | False | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-Encoding
Anger typen av kodning för målfilen. Standardvärdet är utf8NoBOM.
Godkända värden för den här parametern är följande:
- 
              ascii: Använder kodningen för ASCII-teckenuppsättningen (7-bitars).
- 
              ansi: Använder kodningen för den aktuella kulturens ANSI-kodsida. Det här alternativet lades till i PowerShell 7.4.
- 
              bigendianunicode: Kodar i UTF-16-format med hjälp av storstavelseordningen.
- 
              oem: Använder standardkodning för MS-DOS- och konsolprogram.
- 
              unicode: Kodar i UTF-16-format med hjälp av lite endiansk byteordning.
- 
              utf7: Kodar i UTF-7-format.
- 
              utf8: Kodar i UTF-8-format.
- 
              utf8BOM: Kodar i UTF-8-format med Byte Order Mark (BOM)
- 
              utf8NoBOM: Kodar i UTF-8-format utan Byte Order Mark (BOM)
- 
              utf32: Kodar i UTF-32-format.
Från och med PowerShell 6.2 tillåter parametern Kodning även numeriska ID:n för registrerade kodsidor (till exempel -Encoding 1251) eller strängnamn för registrerade kodsidor (till exempel -Encoding "windows-1251"). Mer information finns i .NET-dokumentationen för Encoding.CodePage.
Från och med PowerShell 7.4 kan du använda värdet Ansi för parametern Kodning för att skicka det numeriska ID:t för den aktuella kulturens ANSI-kodsida utan att behöva ange det manuellt.
Den här parametern introducerades i PowerShell 7.2.
Anmärkning
              UTF-7* rekommenderas inte längre att användas. Från och med PowerShell 7.1 skrivs en varning om du anger utf7 för parametern Kodning.
Parameteregenskaper
| Typ: | Encoding | 
| Standardvärde: | UTF8NoBOM | 
| Godkända värden: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
(All)
| Position: | 1 | 
| Obligatorisk: | False | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-FilePath 
		Anger en fil som den här cmdleten sparar objektet till Jokertecken tillåts, men måste matcha till en enda fil.
Från och med PowerShell 7, när du anger FilePath- som \\.\CON i Windows eller /dev/tty på icke-Windows-system, skrivs InputObject ut i konsolen. Dessa filsökvägar motsvarar den aktuella terminalens konsolenhet i systemet, så att du kan skriva ut InputObject- och skicka den till utdataströmmen med ett kommando.
Parameteregenskaper
| Typ: | String | 
| Standardvärde: | None | 
| Stöder jokertecken: | True | 
| DontShow: | False | 
| Alias: | Väg | 
Parameteruppsättningar
File
| Position: | 0 | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-InputObject 
		Anger det objekt som ska sparas och visas. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten. Du kan också skicka ett objekt till Tee-Object.
När du använder parametern InputObject med Tee-Object, i stället för att skicka kommandoresultat till Tee-Object, behandlas värdet InputObject som ett enda objekt även om värdet är en samling.
Parameteregenskaper
| Typ: | PSObject | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
(All)
| Position: | Named | 
| Obligatorisk: | False | 
| Värde från pipeline: | True | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-LiteralPath 
		Anger en fil som den här cmdleten sparar objektet till. Till skillnad från FilePathanvänds värdet för parametern LiteralPath precis som det skrivs. Inga tecken tolkas som wildcards. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.
Parameteregenskaper
| Typ: | String | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
| Alias: | PSPath, SP | 
Parameteruppsättningar
					LiteralFile 
					
				 
				| Position: | Named | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
-Variable
Anger en variabel som cmdleten sparar objektet till. Ange ett variabelnamn utan föregående dollartecken ($).
Parameteregenskaper
| Typ: | String | 
| Standardvärde: | None | 
| Stöder jokertecken: | False | 
| DontShow: | False | 
Parameteruppsättningar
Variable
| Position: | Named | 
| Obligatorisk: | True | 
| Värde från pipeline: | False | 
| Värde från pipeline efter egenskapsnamn: | False | 
| Värde från återstående argument: | False | 
CommonParameters
Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.
Indata
PSObject
Du kan skicka objekt till den här cmdleten.
Utdata
PSObject
Den här cmdleten returnerar det objekt som omdirigeras.
Kommentarer
PowerShell innehåller följande alias för Tee-Object:
- Windows: - tee
 
Du kan också använda cmdleten Out-File eller omdirigeringsoperatorn, som båda sparar utdata i en fil men inte skickar dem i pipelinen.
Från och med PowerShell 6 använder Tee-Object BOM-mindre UTF-8-kodning när den skriver till filer. Om du behöver en annan kodning använder du cmdleten Out-File med parametern Kodning.