Out-File (Microsoft.PowerShell.Utility)


Out-File

Modül:
Microsoft.PowerShell.Utility

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

Sözdizimi

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

Tanım

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

Yeniden yönlendirme operatörünü (>) kullanarak bir PowerShell komutunun çıktısını (cmdlet, işlev, komut dosyası) yeniden yönlendirmek, işlevsel olarak hiçbir ekstra parametre olmadan Dosya Dışı'a yönlendirmeye eşdeğerdir. PowerShell 7.4, yerel bir komutun stdout akışını yönlendirmek için kullanıldığında yeniden yönlendirme operatörünün davranışını değiştirdi. Yeniden yönlendirme hakkında daha fazla bilgi için bkz. about_Redirection.

Örnekler

Örnek 1: Çıktıyı gönderin ve bir dosya oluşturun

Bu örnek, yerel bilgisayarın işlemlerinin bir listesinin bir dosyaya nasıl gönderileceğini gösterir. Dosya mevcut değilse 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

Get-Process cmdlet'i yerel bilgisayarda çalışan işlemlerin listesini alır. Process nesneleri ardışık düzen üzerinden Out-File cmdlet'ine gönderilir. Out-File, FilePath parametresini kullanır ve geçerli dizinde Process.txt adında bir dosya oluşturur. Get-Content komutu, dosyadan içerik alır ve bunu PowerShell konsolunda görüntüler.

Örnek 2: Mevcut bir dosyanın üzerine yazılmasını önleme

Bu örnek, mevcut bir dosyanın üzerine yazılmasını önler. Varsayılan olarak Dosya Dışı mevcut 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
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Get-Process cmdlet'i yerel bilgisayarda çalışan işlemlerin listesini alır. Process nesneleri ardışık düzen üzerinden Out-File cmdlet'ine gönderilir. Out-File, FilePath parametresini kullanır ve geçerli dizindeki Process.txt adlı bir dosyaya yazmaya çalışır. NoClobber parametresi dosyanın üzerine yazılmasını önler ve dosyanın zaten mevcut olduğunu belirten bir mesaj görüntüler.

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

Bu örnek, çıktının belirli bir kodlama türüyle nasıl kodlanacağını gösterir.

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

Get-Process cmdlet'i yerel bilgisayarda çalışan işlemlerin listesini alır. Process nesneleri $Procs değişkeninde saklanır. Out-File, FilePath parametresini kullanır ve geçerli dizinde Process.txt adında bir dosya oluşturur. InputObject parametresi, $Procs dosyasındaki işlem nesnelerini Process.txt dosyasına aktarır. Kodlama parametresi çıktıyı ASCII biçimine dönüştürür. Genişlik parametresi dosyadaki her satırı 50 karakterle sınırlandırır, dolayısıyla bazı veriler kesilebilir.

Örnek 4: Bir sağlayıcı kullanın ve çıktıyı bir dosyaya gönderin

Bu örnek, FileSystem sağlayıcı sürücüsünde olmadığınızda Out-File cmdlet'inin nasıl kullanılacağını gösterir. Yerel bilgisayarınızdaki sağlayıcıları görüntülemek için Get-PSProvider 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

Set-Location komutu, geçerli konumu Alias: kayıt defteri sağlayıcısına ayarlamak için Path parametresini kullanır. Get-Location cmdlet'i Alias:'ın tam yolunu görüntüler. Get-ChildItem, nesneleri işlem hattından Out-File cmdlet'ine 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. Get-Content cmdlet'i 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 ayarlayın

Bu örnek, tüm Out-File çağrıları ve yeniden yönlendirme operatörleri (>Width parametresini ayarlamak üzere $PSDefaultParameterValues kullanır > ve >>) 2000'e kadar. Bu, tablo biçimli verileri dosyaya çıkardığınız geçerli kapsam dahilindeki her yerde, PowerShell'in PowerShell ana bilgisayarının konsolu tarafından belirlenen satır genişliği yerine 2000 satır genişliği kullanmasını sağlar. Genişlik.

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

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

Parametreler

-Append

Çıktıyı mevcut bir dosyanın sonuna ekler.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Confirm

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

Tip :

SwitchParameter

Takma adlar:

cf

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Encoding

