Jawaban:
DotNetZip akan memungkinkan Anda melakukan ini dari PowerShell. Ini bukan satu-liner, tetapi perpustakaan akan memungkinkan Anda untuk menulis skrip PowerShell yang Anda butuhkan.
Anda juga dapat menggunakan antarmuka COM, lihat Mengkompres File dengan Windows PowerShell kemudian mengemas Windows Vista Sidebar Gadget .
Googling "zip powershell" atau "unzip powershell" juga dapat menampilkan hasil yang bermanfaat.
Ini adalah bagaimana Anda dapat melakukannya sepenuhnya dari Powershell tanpa alat eksternal. Ini membuka ritsleting file bernama test.zip ke direktori kerja saat ini:
$shell_app=new-object -com shell.application
$filename = "test.zip"
$zip_file = $shell_app.namespace((Get-Location).Path + "\$filename")
$destination = $shell_app.namespace((Get-Location).Path)
$destination.Copyhere($zip_file.items())
$destination.Copyhere($zip_file.items())
melakukan unzip yang sebenarnya.
function unzip($filename) { if (!(test-path $filename)) { throw "$filename does not exist" } $shell = new-object -com shell.application $shell.namespace($pwd.path).copyhere($shell.namespace((join-path $pwd $filename)).items()) }
Sekarang di .NET Framework 4.5, ada kelas ZipFile yang bisa Anda gunakan seperti ini:
[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder)
Anda mungkin ingin memeriksa The PowerShell Community Extensions (PSCX) yang memiliki cmdlet khusus untuk ini.
Saya tahu ini adalah pertanyaan yang sangat lama, tetapi saya baru saja melihatnya tertaut di Twitter dengan alasan saya akan memposting jawaban saat ini.
PowerShell 5, saat ini tersedia di Windows 10 atau melalui Pratinjau Produksi Windows Management Framework 5 , dilengkapi dengan dua cmdlet bawaan untuk 'zipping' dan 'unzipping':
Saya menemukan solusi paling sederhana untuk hanya menggunakan binari infozip yang telah saya gunakan selama bertahun-tahun dan digunakan dalam lingkungan UNIX.
PS> zip -9r ../test.zip *
PS> cd ..
PS> unzip -t test.zip Archive: test.zip
testing: LinqRepository/ OK
testing: LinqRepository/ApplicationService.cs OK
testing: LinqRepository/bin/ OK
...
No errors detected in compressed data of test.zip.
Akan sangat sulit untuk menempatkan pembungkus PowerShell di sekitar output teks tetapi dalam prakteknya saya tidak pernah membutuhkannya sehingga saya tidak merasa terganggu.
Saya juga suka Info-ZIP (mesin Zip yang ditemukan di sebagian besar utilitas Zip lainnya) dan 7-Zip , favorit lain yang memiliki kedua utilitas GUI dan baris perintah Zip. Intinya adalah, ada beberapa utilitas baris perintah yang baik yang akan bekerja untuk sebagian besar tugas PowerShell.
Ada beberapa trik untuk menjalankan utilitas baris perintah yang tidak dibangun dengan mempertimbangkan PowerShell:
Menjalankan executable yang dimulai dengan nomor dalam nama, kata pengantar dengan Ampersand (&).
& 7zip.exe
Bungkus setiap token, utilitas mengharapkan untuk melihat dari baris perintah, dalam tanda kutip.
& "c: \ path with space \ SomeCommand.exe" "/ parameter2" "/ parameter2" "Nilai parameter2" "Value2` "dengan penawaran"
Coba ini:
zip filename.zip (Get-ChildItem somepath\*)
Atau bahkan:
zip filename.zip (Get-Content ListOfFiles.txt)
James Holwell Saya suka jawaban Anda tetapi saya sedikit memperluasnya
# Example
#unzip "myZip.zip" "C:\Users\me\Desktop" "c:\mylocation"
function unzip($fileName, $sourcePath, $destinationPath)
{
$shell = new-object -com shell.application
if (!(Test-Path "$sourcePath\$fileName"))
{
throw "$sourcePath\$fileName does not exist"
}
New-Item -ItemType Directory -Force -Path $destinationPath -WarningAction SilentlyContinue
$shell.namespace($destinationPath).copyhere($shell.namespace("$sourcePath\$fileName").items())
}
Batuan pendekatan ionik:
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
mendukung kata sandi, metode crypto lainnya, dll.
Saya telah membuat modul yang kompatibel dengan PowerShell 2.0 yang menggunakan perintah OS Windows asli untuk zip dan unzip file secara sinkron. Ini berfungsi pada OS lama, seperti Windows XP, dan tidak memerlukan. Net 4.5 atau alat eksternal lainnya. Fungsi-fungsi ini juga akan memblokir eksekusi skrip sampai semua file di-zip / di-zip. Anda dapat menemukan informasi lebih lanjut dan modul di blog saya di sini .