Tee-Object
Guarda la salida del comando en un archivo o variable y también la envía a la canalización.
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>]
El cmdlet Tee-Object
redirige la salida, es decir, envía la salida de un comando en dos direcciones (como la letra T). Almacena la salida en un archivo o variable y también la envía a la canalización. Si Tee-Object
es el último comando de la canalización, la salida del comando se muestra en el símbolo del sistema.
En este ejemplo se obtiene una lista de los procesos que se ejecutan en el equipo y se envía el resultado a un archivo. Dado que no se especifica una segunda ruta de acceso, los procesos también se muestran en la consola.
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
...
Este ejemplo obtiene una lista de los procesos que se ejecutan en el equipo, los guarda en la variable $proc
y los canaliza a Select-Object
.
Get-Process notepad | Tee-Object -Variable proc | Select-Object ProcessName, Handles
ProcessName Handles
----------- -------
notepad 43
notepad 37
notepad 38
notepad 38
El cmdlet Select-Object
selecciona las propiedades ProcessName y Handles. Tenga en cuenta que la variable $proc
incluye la información predeterminada devuelta por Get-Process
.
En este ejemplo se guarda una lista de archivos del sistema en dos archivos de registro, un archivo acumulativo y un archivo actual.
Get-ChildItem -Path D: -File -System -Recurse |
Tee-Object -FilePath "c:\test\AllSystemFiles.txt" -Append |
Out-File c:\test\NewSystemFiles.txt
El comando usa el cmdlet Get-ChildItem
para realizar una búsqueda recursiva de archivos del sistema en la unidad D: . Un operador de canalización (|
) envía la lista a Tee-Object
, que anexa la lista al archivo AllSystemFiles.txt y pasa la lista por la canalización al cmdlet Out-File
, que guarda la lista en el NewSystemFiles.txt file
.
En este ejemplo se obtienen los archivos de una carpeta, se imprimen en la consola y, a continuación, se filtran los archivos de los que tienen un bloque de metadatos de front-matter definido. Por último, enumera los nombres de los artículos que tienen una materia frontal.
$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
En el ejemplo se establece la variable $consoleDevice
en el valor del dispositivo de consola del terminal actual. En Windows, puede escribir en el dispositivo de consola actual redirigiendo la salida a la ruta de acceso de archivo \\.\CON
. En sistemas que no son windows, se usa la ruta de acceso de archivos /dev/tty
.
A continuación, establece la variable $frontMatterPattern
en una expresión regular que coincide cuando una cadena comienza con tres guiones (---
) y tiene cualquier contenido antes de otros tres guiones. Cuando este patrón coincide con el contenido de un artículo, el artículo tiene un bloque de metadatos de front-matter definido.
A continuación, en el ejemplo se usa Get-ChildItem
para recuperar todos los archivos de la carpeta About
.
Tee-Object
imprime los resultados canalados en la consola mediante el parámetro fileName de.
Where-Object
filtra los archivos obteniendo su contenido como una sola cadena con el parámetro Raw de Get-Content
y comparando esa cadena con $frontMatterPattern
.
Por último, en el ejemplo se imprimen los nombres de los archivos de la carpeta que tienen un bloque de metadatos de front-matter definido.
Indica que el cmdlet anexa la salida al archivo especificado. Sin este parámetro, el nuevo contenido reemplaza cualquier contenido existente en el archivo sin advertencia.
Este parámetro se introdujo en Windows PowerShell 3.0.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Especifica el tipo de codificación para el archivo de destino. El valor predeterminado es utf8NoBOM
.
Los valores aceptables para este parámetro son los siguientes:
-
ascii
: usa la codificación para el juego de caracteres ASCII (7 bits). -
ansi
: usa la codificación para la página de códigos ANSI de la referencia cultural actual. Esta opción se agregó en PowerShell 7.4. -
bigendianunicode
: codifica en formato UTF-16 mediante el orden de bytes big-endian. -
oem
: usa la codificación predeterminada para MS-DOS y programas de consola. -
unicode
: codifica en formato UTF-16 mediante el orden de bytes little-endian. -
utf7
: codifica en formato UTF-7. -
utf8
: codifica en formato UTF-8. -
utf8BOM
: codifica en formato UTF-8 con marca de orden de bytes (BOM) -
utf8NoBOM
: codifica en formato UTF-8 sin marca de orden de bytes (BOM) -
utf32
: codifica en formato UTF-32.
A partir de PowerShell 6.2, el parámetro Codificación también permite identificadores numéricos de páginas de códigos registradas (como -Encoding 1251
) o nombres de cadena de páginas de códigos registradas (como -Encoding "windows-1251"
). Para obtener más información, consulte la documentación de .NET para Encoding.CodePage.
A partir de PowerShell 7.4, puede usar el valor de Ansi
para el parámetro Codificación para pasar el identificador numérico de la página de códigos ANSI de la referencia cultural actual sin tener que especificarlo manualmente.
Este parámetro se introdujo en PowerShell 7.2.
Nota
UTF-7* ya no se recomienda usar. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7
para el parámetro Codificación.
Tipo: | Encoding |
Valores aceptados: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Posición: | 1 |
Valor predeterminado: | UTF8NoBOM |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Especifica un archivo que este cmdlet guarda el objeto en caracteres comodín, pero debe resolverse en un único archivo.
A partir de PowerShell 7, al especificar el FilePath de como \\.\CON
en Windows o /dev/tty
en sistemas que no son Windows, el InputObject se imprime en la consola. Esas rutas de acceso de archivo corresponden al dispositivo de consola del terminal actual en el sistema, lo que le permite imprimir el InputObject y enviarlo al flujo de salida con un comando.
Tipo: | String |
Alias: | Path |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
Especifica el objeto que se va a guardar y mostrar. Escriba una variable que contenga los objetos o escriba un comando o expresión que obtenga los objetos. También puede canalizar un objeto para Tee-Object
.
Cuando se usa el parámetro InputObject con Tee-Object
, en lugar de canalizar los resultados del comando para Tee-Object
, el valor InputObject se trata como un único objeto incluso si el valor es una colección.
Tipo: | PSObject |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
Especifica un archivo en el que este cmdlet guarda el objeto. A diferencia de FilePath, el valor del parámetro LiteralPath se usa exactamente como se escribe. No se interpreta ningún carácter como caracteres comodín. Si la ruta de acceso incluye caracteres de escape, escríbala entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.
Tipo: | String |
Alias: | PSPath, LP |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Especifica una variable en la que el cmdlet guarda el objeto. Escriba un nombre de variable sin el signo de dólar anterior ($
).
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Puede canalizar objetos a este cmdlet.
Este cmdlet devuelve el objeto que redirige.
PowerShell incluye los siguientes alias para Tee-Object
:
- Windows:
tee
También puede usar el cmdlet Out-File
o el operador de redirección, ambos que guardan la salida en un archivo, pero no lo envían a la canalización.
A partir de PowerShell 6, Tee-Object
usa codificación UTF-8 sin BOM al escribir en archivos. Si necesita una codificación diferente, use el cmdlet Out-File
con el parámetro Codificación.
Comentarios de PowerShell
PowerShell es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: