Compress-Archive
Membuat arsip terkompresi, atau file zip, dari file dan direktori tertentu.
Sintaks
Path (Default)
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PathWithUpdate
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
-Update
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PathWithForce
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
-Force
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPathWithUpdate
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
-Update
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPathWithForce
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
-Force
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPath
Compress-Archive
[-DestinationPath] <String>
-LiteralPath <String[]>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Deskripsi
cmdlet Compress-Archive membuat file arsip yang dikompresi, atau di-zip dari satu atau beberapa file atau direktori yang ditentukan. Arsip mengemas beberapa file, dengan kompresi opsional, ke dalam satu file zip untuk distribusi dan penyimpanan yang lebih mudah. File arsip dapat dikompresi menggunakan algoritma kompresi yang ditentukan oleh parameter CompressionLevel.
Cmdlet Compress-Archive menggunakan API System.IO.Compression.ZipArchive untuk mengompresi file.
API membatasi ukuran file maksimum hingga 2GB. Untuk informasi selengkapnya, lihat System.IO.Compression.ZipArchive.
Nota
cmdlet Compress-Archive mengabaikan file dan folder tersembunyi saat membuat atau memperbarui file arsip. Pada komputer non-Windows, ini termasuk file dan folder dengan nama yang dimulai dengan karakter titik (.).
Untuk memastikan file dan folder tersembunyi dikompresi ke dalam arsip, gunakan .NET API sebagai gantinya.
Beberapa contoh menggunakan splatting untuk mengurangi panjang baris sampel kode. Untuk lebih banyak informasi, lihat about_Splatting.
Contoh
Contoh 1: Memadatkan file untuk membuat file arsip
Contoh ini mengompresi file dari direktori yang berbeda dan membuat file arsip. Kartubebas digunakan untuk mendapatkan semua file dengan ekstensi file tertentu. Tidak ada struktur direktori dalam file arsip karena jalur hanya menentukan nama file.
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Parameter Jalur menerima nama file dan nama file tertentu dengan wildcard, *.vsd. Jalur menggunakan daftar yang dipisahkan koma untuk mendapatkan file dari direktori yang berbeda. Tingkat kompresi Tercepat untuk mengurangi waktu pemrosesan. Parameter DestinationPath menentukan lokasi untuk file Draft.zip. File Draft.zip berisi Draftdoc.docx dan semua file dengan ekstensi .vsd.
Contoh 2: Memadatkan file menggunakan LiteralPath
Contoh ini memadatkan file bernama tertentu dan membuat file arsip baru. Tidak ada struktur direktori dalam file arsip karena jalur hanya menentukan nama file.
$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Jalur absolut dan nama file digunakan karena parameter LiteralPath tidak menerima kartubebas. Jalur menggunakan daftar yang dipisahkan koma untuk mendapatkan file dari direktori yang berbeda. Tingkat kompresi Tercepat untuk mengurangi waktu pemrosesan. Parameter DestinationPath menentukan lokasi untuk file Draft.zip. File Draft.zip hanya berisi Draftdoc.docx dan diagram2.vsd.
Contoh 3: Memadatkan direktori yang menyertakan direktori akar
Contoh ini mengompresi direktori dan membuat file arsip yang menyertakan direktori akar, dan semua file dan subdirektorinya. File arsip memiliki struktur direktori karena jalur menentukan direktori akar.
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archive menggunakan parameter Jalur untuk menentukan direktori akar, C:\Reference. Parameter DestinationPath menentukan lokasi untuk file arsip. Arsip Draft.zip mencakup direktori akar Reference, dan semua file dan subdirektorinya.
Contoh 4: Memadatkan direktori yang mengecualikan direktori akar
Contoh ini mengompresi direktori dan membuat file arsip yang mengecualikan direktori akar karena jalur menggunakan kartubebas tanda bintang (*). Arsip berisi struktur direktori yang berisi file direktori akar dan subdirektori.
Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip
Compress-Archive menggunakan parameter Jalur untuk menentukan direktori akar, C:\Reference dengan kartubebas tanda bintang (*). Parameter DestinationPath menentukan lokasi untuk file arsip. Arsip Draft.zip berisi file dan subdirektori direktori akar. Direktori akar Reference dikecualikan dari arsip.
Contoh 5: Memadatkan hanya file dalam direktori akar
Contoh ini hanya mengompresi file dalam direktori akar dan membuat file arsip. Tidak ada struktur direktori dalam arsip karena hanya file yang dikompresi.
Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip
Compress-Archive menggunakan parameter Jalur untuk menentukan direktori akar, C:\Reference dengan wildcard *.*. Parameter DestinationPath menentukan lokasi untuk file arsip. Arsip Draft.zip hanya berisi file direktori akar Reference dan direktori akar dikecualikan.
Contoh 6: Gunakan alur untuk mengarsipkan file
Contoh ini mengirim file ke bawah alur untuk membuat arsip. Tidak ada struktur direktori dalam file arsip karena jalur hanya menentukan nama file.
Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip
Get-ChildItem menggunakan parameter Jalur untuk menentukan dua file dari direktori yang berbeda. Setiap file diwakili oleh objek FileInfo dan dikirimkan alur ke Compress-Archive.
Dua file yang ditentukan diarsipkan dalam PipelineFiles.zip.
Contoh 7: Gunakan alur untuk mengarsipkan direktori
Contoh ini mengirimkan direktori ke bawah alur untuk membuat arsip. File dikirim sebagai fileInfo objek dan direktori sebagai objek DirectoryInfo. Struktur direktori arsip tidak menyertakan direktori akar, tetapi file dan subdirektorinya disertakan dalam arsip.
Get-ChildItem -Path C:\LogFiles |
Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip
Get-ChildItem menggunakan parameter Jalur untuk menentukan direktori akar C:\LogFiles. Setiap FileInfo dan objek DirectoryInfo dikirimkan ke alur.
Compress-Archive menambahkan setiap objek ke arsip PipelineDir.zip. Parameter Jalur tidak ditentukan karena objek alur diterima ke dalam posisi parameter 0.
Contoh 8: Bagaimana rekursi dapat memengaruhi arsip
Contoh ini menunjukkan bagaimana rekursi dapat menduplikasi file di arsip Anda. Misalnya, jika Anda menggunakan Get-ChildItem dengan parameter Recurse. Sebagai proses rekursi, setiap FileInfo dan objek DirectoryInfo dikirim ke alur dan ditambahkan ke arsip.
Get-ChildItem -Path C:\TestLog -Recurse |
Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip
Direktori C:\TestLog tidak berisi file apa pun. Ini memang berisi subdirektori bernama testsub yang berisi file testlog.txt.
Get-ChildItem menggunakan parameter Jalur untuk menentukan direktori akar, C:\TestLog. Parameter Recurse memproses file dan direktori. Objek DirectoryInfo dibuat untuk testsub dan objek FileInfotestlog.txt.
Setiap objek dikirimkan alur ke Compress-Archive.
DestinationPath menentukan lokasi untuk file arsip. Parameter Jalur tidak ditentukan karena objek alur diterima ke dalam posisi parameter 0.
Ringkasan berikut menjelaskan konten arsip PipelineRecurse.zip yang berisi file duplikat:
- Objek DirectoryInfo membuat direktori
testsubdan berisi filetestlog.txt, yang mencerminkan struktur direktori asli. - Objek FileInfo membuat
testlog.txtduplikat di akar arsip. File duplikat dibuat karena rekursi mengirim objek file keCompress-Archive. Perilaku ini diharapkan karena setiap objek yang dikirim ke alur ditambahkan ke arsip.
Contoh 9: Memperbarui file arsip yang sudah ada
Contoh ini memperbarui file arsip yang ada, Draft.zip, di direktori C:\Archives. Dalam contoh ini, file arsip yang ada berisi direktori akar, serta file dan subdirektorinya.
Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip
Perintah memperbarui Draft.zip dengan versi file yang ada yang lebih baru di direktori C:\Reference dan subdirektorinya. Dan, file baru yang ditambahkan ke C:\Reference atau subdirektorinya disertakan dalam arsip Draft.zip yang diperbarui.
Parameter
-CompressionLevel
Menentukan berapa banyak kompresi yang akan diterapkan saat Anda membuat file arsip. Pemadatan yang lebih cepat membutuhkan lebih sedikit waktu untuk membuat file, tetapi dapat menghasilkan ukuran file yang lebih besar.
Jika parameter ini tidak ditentukan, perintah menggunakan nilai default, Optimal.
Berikut ini adalah nilai yang dapat diterima untuk parameter ini:
- Tercepat . Gunakan metode kompresi tercepat yang tersedia untuk mengurangi waktu pemrosesan. Pemadatan yang lebih cepat dapat menghasilkan ukuran file yang lebih besar.
- NoCompression . Tidak memadatkan file sumber.
- Optimal . Waktu pemrosesan tergantung pada ukuran file.
Properti parameter
| Jenis: | String |
| Nilai default: | Optimal |
| Nilai yang diterima: | Optimal, NoCompression, Fastest |
| 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 |
-DestinationPath
Parameter ini diperlukan dan menentukan jalur ke file output arsip. DestinationPath harus menyertakan nama file zip, dan jalur absolut atau relatif ke file zip.
Jika nama file di DestinationPath tidak memiliki ekstensi nama file .zip, cmdlet menambahkan ekstensi nama file .zip.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Force
Gunakan parameter ini untuk menimpa file arsip yang ada.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
PathWithForce
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
LiteralPathWithForce
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-LiteralPath
Menentukan jalur atau jalur ke file yang ingin Anda tambahkan ke file zip arsip. Tidak seperti parameter Jalur
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PSPath |
Kumpulan parameter
LiteralPathWithUpdate
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
LiteralPathWithForce
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
LiteralPath
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-PassThru
Menyebabkan cmdlet menghasilkan objek file yang mewakili file arsip yang dibuat.
Parameter ini diperkenalkan di PowerShell 6.0.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| 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 |
-Path
Menentukan jalur atau jalur ke file yang ingin Anda tambahkan ke file zip arsip. Untuk menentukan beberapa jalur, dan menyertakan file di beberapa lokasi, gunakan koma untuk memisahkan jalur.
Parameter ini menerima karakter kartubebas. Karakter kartubebas memungkinkan Anda menambahkan semua file dalam direktori ke file arsip Anda.
Menggunakan kartubebas dengan direktori akar memengaruhi konten arsip:
- Untuk membuat arsip yang menyertakan direktori akar, dan semua file dan subdirektorinya, tentukan direktori akar di jalur tanpa wildcard. Misalnya:
-Path C:\Reference - Untuk membuat arsip yang kecualikan direktori akar, tetapi zip semua file dan subdirektorinya, gunakan kartubebas tanda bintang (
*). Misalnya:-Path C:\Reference\* - Untuk membuat arsip yang hanya meng-zip file di direktori akar, gunakan wildcard star-dot-star (
*.*). Subdirektori akar tidak disertakan dalam arsip. Misalnya:-Path C:\Reference\*.*
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | True |
| DontShow: | False |
Kumpulan parameter
Path
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
PathWithUpdate
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
PathWithForce
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-Update
Memperbarui arsip yang ditentukan dengan mengganti versi file yang lebih lama dalam arsip dengan versi file yang lebih baru yang memiliki nama yang sama. Anda juga dapat menambahkan parameter ini untuk menambahkan file ke arsip yang ada.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
PathWithUpdate
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
LiteralPathWithUpdate
| Position: | Named |
| Wajib: | True |
| 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 |
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
String
Anda dapat menyalurkan string yang berisi jalur ke satu atau beberapa file.
Output
None
Secara default, cmdlet ini tidak mengembalikan output.
FileInfo
Saat Anda menggunakan parameter PassThru, cmdlet ini mengembalikan objek FileInfo.
Catatan
Menggunakan rekursi dan mengirim objek ke bawah alur dapat menduplikasi file di arsip Anda. Misalnya, jika Anda menggunakan Get-ChildItem dengan parameter Recurse, setiap FileInfo dan objek DirectoryInfo yang dikirimkan alur ditambahkan ke arsip.
Cmdlet Compress-Archive menggunakan pengodean UTF-8. Alat arsip ZIP lainnya dapat menggunakan skema pengodean yang berbeda. Saat mengekstrak file dengan nama file yang tidak disimpan menggunakan pengodean UTF-8, Expand-Archive menggunakan nilai mentah yang ditemukan dalam arsip. Ini dapat mengakibatkan nama file yang berbeda dari nama file sumber yang disimpan dalam arsip.