Tee-Object
Speichert die Ausgabe des Befehls in einer Datei oder einer Variablen, und sendet sie über die Pipeline.
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>]
Beschreibung
Das Tee-Object
Cmdlet leitet die Ausgabe um, d. h. die Ausgabe eines Befehls in zwei Richtungen (z. B. den Buchstaben T). Das Cmdlet speichert die Ausgabe in einer Datei oder einer Variablen und sendet sie über die Pipeline. Wenn Tee-Object
es sich um den letzten Befehl in der Pipeline handelt, wird die Befehlsausgabe an der Eingabeaufforderung angezeigt.
Beispiele
Beispiel 1: Ausgabeprozesse in eine Datei und an die Konsole
In diesem Beispiel wird eine Liste der prozesse, die auf dem Computer ausgeführt werden, und das Ergebnis wird an eine Datei gesendet. Da kein zweiter Pfad angegeben ist, werden die Prozesse auch in der Konsole angezeigt.
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
...
Beispiel 2: Ausgabeprozesse an eine Variable und "Select-Object"
In diesem Beispiel wird eine Liste der Prozesse, die auf dem Computer ausgeführt werden, in der $proc
Variablen gespeichert, und sie werden in Select-Object
die Rohre gepipet.
Get-Process notepad | Tee-Object -Variable proc | Select-Object processname,handles
ProcessName Handles
----------- -------
notepad 43
notepad 37
notepad 38
notepad 38
Das Select-Object
Cmdlet wählt die Eigenschaften ProcessName und Handles aus . Beachten Sie, dass die $proc
Variable die standardinformationen enthält, die von Get-Process
.
Beispiel 3: Ausgabesystemdateien in zwei Protokolldateien
In diesem Beispiel wird eine Liste von Systemdateien in zwei Protokolldateien, einer kumulativen Datei und einer aktuellen Datei gespeichert.
Get-ChildItem -Path D: -File -System -Recurse |
Tee-Object -FilePath "c:\test\AllSystemFiles.txt" -Append |
Out-File c:\test\NewSystemFiles.txt
Der Befehl verwendet das Get-ChildItem
Cmdlet, um eine rekursive Suche nach Systemdateien auf dem Laufwerk D: durchzuführen. Ein Pipelineoperator (|
) sendet die Liste an Tee-Object
, an die die Liste an die AllSystemFiles.txt-Datei angefügt wird und die Liste an das Cmdlet weitergibt, an das Out-File
die Liste NewSystemFiles.txt file
gespeichert wird.
Beispiel 4: Drucken der Ausgabe in der Konsole und Verwendung in der Pipeline
In diesem Beispiel werden die Dateien in einem Ordner abgerufen, in der Konsole gedruckt, dann werden die Dateien für diejenigen gefiltert, die über einen definierten Front-Matter-Metadatenblock verfügen. Schließlich werden die Namen der Artikel aufgelistet, die front-matter haben.
$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
Im Beispiel wird die $consoleDevice
Variable auf den Wert des Konsolengeräts des aktuellen Terminals festgelegt. Unter Windows können Sie auf das aktuelle Konsolengerät schreiben, indem Sie Die Ausgabe an den \\.\CON
Dateipfad umleiten. Auf Nicht-Windows-Systemen verwenden Sie den /dev/tty
Dateipfad.
Anschließend wird die Variable auf einen regulären Ausdruck festgelegt, der $frontMatterPattern
beim Start einer Zeichenfolge mit drei Gedankenstrichen (---
) übereinstimmt und vor anderen drei Gedankenstrichen inhalt hat. Wenn dieses Muster mit dem Inhalt eines Artikels übereinstimmt, weist der Artikel einen definierten Metadatenblock für die Front-Materie auf.
Als Nächstes verwendet Get-ChildItem
das Beispiel, um jede Datei im About
Ordner abzurufen. Tee-Object
druckt die weitergeleiteten Ergebnisse mithilfe des FileName-Parameters an die Konsole. Where-Object
filtert die Dateien, indem sie deren Inhalt als einzelne Zeichenfolge mit dem Parameter "Raw" abrufen Get-Content
und diese Zeichenfolge vergleichen.$frontMatterPattern
Schließlich druckt das Beispiel die Namen der Dateien im Ordner mit einem definierten Front-Matter-Metadatenblock.
Parameter
-Append
Gibt an, dass das Cmdlet die Ausgabe an die angegebene Datei angibt. Ohne diesen Parameter ersetzt der neue Inhalt vorhandene Inhalte in der Datei ohne Warnung.
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Gibt den Typ der Codierung für die Zieldatei an. Der Standardwert ist utf8NoBOM
.
Die zulässigen Werte für diesen Parameter sind wie folgt:
ascii
: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit).bigendianunicode
: Codiert im UTF-16-Format mit der Big-End-Byte-Reihenfolge.oem
: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.unicode
: Codiert im UTF-16-Format mithilfe der Little-Endian-Bytereihenfolge.utf7
: Codiert im UTF-7-Format.utf8
: Codiert im UTF-8-Format.utf8BOM
: Codiert im UTF-8-Format mit Bytereihenfolgezeichen (BOM)utf8NoBOM
: Codiert im UTF-8-Format ohne Byte Order Mark (BOM)utf32
: Codiert im UTF-32-Format.
Ab PowerShell 6.2 ermöglicht der Encoding-Parameter auch numerische IDs registrierter Codeseiten (z -Encoding 1251
. B. ) oder Zeichenfolgennamen registrierter Codeseiten (z -Encoding "windows-1251"
. B. ). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.
Dieser Parameter wurde in PowerShell 7.2 eingeführt.
Hinweis
UTF-7* wird nicht mehr empfohlen, zu verwenden. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie für den Codierungsparameter angebenutf7
.
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
Gibt eine Datei an, die das Objekt in Wild speichert Karte Zeichen sind zulässig, müssen jedoch in eine einzelne Datei aufgelöst werden.
Ab PowerShell 7 wird das InputObject in der Konsole gedruckt, wenn Sie filePathunter \\.\CON
Windows oder /dev/tty
auf Nicht-Windows-Systemen angeben. Diese Dateipfade entsprechen dem Konsolengerät des aktuellen Terminals auf dem System, sodass Sie das InputObject drucken und mit einem Befehl an den Ausgabedatenstrom senden können.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-InputObject
Gibt das zu speichernde und anzuzeigende Objekt an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, durch den die Objekte abgerufen werden. Sie können ein Objekt auch an Tee-Object
.
Wenn Sie den InputObject-Parameter mit Tee-Object
den Ergebnissen des Eingabebefehls anstelle von Pipingbefehlen Tee-Object
verwenden, wird der InputObject-Wert auch dann als einzelnes Objekt behandelt, wenn es sich bei dem Wert um eine Auflistung handelt.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Gibt eine Datei an, in der dieses Cmdlet das Objekt speichert. Im Gegensatz zu FilePath wird der Wert des LiteralPath-Parameters genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Variable
Gibt eine Variable an, in der das Cmdlet das Objekt speichert. Geben Sie einen Variablennamen ohne das vorangehende Dollarzeichen ($
) ein.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können Objekte an dieses Cmdlet weiterleiten.
Ausgaben
Dieses Cmdlet gibt das Objekt zurück, das es umleitet.
Hinweise
PowerShell enthält die folgenden Aliase für Tee-Object
:
- Windows:
tee
Sie können auch das Out-File
Cmdlet oder den Umleitungsoperator verwenden, von denen beide die Ausgabe in einer Datei speichern, aber nicht an die Pipeline senden.
Ab PowerShell 6 Tee-Object
verwendet BOM-less UTF-8-Codierung, wenn sie in Dateien schreibt. Wenn Sie eine andere Codierung benötigen, verwenden Sie das Out-File
Cmdlet mit dem Encoding-Parameter .
Ähnliche Themen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für