Share via


Out-File

Çıktıyı bir dosyaya gönderir.

Syntax

Out-File
   [-FilePath] <string>
   [[-Encoding] <Encoding>]
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Out-File
   [[-Encoding] <Encoding>]
   -LiteralPath <string>
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

Out-File Cmdlet, çıktıyı bir dosyaya gönderir. Dosyaya yazmak için PowerShell'in biçimlendirme sistemini örtük olarak kullanır. Dosya, terminalle aynı görüntüleme gösterimini alır. Bu, tüm giriş nesneleri dize olmadığı sürece çıkışın programlı işleme için ideal olmayabileceği anlamına gelir.

Yeniden yönlendirme işlecini () kullanarak bir PowerShell komutunun (cmdlet, işlev, betik) çıkışını yeniden> yönlendirmek, fazladan parametre olmadan 'a yönlendirmeye Out-File işlevsel olarak eşdeğerdir. PowerShell 7.4, yerel bir komutun stdout akışını yeniden yönlendirmek için kullanıldığında yeniden yönlendirme işlecinin davranışını değiştirdi. Yeniden yönlendirme hakkında daha fazla bilgi için bkz . about_Redirection.

Örnekler

Örnek 1: Çıktı gönderme ve dosya oluşturma

Bu örnekte, yerel bilgisayarın işlemlerinin listesini bir dosyaya gönderme işlemi gösterilmektedir. Dosya yoksa, Out-File dosyayı belirtilen yolda oluşturur.

Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt

NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     29    22.39      35.40      10.98   42764   9 Application
     53    99.04     113.96       0.00   32664   0 CcmExec
     27    96.62     112.43     113.00   17720   9 Code

cmdlet'i Get-Process , yerel bilgisayarda çalışan işlemlerin listesini alır. İşlem nesneleri işlem hattına cmdlet'ine Out-File gönderilir. Out-FileFilePath parametresini kullanır ve geçerli dizinde Process.txt adlı bir dosya oluşturur. Komut Get-Content dosyadan içerik alır ve PowerShell konsolunda görüntüler.

Örnek 2: Varolan bir dosyanın üzerine yazılmasını engelleme

Bu örnek, var olan bir dosyanın üzerine yazılmasını engeller. Varsayılan olarak, Out-File var olan dosyaların üzerine yazar.

Get-Process | Out-File -FilePath .\Process.txt -NoClobber

Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cmdlet'i Get-Process , yerel bilgisayarda çalışan işlemlerin listesini alır. İşlem nesneleri işlem hattına cmdlet'ine Out-File gönderilir. Out-FileFilePath parametresini kullanır ve geçerli dizindeki Process.txt adlı bir dosyaya yazmaya çalışır. NoClobber parametresi, dosyanın üzerine yazılmasını engeller ve dosyanın zaten var olduğunu belirten bir ileti görüntüler.

Örnek 3: Çıktıyı ASCII biçiminde bir dosyaya gönderme

Bu örnekte, çıkışı belirli bir kodlama türüyle kodlama gösterilmektedir.

$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50

cmdlet'i Get-Process , yerel bilgisayarda çalışan işlemlerin listesini alır. İşlem nesneleri, değişkeninde $Procsdepolanır. Out-FileFilePath parametresini kullanır ve geçerli dizinde Process.txt adlı bir dosya oluşturur. InputObject parametresi, içindeki işlem nesnelerini $Procs dosya Process.txt geçirir. Kodlama parametresi çıkışı ASCII biçimine dönüştürür. Width parametresi, dosyadaki her satırı 50 karakterle sınırlar, bu nedenle bazı veriler kesilebilir.

Örnek 4: Sağlayıcı kullanma ve çıktıyı dosyaya gönderme

Bu örnekte, bir FileSystem sağlayıcı sürücüsünde değilken cmdlet'in nasıl kullanılacağı Out-File gösterilmektedir. Get-PSProvider Yerel bilgisayarınızda sağlayıcıları görüntülemek için cmdlet'ini kullanın. Daha fazla bilgi için bkz . about_Providers.

PS> Set-Location -Path Alias:

PS> Get-Location

Path
----
Alias:\

PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt

PS> Get-Content -Path C:\TestDir\AliasNames.txt

CommandType     Name
-----------     ----
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           cat -> Get-Content

komutu, Set-Location geçerli konumu kayıt defteri sağlayıcısına Alias:ayarlamak için Path parametresini kullanır. cmdlet'i Get-Location için Alias:tam yolu görüntüler. Get-ChildItem nesneleri işlem hattından cmdlet'ine Out-File gönderir. Out-File, C:\TestDir\AliasNames.txt çıktısının tam yolunu ve dosya adını belirtmek için FilePath parametresini kullanır. cmdlet'i Get-Content Path parametresini kullanır ve dosyanın içeriğini PowerShell konsolunda görüntüler.

Örnek 5: Kapsamın tamamı için dosya çıktı genişliğini ayarlama

