Aracılığıyla paylaş


Tee-Object

Komut çıkışını bir dosyaya veya değişkene kaydeder ve işlem hattına gönderir.

Sözdizimi

File EnterprisePublishing

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

Tee-Object Cmdlet çıkışı iki yönde yazılır. Çıkışı bir dosyada veya değişkende depolar ve işlem hattına gönderir. İşlem hattındaki son komut ise Tee-Object , komut çıkışı konsolunda görüntülenir.

dahili olarak Tee-Object ve Out-File komutlarını Set-Variable kullanır. Bu komutlar WhatIf parametresini destekler. Komut Tee-ObjectWhatIf parametresini desteklemez. Ancak, WhatIf parametresini destekleyen bir betik veya işlev sarmalarsanızTee-Object, Tee-Object ve Out-File komutlarına Set-VariableWhatIf durumunu geçirir.

Örnekler

Örnek 1: Çıktı işlemleri bir dosyaya ve konsola işlenir

Bu örnek, bilgisayarda çalışan işlemlerin listesini alır ve sonucu bir dosyaya gönderir. İkinci bir yol belirtilmediğinden, işlemler konsolunda da görüntülenir.

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
...

Örnek 2: Bir değişkene ve 'Select-Object' için çıkış işlemleri

Bu örnek, bilgisayarda çalışan işlemlerin listesini alır, bunları $proc değişkenine kaydeder ve Select-Object'e iletir.

Get-Process notepad | Tee-Object -Variable proc | Select-Object ProcessName, Handles
ProcessName                              Handles
-----------                              -------
notepad                                  43
notepad                                  37
notepad                                  38
notepad                                  38

Select-Object cmdlet'i ProcessName ve Handles özelliklerini seçer. $proc değişkeninin Get-Processtarafından döndürülen varsayılan bilgileri içerdiğini unutmayın.

Örnek 3: Sistem dosyalarını iki günlük dosyasına çıkış yapma

Bu örnek, sistem dosyalarının listesini iki günlük dosyasına, bir kümülatif dosyaya ve geçerli bir dosyaya kaydeder.

Get-ChildItem -Path D: -File -System -Recurse |
  Tee-Object -FilePath "C:\test\AllSystemFiles.txt" -Append |
    Out-File C:\test\NewSystemFiles.txt

Komut, D: sürücüsündeki sistem dosyaları için özyinelemeli arama yapmak için Get-ChildItem cmdlet'ini kullanır. İşlem hattı işleci (|), listeyi Tee-Objectadresine gönderir; bu işlem hattında listeyi AllSystemFiles.txt dosyasına ekler ve listeyi Out-File cmdlet'ine geçirir ve bu da listeyi NewSystemFiles.txt filekaydeder.

Örnek 4: Çıktıyı konsola yazdırma ve işlem hattında kullanma

Bu örnek, bir klasördeki dosyaları alır, konsola yazdırır ve sonra tanımlı bir ön madde meta veri bloğuna sahip olanlar için dosyaları filtreler. Son olarak, ön madde içeren makalelerin adlarını listeler.

$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

Örnek, $consoleDevice değişkenini geçerli terminalin konsol cihazının değerine ayarlar. Windows'da, çıkışınızı \\.\CON dosya yolu'na yönlendirerek geçerli konsol cihazına yazabilirsiniz. Windows olmayan sistemlerde /dev/tty dosya yolu kullanırsınız.

Ardından $frontMatterPattern değişkenini, bir dize üç tireyle (---) başladığında ve başka bir üç tireden önce herhangi bir içeriğe sahip olduğunda eşleşen normal bir ifadeye ayarlar. Bu desen bir makalenin içeriğiyle eşleştiğinde, makalede tanımlı bir ön madde meta veri bloğu bulunur.

Daha sonra örnek, Get-ChildItem klasöründeki tüm dosyaları almak için About kullanır. Tee-Object, FileName parametresini kullanarak kanallı sonuçları konsola yazdırır. Where-Object, Get-Content parametresiyle içeriklerini tek bir dize olarak alarak ve bu dizeyi $frontMatterPatternile karşılaştırarak dosyaları filtreler.

Son olarak, örnek tanımlı bir ön madde meta veri bloğuna sahip klasördeki dosyaların adlarını yazdırır.

Örnek 5: **WhatIf** parametresiyle betikte 'Tee-Object' kullanma

Komut Tee-ObjectWhatIf parametresini desteklemez. Ancak, WhatIf parametresini destekleyen bir betik veya işlev sarmalarsanızTee-Object, Tee-ObjectWhatIf durumunu dahili olarak kullandığı ve Out-File komutlarına Set-Variable geçirir.

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 ''

Parametreler

