Out-File

Mengirim output ke file.

Sintaks

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

Deskripsi

Out-File Cmdlet mengirimkan output ke file. Ini secara implisit menggunakan sistem pemformatan PowerShell untuk menulis ke file. File menerima representasi tampilan yang sama dengan terminal. Ini berarti bahwa output mungkin tidak ideal untuk pemrosesan terprogram kecuali semua objek input adalah string. Saat Anda perlu menentukan parameter untuk output, gunakan Out-File daripada operator pengalihan (>). Untuk informasi selengkapnya tentang pengalihan, lihat about_Redirection.

Contoh

Contoh 1: Mengirim output dan membuat file

Contoh ini memperlihatkan cara mengirim daftar proses komputer lokal ke file. Jika file tidak ada, Out-File buat file di jalur yang ditentukan.

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 mendapatkan daftar proses yang berjalan di komputer lokal. Objek Proses dikirim ke alur ke Out-File cmdlet. Out-File menggunakan parameter FilePath dan membuat file di direktori saat ini bernama Process.txt. Get-Content Perintah mendapatkan konten dari file dan menampilkannya di konsol PowerShell.

Contoh 2: Mencegah file yang ada ditimpa

Contoh ini mencegah file yang ada ditimpa. Secara default, Out-File menimpa file yang ada.

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 mendapatkan daftar proses yang berjalan di komputer lokal. Objek Proses dikirim ke alur ke Out-File cmdlet. Out-File menggunakan parameter FilePath dan mencoba menulis ke file di direktori saat ini bernama Process.txt. Parameter NoClobber mencegah file ditimpa dan menampilkan pesan bahwa file sudah ada.

Contoh 3: Mengirim output ke file dalam format ASCII

Contoh ini menunjukkan cara mengodekan output dengan jenis pengodean tertentu.

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

Get-Process Cmdlet mendapatkan daftar proses yang berjalan di komputer lokal. Objek Proses disimpan dalam variabel , $Procs. Out-File menggunakan parameter FilePath dan membuat file di direktori saat ini bernama Process.txt. Parameter InputObject meneruskan objek $Procs proses ke file Process.txt. Parameter Pengodean mengonversi output ke format ASCII . Parameter Lebar membatasi setiap baris dalam file menjadi 50 karakter sehingga beberapa data mungkin terpotong.

Contoh 4: Menggunakan penyedia dan mengirim output ke file

Contoh ini menunjukkan cara menggunakan Out-File cmdlet saat Anda tidak berada di drive penyedia FileSystem . Get-PSProvider Gunakan cmdlet untuk melihat penyedia di komputer lokal Anda. Untuk informasi selengkapnya, lihat 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 Perintah menggunakan parameter Jalur untuk mengatur lokasi saat ini ke penyedia registri Alias:. Get-Location Cmdlet menampilkan jalur lengkap untuk Alias:. Get-ChildItem mengirim objek ke bawah alur ke Out-File cmdlet. Out-File menggunakan parameter FilePath untuk menentukan jalur lengkap dan nama file untuk output, C:\TestDir\AliasNames.txt. Get-Content Cmdlet menggunakan parameter Jalur dan menampilkan konten file di konsol PowerShell.

Contoh 5: Mengatur lebar output file untuk seluruh cakupan

Contoh ini menggunakan $PSDefaultParameterValues untuk mengatur Width parameter untuk semua pemanggilan Out-File dan operartor pengalihan (> dan >>) ke 2000. Ini memastikan bahwa di mana saja dalam cakupan saat ini bahwa Anda mengeluarkan data yang diformat tabel ke file, PowerShell menggunakan lebar garis 2000 alih-alih lebar garis yang ditentukan oleh lebar konsol host PowerShell.

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

Untuk informasi selengkapnya tentang $PSDefaultParameterValues, lihat about_Preference_Variables.

Parameter

-Append

Menambahkan output ke akhir file yang ada.

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

-Confirm

Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.

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

-Encoding

Menentukan jenis pengodean untuk file target. Nilai defaultnya adalah utf8NoBOM.

