Tee-Object
Salva a saída do comando em um arquivo ou variável e também a envia para o pipeline.
Sintaxe
File (Predefinição)
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
A Tee-Object saída de gravação do cmdlet em duas direções. Ele armazena a saída em um arquivo ou variável e também a envia para o pipeline. Se Tee-Object for o último comando no pipeline, a saída do comando será exibida no console.
Internamente, Tee-Object usa os Set-Variable comandos e Out-File . Esses comandos suportam o parâmetro WhatIf . O Tee-Object comando não suporta o parâmetro WhatIf . No entanto, se você encapsular Tee-Object em um script ou função que suporte o parâmetro WhatIf , Tee-Object passa o estado de WhatIf para os Set-Variable comandos and Out-File .
Exemplos
Exemplo 1: Processos de saída para um arquivo e para o console
Este exemplo obtém uma lista dos processos em execução no computador e envia o resultado para um arquivo. Como um segundo caminho não é especificado, os processos também são exibidos no 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
...
Exemplo 2: Processos de saída para uma variável e 'Select-Object'
Este exemplo obtém uma lista dos processos em execução no computador, salva-os na variável $proc e canaliza-os para Select-Object.
Get-Process notepad | Tee-Object -Variable proc | Select-Object ProcessName, Handles
ProcessName Handles
----------- -------
notepad 43
notepad 37
notepad 38
notepad 38
O cmdlet Select-Object seleciona o ProcessName e Handles propriedades. Observe que a variável $proc inclui as informações padrão retornadas por Get-Process.
Exemplo 3: Saída de arquivos do sistema para dois arquivos de log
Este exemplo salva uma lista de arquivos de sistema em dois arquivos de log, um arquivo cumulativo e um arquivo atual.
Get-ChildItem -Path D: -File -System -Recurse |
Tee-Object -FilePath "C:\test\AllSystemFiles.txt" -Append |
Out-File C:\test\NewSystemFiles.txt
O comando usa o cmdlet Get-ChildItem para fazer uma pesquisa recursiva de arquivos do sistema na unidade D:. Um operador de pipeline (|) envia a lista para Tee-Object, que acrescenta a lista ao arquivo AllSystemFiles.txt e passa a lista pelo pipeline para o cmdlet Out-File, que salva a lista no NewSystemFiles.txt file.
Exemplo 4: Saída de impressão para console e uso no pipeline
Este exemplo obtém os arquivos em uma pasta, imprime-os no console e, em seguida, filtra os arquivos para aqueles que têm um bloco de metadados de matéria frontal definido. Por fim, elenca os nomes dos artigos que têm matéria de frente.
$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
O exemplo define a variável $consoleDevice para o valor do dispositivo de console do terminal atual. No Windows, você pode gravar no dispositivo de console atual redirecionando sua saída para o caminho de arquivo \\.\CON. Em sistemas que não sejam Windows, você usa o caminho de arquivo /dev/tty.
Em seguida, define a variável $frontMatterPattern como uma expressão regular que corresponde quando uma cadeia de caracteres começa com três traços (---) e tem qualquer conteúdo antes de outros três traços. Quando esse padrão corresponde ao conteúdo de um artigo, o artigo tem um bloco de metadados de matéria frontal definido.
Em seguida, o exemplo usa Get-ChildItem para recuperar todos os arquivos na pasta About.
Tee-Object imprime os resultados canalizados para o console usando o parâmetro FileName.
Where-Object filtra os arquivos obtendo seu conteúdo como uma única cadeia de caracteres com o parâmetro Raw de Get-Content e comparando essa cadeia de caracteres com $frontMatterPattern.
Finalmente, o exemplo imprime os nomes dos arquivos na pasta que têm um bloco de metadados de matéria frontal definido.
Exemplo 5: Use 'Tee-Object' em um script com o parâmetro **WhatIf**
O Tee-Object comando não suporta o parâmetro WhatIf . No entanto, se você encapsular Tee-Object em um script ou função que suporte o parâmetro WhatIf , Tee-Object passa o estado de WhatIf para o Set-Variable e Out-File comandos que ele usa internamente.
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 ''
Parâmetros
-Append
Indica que o cmdlet acrescenta a saída ao arquivo especificado. Sem esse parâmetro, o novo conteúdo substitui qualquer conteúdo existente no arquivo sem aviso.
Esse parâmetro foi introduzido no Windows PowerShell 3.0.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Default value: | False |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
File
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Encoding
Especifica o tipo de codificação para o arquivo de destino. O valor predefinido é utf8NoBOM.
Os valores aceitáveis para este parâmetro são os seguintes:
-
ascii: Usa a codificação para o conjunto de caracteres ASCII (7 bits). -
ansi: Usa a codificação para a página de código ANSI da cultura atual. Essa opção foi adicionada no PowerShell 7.4. -
bigendianunicode: Codifica no formato UTF-16 usando a ordem de bytes big-endian. -
oem: Utiliza a codificação predefinida para MS-DOS e programas de consola. -
unicode: Codifica em formato UTF-16 utilizando a ordem de bytes little-endian. -
utf7: Codifica em formato UTF-7. -
utf8: Codifica em formato UTF-8. -
utf8BOM: Codifica no formato UTF-8 com Byte Order Mark (BOM) -
utf8NoBOM: Codifica no formato UTF-8 sem Byte Order Mark (BOM) -
utf32: Codifica no formato UTF-32.
A partir do PowerShell 6.2, o parâmetro Encoding também permite IDs numéricos de páginas de código registradas (como -Encoding 1251) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.
A partir do PowerShell 7.4, você pode usar o valor Ansi para o parâmetro Encoding para passar a ID numérica para a página de código ANSI da cultura atual sem precisar especificá-la manualmente.
Esse parâmetro foi introduzido no PowerShell 7.2.
Observação
UTF-7* não é mais recomendado para usar. A partir do PowerShell 7.1, um aviso será escrito se você especificar utf7 para o parâmetro Encoding.
Propriedades dos parâmetros
| Tipo: | Encoding |
| Default value: | UTF8NoBOM |
| Valores aceites: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | 1 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-FilePath
Especifica um arquivo no qual esse cmdlet salva o objeto Caracteres curinga são permitidos, mas devem ser resolvidos para um único arquivo.
A partir do PowerShell 7, quando você especifica o FilePath como \\.\CON no Windows ou /dev/tty em sistemas que não sejam Windows, o InputObject é impresso no console. Esses caminhos de arquivo correspondem ao dispositivo de console do terminal atual no sistema, permitindo que você imprima o InputObject e envie-o para o fluxo de saída com um comando.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | True |
| NãoMostrar: | False |
| Aliases: | Caminho |
Conjuntos de parâmetros
File
| Position: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-InputObject
Especifica o objeto a ser salvo e exibido. Insira uma variável que contenha os objetos ou digite um comando ou expressão que obtenha os objetos. Você também pode canalizar um objeto para Tee-Object.
Quando você usa o parâmetro InputObject com Tee-Object, em vez de canalizar os resultados do comando para Tee-Object, o valor da InputObject é tratado como um único objeto, mesmo que o valor seja uma coleção.
Propriedades dos parâmetros
| Tipo: | PSObject |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | True |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-LiteralPath
Especifica um arquivo no qual esse cmdlet salva o objeto. Ao contrário FilePath, o valor do parâmetro LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como carta curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell para não interpretar quaisquer caracteres como sequências de escape.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | PSPath, LP |
Conjuntos de parâmetros
LiteralFile
| Position: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Variable
Especifica uma variável na qual o cmdlet salva o objeto. Insira um nome de variável sem o cifrão anterior ($).
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
Variable
| Position: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
PSObject
Você pode canalizar objetos para este cmdlet.
Saídas
PSObject
Este cmdlet retorna o objeto que redireciona.
Notas
O PowerShell inclui os seguintes aliases para Tee-Object:
- Windows:
tee
Você também pode usar o cmdlet Out-File ou o operador de redirecionamento, que salvam a saída em um arquivo, mas não a enviam pelo pipeline.
A partir do PowerShell 6, Tee-Object usa a codificação UTF-8 sem BOM quando grava em arquivos. Se você precisar de uma codificação diferente, use o cmdlet Out-File com o parâmetro Encoding.