Bagikan melalui


Out-File

Mengirim output ke file.

Sintaks

ByPath (Default)

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

ByLiteralPath

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

Deskripsi

Cmdlet Out-File mengirim 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.

Mengalihkan output perintah PowerShell (cmdlet, fungsi, skrip) menggunakan operator pengalihan (>) secara fungsional setara dengan pipa ke Out-File tanpa parameter tambahan. PowerShell 7.4 mengubah perilaku operator pengalihan saat digunakan untuk mengalihkan stdout stream dari perintah asli. 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 membuat 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

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

cmdlet Get-Process mendapatkan daftar proses yang berjalan di komputer lokal. Objek Proses dikirimkan alur ke cmdlet Out-File. 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

cmdlet Get-Process 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 proses dalam $Procs 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 cmdlet Out-File saat Anda tidak berada dalam drive penyedia FileSystem. Gunakan cmdlet Get-PSProvider untuk melihat penyedia di komputer lokal Anda. Untuk informasi selengkapnya, lihat tentang_Penyedia.

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

Perintah Set-Location menggunakan parameter Jalur untuk mengatur lokasi saat ini ke penyedia registri Alias:. Cmdlet Get-Location menampilkan jalur lengkap untuk Alias:. Get-ChildItem mengirim objek ke bawah alur ke cmdlet Out-File. Out-File menggunakan parameter FilePath untuk menentukan jalur lengkap dan nama file untuk output, C:\TestDir\AliasNames.txt. Cmdlet Get-Content 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 parameter Width untuk semua pemanggilan Out-File dan operator 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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Confirm

Meminta konfirmasi sebelum menjalankan cmdlet.

Properti parameter

Jenis:SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False
Alias:Cf

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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).
  • ansi: Menggunakan pengodean untuk halaman kode ANSI budaya saat ini. Opsi ini ditambahkan di PowerShell 7.4.
  • bigendianunicode: Mengenkripsi dalam format UTF-16 menggunakan urutan byte big-endian.
  • bigendianutf32: Mengenkode dalam format UTF-32 menggunakan urutan byte big-endian.
  • oem: Menggunakan pengkodean default untuk program MS-DOS dan program konsol.
  • unicode: Mengode 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 Byte Order Mark (BOM)
  • utf32: Mengodekan dalam format UTF-32.

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

Dimulai dengan PowerShell 7.4, Anda dapat menggunakan nilai untuk parameter Pengodean untuk meneruskan ID numerik untuk halaman kode ANSI budaya saat ini tanpa harus menentukannya secara manual.

Nota

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

Properti parameter

Jenis:Encoding
Nilai default:UTF8NoBOM
Nilai yang diterima:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:1
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-FilePath

Menentukan jalur ke file output.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:Jalur

Kumpulan parameter

ByPath
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Force

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

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-InputObject

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

Properti parameter

Jenis:PSObject
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-LiteralPath

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

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:PSPath, LP

Kumpulan parameter

ByLiteralPath
Position:Named
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa: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 menimpa file tanpa peringatan.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:NoOverwrite

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-NoNewline

Menentukan bahwa konten 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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-WhatIf

Menunjukkan apa yang akan terjadi ketika cmdlet dijalankan. Cmdlet tidak dijalankan.

Properti parameter

Jenis:SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False
Alias:wi

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Width

Menentukan jumlah maksimum 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.

Properti parameter

Jenis:Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

Input

PSObject

Anda dapat menyalurkan objek apa pun ke cmdlet ini.

Output

None

Cmdlet ini tidak mengembalikan output.

Catatan

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

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

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

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