Tee-Object
Sparar kommandoutdata i en fil eller variabel och skickar den även nedåt i pipelinen.
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
Cmdleten Tee-Object
omdirigerar utdata, det vill sa att den skickar utdata från ett kommando i två riktningar (till exempel bokstaven T). 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 kommandots utdata i prompten.
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 processerna också 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
Det här exemplet sparar 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 front matter-metadatablock. Slutligen visas 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. I icke-Windows-system använder /dev/tty
du filsökvägen.
Sedan ställs variabeln in på $frontMatterPattern
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 front matter-metadatablock.
Sedan används Get-ChildItem
i exemplet för att hämta alla filer i About
mappen. Tee-Object
skriver ut piped-resultaten till konsolen med hjälp av parametern FileName . Where-Object
filtrerar filerna genom att hämta deras innehåll som en enda sträng med raw-parameternGet-Content
för och jämföra strängen $frontMatterPattern
med .
Slutligen skriver exemplet ut namnen på filerna i mappen som har ett definierat front matter-metadatablock.
Parametrar
-Append
Anger att cmdleten lägger till utdata i 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Anger typ 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).bigendianunicode
: Kodar i UTF-16-format med hjälp av den stora byteordningen.oem
: Använder standardkodning för MS-DOS och konsolprogram.unicode
: Kodar i UTF-16-format med den little-endianska byteordningen.utf7
: Kodar i UTF-7-format.utf8
: Kodar i UTF-8-format.utf8BOM
: Kodar i UTF-8-format med BOM (Byte Order Mark)utf8NoBOM
: Kodar i UTF-8-format utan bom (Byte Order Mark)utf32
: Kodar i UTF-32-format.
Från och med PowerShell 6.2 tillåter kodningsparametern även numeriska ID:er 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.
Den här parametern introducerades i PowerShell 7.2.
Anteckning
UTF-7* rekommenderas inte längre att använda. Från och med PowerShell 7.1 skrivs en varning om du anger utf7
för kodningsparametern .
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
Anger en fil som den här cmdleten sparar objektet till Jokertecken tillåts, men måste matchas till en enda fil.
Från och med PowerShell 7 skrivs InputObject ut i konsolen när du anger FilePath som \\.\CON
på Windows- eller /dev/tty
icke-Windows-system. 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.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-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 InputObject-värdet som ett enskilt objekt även om värdet är en samling.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Anger en fil som den här cmdleten sparar objektet till. Till skillnad från FilePath används värdet för parametern LiteralPath exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken talar om för PowerShell att inga tecken ska tolkas som escape-sekvenser.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Variable
Anger en variabel som cmdleten sparar objektet till. Ange ett variabelnamn utan föregående dollartecken ($
).
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka objekt till den här cmdleten.
Utdata
Den här cmdleten returnerar objektet som den omdirigerar.
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 nedåt i pipelinen.
Från och med PowerShell 6 Tee-Object
använder 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 kodningsparametern .