Tee-Object
Enregistre la sortie de la commande dans un fichier ou dans une variable, puis l'envoie dans le 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>]
Description
L’applet Tee-Object
de commande redirige la sortie, c’est-à-dire qu’elle envoie la sortie d’une commande dans deux directions (comme la lettre T). Elle stocke la sortie dans un fichier ou dans une variable, puis l'envoie dans le pipeline. Si Tee-Object
est la dernière commande du pipeline, la sortie de la commande s’affiche à l’invite.
Exemples
Exemple 1 : Processus de sortie dans un fichier et dans la console
Cet exemple obtient la liste des processus en cours d’exécution sur l’ordinateur et envoie le résultat à un fichier. Étant donné qu'un deuxième chemin n'est pas spécifié, les processus sont également affichés dans la 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
...
Exemple 2 : Processus de sortie vers une variable et « Select-Object »
Cet exemple obtient la liste des processus en cours d’exécution sur l’ordinateur, les enregistre dans la $proc
variable et les canalise vers Select-Object
.
Get-Process notepad | Tee-Object -Variable proc | Select-Object processname,handles
ProcessName Handles
----------- -------
notepad 43
notepad 37
notepad 38
notepad 38
L’applet Select-Object
de commande sélectionne les propriétés ProcessName et Handles . Notez que la $proc
variable inclut les informations par défaut retournées par Get-Process
.
Exemple 3 : Sortie des fichiers système vers deux fichiers journaux
Cet exemple enregistre une liste de fichiers système dans deux fichiers journaux, un fichier cumulatif et un fichier actif.
Get-ChildItem -Path D: -File -System -Recurse |
Tee-Object -FilePath "c:\test\AllSystemFiles.txt" -Append |
Out-File c:\test\NewSystemFiles.txt
La commande utilise l’applet Get-ChildItem
de commande pour effectuer une recherche récursive de fichiers système sur le lecteur D :. Un opérateur de pipeline (|
) envoie la liste à Tee-Object
, qui ajoute la liste au fichier AllSystemFiles.txt et transmet la liste vers le bas du pipeline à l’applet Out-File
de commande , qui enregistre la liste dans le NewSystemFiles.txt file
.
Exemple 4 : Imprimer la sortie dans la console et l’utiliser dans le pipeline
Cet exemple obtient les fichiers d’un dossier, les imprime dans la console, puis filtre les fichiers pour ceux qui ont un bloc de métadonnées front matter défini. Enfin, il répertorie les noms des articles qui ont une première matière.
$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
L’exemple définit la $consoleDevice
variable sur la valeur de l’appareil console du terminal actuel. Sur Windows, vous pouvez écrire sur l’appareil de console actuel en redirigeant votre sortie vers le chemin d’accès au \\.\CON
fichier. Sur les systèmes non-Windows, vous utilisez le chemin d’accès aux /dev/tty
fichiers.
Ensuite, elle définit la $frontMatterPattern
variable sur une expression régulière qui correspond au moment où une chaîne commence par trois tirets (---
) et a un contenu avant trois autres tirets. Lorsque ce modèle correspond au contenu d’un article, l’article a un bloc de métadonnées front matter défini.
Ensuite, l’exemple utilise Get-ChildItem
pour récupérer chaque fichier dans le About
dossier . Tee-Object
imprime les résultats redirigés vers la console à l’aide du paramètre FileName . Where-Object
filtre les fichiers en obtenant leur contenu sous la forme d’une chaîne unique avec le paramètre Raw de Get-Content
et en comparant cette chaîne à $frontMatterPattern
.
Enfin, l’exemple imprime les noms des fichiers dans le dossier qui ont un bloc de métadonnées de matière frontale défini.
Paramètres
-Append
Indique que l’applet de commande ajoute la sortie au fichier spécifié. Sans ce paramètre, le nouveau contenu remplace tout contenu existant dans le fichier sans avertissement.
Ce paramètre a été introduit dans Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Spécifie le type de codage du fichier cible. La valeur par défaut est utf8NoBOM
.
Les valeurs acceptables pour ce paramètre sont les suivantes :
ascii
: utilise l’encodage pour le jeu de caractères ASCII (7 bits).bigendianunicode
: encode au format UTF-16 à l’aide de l’ordre d’octets big-endian.oem
: utilise l’encodage par défaut pour les programmes MS-DOS et console.unicode
: encode au format UTF-16 à l’aide de l’ordre d’octet little-endian.utf7
: encode au format UTF-7.utf8
: encode au format UTF-8.utf8BOM
: encode au format UTF-8 avec une marque d’ordre d’octet (BOM)utf8NoBOM
: encode au format UTF-8 sans marque d’ordre d’octet (BOM)utf32
: encode au format UTF-32.
À compter de PowerShell 6.2, le paramètre Encoding autorise également les ID numériques des pages de codes inscrites (comme -Encoding 1251
) ou les noms de chaîne de pages de codes inscrites (comme -Encoding "windows-1251"
). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.
Ce paramètre a été introduit dans PowerShell 7.2.
Notes
Il n’est plus recommandé d’utiliser UTF-7*. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7
pour le paramètre Encoding .
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
Spécifie un fichier que cette applet de commande enregistre l’objet en caractères génériques autorisés, mais qui doit être résolu en un seul fichier.
À partir de PowerShell 7, lorsque vous spécifiez filePath comme \\.\CON
sur Windows ou /dev/tty
sur des systèmes non-Windows, l’objet InputObject est imprimé dans la console. Ces chemins de fichier correspondent à l’appareil console du terminal actuel sur le système, ce qui vous permet d’imprimer l’Objet InputObject et de l’envoyer au flux de sortie avec une commande.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-InputObject
Spécifie l'objet à enregistrer et à afficher. Entrez une variable contenant les objets, ou tapez une commande ou une expression qui les obtient. Vous pouvez également diriger un objet vers Tee-Object
.
Lorsque vous utilisez le paramètre InputObject avec Tee-Object
, au lieu de rediriger les résultats de la commande vers Tee-Object
, la valeur InputObject est traitée comme un objet unique, même si la valeur est une collection.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Spécifie un fichier dans lequel cette applet de commande enregistre l’objet. Contrairement à FilePath, la valeur du paramètre LiteralPath est utilisée exactement telle qu'elle est tapée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme des séquences d’échappement.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Variable
Spécifie une variable dans laquelle l’applet de commande enregistre l’objet. Entrez un nom de variable sans le signe dollar précédent ($
).
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger des objets vers cette applet de commande.
Sorties
Cette applet de commande retourne l’objet qu’elle redirige.
Notes
PowerShell inclut les alias suivants pour Tee-Object
:
- Windows :
tee
Vous pouvez également utiliser l’applet Out-File
de commande ou l’opérateur de redirection, qui enregistrent tous deux la sortie dans un fichier, mais ne l’envoient pas dans le pipeline.
À compter de PowerShell 6, Tee-Object
utilise l’encodage UTF-8 sans nomenclature lorsqu’il écrit dans des fichiers. Si vous avez besoin d’un autre encodage, utilisez l’applet de Out-File
commande avec le paramètre Encoding .