-Append

Cmdlet'in çıkışı belirtilen dosyaya eklediğini gösterir. Bu parametre olmadan yeni içerik, dosyadaki mevcut içeriğin yerini uyarı olmadan alır.

Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

File
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Encoding

Hedef dosya için kodlama türünü belirtir. Varsayılan değer şudur: utf8NoBOM.

Bu parametre için kabul edilebilir değerler aşağıdaki gibidir:

  • ascii: ASCII (7 bit) karakter kümesi için kodlamayı kullanır.
  • ansi: Geçerli kültürün ANSI kod sayfasının kodlamasını kullanır. Bu seçenek PowerShell 7.4'e eklendi.
  • bigendianunicode: Büyük endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • oem: MS-DOS ve konsol programları için varsayılan kodlamayı kullanır.
  • unicode: Küçük-öncelikli bayt sırası kullanılarak UTF-16 biçiminde kodlanır.
  • utf7: UTF-7 biçiminde kodlar.
  • utf8: UTF-8 biçiminde kodlar.
  • utf8BOM: Bayt Sırası İşareti (BOM) ile UTF-8 biçiminde kodlar
  • utf8NoBOM: Bayt Sırası İşareti (BOM) olmadan UTF-8 biçiminde kodlar
  • utf32: UTF-32 biçiminde kodlar.

PowerShell 6.2'den başlayarak, Kodlama parametresi, kayıtlı kod sayfalarının sayısal kimliklerine (-Encoding 1251gibi) veya kayıtlı kod sayfalarının dize adlarına (-Encoding "windows-1251"gibi) de izin verir. Daha fazla bilgi için Encoding.CodePageiçin .NET belgelerine bakın.

PowerShell 7.4'den başlayarak, Ansi parametresinin değerini kullanarak geçerli kültürün ANSI kod sayfasının sayısal kimliğini el ile belirtmek zorunda kalmadan geçirebilirsiniz.

Bu parametre PowerShell 7.2'de kullanıma sunulmuştur.

Uyarı

UTF-7* artık kullanılması önerilmez. PowerShell 7.1'den itibaren, utf7 parametresi için belirtirseniz bir uyarı yazılır.

Parametre özellikleri

Tür:Encoding
Default value:UTF8NoBOM
Kabul edilen değerler:ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:1
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-FilePath

Bu cmdlet'in nesneyi Joker karakterlere kaydettiği bir dosyaya izin verilir, ancak tek bir dosyaya çözümlenmesi gerekir.

PowerShell 7'den başlayarak, FilePath Windows'da \\.\CON veya Windows dışı sistemlerde /dev/tty olarak belirttiğinizde, InputObject konsolda yazdırılır. Bu dosya yolları, sistemdeki geçerli terminalin konsol cihazına karşılık gelir ve InputObject yazdırmanızı ve tek komutla çıkış akışına göndermenizi sağlar.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:True
DontShow:False
Diğer adlar:Yol

Parametre kümeleri

File
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-InputObject

Kaydedilecek ve görüntülenecek nesneyi belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın. Bir nesneyi Tee-Object'e de yöneltebilirsiniz.

ile Tee-Object parametresini kullandığınızda, Tee-Objectiçin komut sonuçlarının InputObject değeri, değer bir koleksiyon olsa bile tek bir nesne olarak değerlendirilir.

Parametre özellikleri

Tür:PSObject
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-LiteralPath

Bu cmdlet'in nesneyi kaydettiği dosyayı belirtir. FilePathaksine, LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol kaçış karakterleri içeriyorsa, yolu tek tırnak işaretleriyle çevreleyin. Tek tırnak işaretleri, PowerShell'in hiçbir karakteri kaçış dizisi olarak yorumlamamasını sağlar.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:PSPath, LP

Parametre kümeleri

LiteralFile
Position:Named
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Variable

Cmdlet'in nesneyi kaydettiği değişkeni belirtir. Önceki dolar işareti ($) olmadan bir değişken adı girin.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

Variable
Position:Named
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

Girişler

PSObject

Nesneleri bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

PSObject

Bu cmdlet yeniden yönlendirildiği nesneyi döndürür.

Notlar

PowerShell, Tee-Objectiçin aşağıdaki diğer adları içerir:

  • Windows:
    • tee

Out-File cmdlet'ini veya yeniden yönlendirme işlecini de kullanabilirsiniz. Her ikisi de çıkışı bir dosyaya kaydeder ancak işlem hattına göndermez.

PowerShell 6'da Tee-Object dosyalara yazarken BOM olmayan UTF-8 kodlamasını kullanır. Farklı bir kodlamaya ihtiyacınız varsa Out-File parametresiyle cmdlet'ini kullanın.