Bu örnek, ve yeniden yönlendirme işlenenlerinin (> ve >>) tüm çağrıları Out-File için parametresini 2000 olarak ayarlamak Width için kullanır$PSDefaultParameterValues. Bu, geçerli kapsamda tablo biçimlendirilmiş verileri dosyaya çıkardığınız her yerde PowerShell'in PowerShell konağı konsol genişliği tarafından belirlenen çizgi genişliği yerine 2000 satır genişliğini kullanmasını sağlar.

function DemoDefaultOutFileWidth() {
    try {
        $PSDefaultParameterValues['out-file:width'] = 2000

        $logFile = "$pwd\logfile.txt"

        Get-ChildItem Env:\ > $logFile

        Get-Service -ErrorAction Ignore |
            Format-Table -AutoSize |
            Out-File $logFile -Append

        Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
    }
    finally {
        $PSDefaultParameterValues.Remove('out-file:width')
    }
}

DemoDefaultOutFileWidth

hakkında $PSDefaultParameterValuesdaha fazla bilgi için bkz. about_Preference_Variables.

Parametreler

-Append

Çıktıyı var olan bir dosyanın sonuna ekler.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Cmdlet'i çalıştırmadan önce sizden onay ister.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.
  • bigendianutf32: Büyük endian bayt sırasını kullanarak UTF-32 biçiminde kodlar.
  • oem: MS-DOS ve konsol programları için varsayılan kodlamayı kullanır.
  • unicode: Little-endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • 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 Sipariş İş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 (gibi-Encoding 1251) sayısal kimliklerine veya kayıtlı kod sayfalarının dize adlarına da (gibi-Encoding "windows-1251") izin verir. Daha fazla bilgi için Encoding.CodePage için .NET belgelerine bakın.

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

Not

UTF-7* artık kullanılması önerilmez. PowerShell 7.1'den itibaren Kodlama parametresini belirtirseniz utf7 bir uyarı yazılır.

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Çıkış dosyasının yolunu belirtir.

Type:String
Aliases:Path
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Force

Salt okunur özniteliği geçersiz kılar ve var olan bir salt okunur dosyanın üzerine yazar. Force parametresi güvenlik kısıtlamalarını geçersiz kılmaz.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Dosyaya yazılacak nesneleri belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Çıkış dosyasının yolunu belirtir. LiteralPath parametresi tam olarak yazıldığı gibi kullanılır. Joker karakterler kabul edilmiyor. Yol kaçış karakterleri içeriyorsa, tek tırnak içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamaması gerektiğini söyler. Daha fazla bilgi için bkz . about_Quoting_Rules.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoClobber

NoClobber , var olan bir dosyanın üzerine yazılmasını engeller ve dosyanın zaten var olduğunu belirten bir ileti görüntüler. Varsayılan olarak, belirtilen yolda bir dosya varsa, Out-File uyarı vermeden dosyanın üzerine yazar.

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoNewline

Dosyaya yazılan içeriğin yeni satır karakteriyle bitmiyor olduğunu belirtir. Giriş nesnelerinin dize gösterimleri, çıkışı oluşturmak için birleştirilir. Çıkış dizeleri arasına boşluk veya yeni satır eklenmez. Son çıkış dizesinden sonra yeni satır eklenmez.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmıyor.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Width

Çıktının her satırındaki en fazla karakter sayısını belirtir. Ek karakterler kırpılır, sarmalanmaz. Bu parametre kullanılmazsa, genişlik konağın özelliklerine göre belirlenir. PowerShell konsolu için varsayılan değer 80 karakterdir. tüm çağrılarının ve yeniden yönlendirme işleçlerinin Out-File (> ve >>) genişliğini denetlemek istiyorsanız, kullanmadan Out-Fileönce ayarlayın$PSDefaultParameterValues['out-file:width'] = 2000.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

PSObject

Herhangi bir nesneyi bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

None

Bu cmdlet çıkış döndürmez.

Notlar

Giriş nesneleri terminalde olduğu gibi otomatik olarak biçimlendirilir, ancak dosya çıktısının biçimlendirmesini açıkça denetlemek için bir Format-* cmdlet kullanabilirsiniz. Örneğin Get-Date | Format-List | Out-File out.txt

Cmdlet'ine bir PowerShell komutunun çıkışını Out-File göndermek için işlem hattını kullanın. Alternatif olarak, verileri bir değişkende depolayabilir ve verileri cmdlet'e geçirmek için InputObject parametresini Out-File kullanabilirsiniz.

Out-File verileri bir dosyaya kaydeder, ancak işlem hattına herhangi bir çıkış nesnesi üretmez.

PowerShell 7.2, ANSI kaçış dizilerinin nasıl işleneceğini denetleme özelliği ekledi. 'a Out-File geçirilen ANSI ile dekore edilmiş çıkış, özelliğin $PSStyle.OutputRendering ayarına göre değiştirilebilir. Daha fazla bilgi için bkz . about_ANSI_Terminals.