Hedef dosyanın kodlama türünü belirtir. Varsayılan değer utf8NoBOM'dur.

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

  • ascii: ASCII (7 bit) karakter kümesinin kodlamasını kullanır.
  • ansi: Geçerli kültürün ANSI kod sayfası için kodlamayı kullanır. Bu seçenek PowerShell 7.4'e eklenmiştir.
  • bigendianunicode: Big-endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • bigendianutf32: Big-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 formatında kodlar.
  • utf8: UTF-8 formatında kodlar.
  • utf8BOM: Bayt Sırası İşareti (BOM) ile UTF-8 formatında kodlar
  • utf8NoBOM: Bayt Sırası İşareti (BOM) olmadan UTF-8 biçiminde kodlar
  • utf32: UTF-32 formatında kodlar.

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

PowerShell 7,4'ten başlayarak, geçerli kültürün ANSI kod sayfasının sayısal kimliğini manuel olarak belirtmek zorunda kalmadan iletmek için Encoding parametresi için Ansi değerini kullanabilirsiniz.

Not

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

Tip :

Kodlama

Kabul edilen değerler:

ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32

Konum:

1

Varsayılan değer:

UTF8NoBOM

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-FilePath

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

Tip :

String

Takma adlar:

Path

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Force

Salt okunur özniteliğini geçersiz kılar ve mevcut bir salt okunur dosyanın üzerine yazar. Zorla parametresi güvenlik kısıtlamalarını geçersiz kılmaz.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-InputObject

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

Tip :

PSObject

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-LiteralPath

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

Tip :

String

Takma adlar:

PSPath, LP

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-NoClobber

NoClobber mevcut bir dosyanın üzerine yazılmasını önler ve dosyanın zaten mevcut olduğunu belirten bir mesaj görüntüler. Varsayılan olarak, belirtilen yolda bir dosya varsa, Dosya Dışı herhangi bir uyarıda bulunmadan dosyanın üzerine yazar.

Tip :

SwitchParameter

Takma adlar:

NoOverwrite

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-NoNewline

Dosyaya yazılan içeriğin yeni satır karakteriyle bitmediğini belirtir. Giriş nesnelerinin dize temsilleri çıktıyı oluşturmak için birleştirilir. Çıkış dizeleri arasına boşluk veya yeni satır eklenmez. Son çıktı dizesinden sonra yeni satır eklenmez.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-WhatIf

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

Tip :

SwitchParameter

Takma adlar:

wi

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Width

Her çıktı satırındaki maksimum karakter sayısını belirtir. Ek karakterler kaydırılmaz, kısaltılır. Bu parametre kullanılmazsa genişlik, ana bilgisayarın özelliklerine göre belirlenir. PowerShell konsolu için varsayılan değer 80 karakterdir. Tüm Out-File çağrılarının yanı sıra yeniden yönlendirme operatörlerinin (> ve >>) genişliğini kontrol etmek istiyorsanız, 'i ayarlayın. Out-File'ı kullanmadan önce$PSDefaultParameterValues['out-file:width']=2000.

Tip :

Int32

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

Girişler

PSObject

Bu cmdlet'e herhangi bir nesneyi aktarabilirsiniz.

Çıkışlar

Yok

Bu cmdlet hiçbir çıktı döndürmez.

Notlar

Giriş nesneleri, terminalde oldukları gibi otomatik olarak biçimlendirilir, ancak dosyanın çıktısının biçimlendirmesini açıkça denetlemek için bir Format-* cmdlet'i kullanabilirsiniz. Örneğin, Get-Tarihi | Biçim Listesi | Out-File out.txt

Bir PowerShell komutunun çıktısını Out-File cmdlet'ine göndermek için ardışık düzeni kullanın. Alternatif olarak, verileri bir değişkende depolayabilir ve verileri Out-File cmdlet'ine aktarmak için InputObject parametresini kullanabilirsiniz.

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

PowerShell 7.2, ANSI kaçış dizilerinin nasıl oluşturulduğunu kontrol etme yeteneğini ekledi. Out-File'a aktarılan ANSI ile dekore edilmiş çıktı, $PSStyle.OutputRendering özelliğinin ayarına göre değiştirilebilir. Daha fazla bilgi için bkz. about_ANSI_Terminaller.

İlgili makaleler