Nilai yang dapat diterima untuk parameter ini adalah sebagai berikut:

  • ascii: Menggunakan pengodean untuk set karakter ASCII (7-bit).
  • bigendianunicode: Mengodekan dalam format UTF-16 menggunakan urutan byte big-endian.
  • bigendianutf32: Mengodekan dalam format UTF-32 menggunakan urutan byte big-endian.
  • oem: Menggunakan pengodean default untuk MS-DOS dan program konsol.
  • unicode: Mengodekan dalam format UTF-16 menggunakan urutan byte little-endian.
  • utf7: Mengodekan dalam format UTF-7.
  • utf8: Mengodekan dalam format UTF-8.
  • utf8BOM: Mengodekan dalam format UTF-8 dengan Byte Order Mark (BOM)
  • utf8NoBOM: Mengodekan dalam format UTF-8 tanpa Tanda Urutan Byte (BOM)
  • utf32: Mengodekan dalam format UTF-32.

Dimulai dengan PowerShell 6.2, parameter Pengodean juga memungkinkan ID numerik halaman kode terdaftar (seperti -Encoding 1251) atau nama string halaman kode terdaftar (seperti -Encoding "windows-1251"). Untuk informasi selengkapnya, lihat dokumentasi .NET untuk Encoding.CodePage.

Catatan

UTF-7* tidak lagi disarankan untuk digunakan. Pada PowerShell 7.1, peringatan ditulis jika Anda menentukan utf7 untuk parameter Pengodean .

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

-FilePath

Menentukan jalur ke file output.

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

-Force

Mengambil alih atribut baca-saja dan menimpa file baca-saja yang ada. Parameter Force tidak mengambil alih pembatasan keamanan.

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

-InputObject

Menentukan objek yang akan ditulis ke file. Masukkan variabel yang berisi objek atau ketik perintah atau ekspresi yang mendapatkan objek.

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

-LiteralPath

Menentukan jalur ke file output. Parameter LiteralPath digunakan persis seperti yang ditik. Karakter kartubebas tidak diterima. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menafsirkan karakter apa pun sebagai urutan escape. Untuk informasi selengkapnya, lihat about_Quoting_Rules.

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

-NoClobber

NoClobber mencegah file yang ada ditimpa dan menampilkan pesan bahwa file sudah ada. Secara default, jika file ada di jalur yang ditentukan, Out-File timpa file tanpa peringatan.

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

-NoNewline

Menentukan bahwa isi yang ditulis ke file tidak diakhir dengan karakter baris baru. Representasi string dari objek input digabungkan untuk membentuk output. Tidak ada spasi atau baris baru yang dimasukkan di antara string output. Tidak ada baris baru yang ditambahkan setelah string output terakhir.

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

-WhatIf

Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.

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

-Width

Menentukan jumlah karakter di setiap baris output. Karakter tambahan apa pun dipotong, tidak dibungkus. Jika parameter ini tidak digunakan, lebar ditentukan oleh karakteristik host. Default untuk konsol PowerShell adalah 80 karakter. Jika Anda ingin mengontrol lebar untuk semua pemanggilan Out-File serta operator pengalihan (> dan >>), atur $PSDefaultParameterValues['out-file:width'] = 2000 sebelum menggunakan Out-File.

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

Input

PSObject

Anda dapat menyalurkan objek apa pun ke Out-File.

Output

None

Out-File tidak menghasilkan output apa pun.

Catatan

Objek input secara otomatis diformat seperti yang akan ada di terminal, tetapi Anda dapat menggunakan Format-* cmdlet untuk secara eksplisit mengontrol pemformatan output ke file. Misalnya, Get-Date | Format-List | Out-File out.txt

Untuk mengirim output perintah PowerShell ke Out-File cmdlet, gunakan alur. Atau, Anda dapat menyimpan data dalam variabel dan menggunakan parameter InputObject untuk meneruskan data ke Out-File cmdlet.

Out-File menyimpan data ke file tetapi tidak menghasilkan objek output apa pun ke alur.

PowerShell 7.2 menambahkan kemampuan untuk mengontrol bagaimana urutan pelarian ANSI dirender. Output yang dihias ANSI yang diteruskan dapat Out-File diubah berdasarkan pengaturan $PSStyle.OutputRendering properti. Untuk informasi selengkapnya, lihat about_ANSI_Terminals.