Yanıtlar:
DotNetZip , bunu PowerShell'den yapmanıza izin verecektir. Tek bir astar değildir, ancak kütüphane ihtiyacınız olan PowerShell betiğini yazmanıza izin verecektir.
COM arabirimini de kullanabilirsiniz, Windows PowerShell ile Dosyaları Sıkıştırma bölümüne bakın ve ardından bir Windows Vista Kenar Çubuğu Gadget'ı paketleyin .
Googling "zip powershell" veya "unzip powershell" de yararlı sonuçlara yol açabilir.
Bu, herhangi bir harici araç kullanmadan tamamen Powershell'den yapabilirsiniz. Bu, geçerli çalışma dizinine test.zip adlı bir dosyayı açar.
$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())
gerçek açmayı yapar.
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()) }
Şimdi .NET Framework 4.5'te , bunun gibi kullanabileceğiniz bir ZipFile sınıfı var:
[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder)
Bunun için özel olarak cmdlet'leri olan PowerShell Topluluk Uzantılarını (PSCX) incelemek isteyebilirsiniz .
Bunun çok eski bir soru olduğunu biliyorum, ancak Twitter'dan güncel bir cevap gönderebileceğimi düşündüğünü gördüm.
Şu anda Windows 10'da veya Windows Management Framework 5 Üretim Önizlemesi üzerinden kullanılabilen PowerShell 5, 'sıkıştırma' ve 'açma' için iki yerleşik cmdlet'le birlikte gelir:
Sadece yıllardır kullandığım infozip ikili dosyalarını kullanıp UNIX ortamında kullanmak için en basit çözümü buluyorum.
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.
Metin çıktısının etrafına bir powershell sargısı koymak zor olabilir ancak pratikte asla buna ihtiyacım olmadı, bu yüzden rahatsız etmedim.
Ayrıca, Bilgi-ZIP'ı (diğer birçok Zip yardımcı programında bulunan Zip motoru) ve 7-Zip'i , hem GUI hem de komut satırı Zip yardımcı programına sahip olan başka bir favoriyi seviyorum . Asıl mesele, çoğu PowerShell görevinde çalışacak bazı iyi komut satırı yardımcı programları var.
PowerShell ile oluşturulmamış komut satırı yardımcı programlarını çalıştırmanın bazı püf noktaları var:
Adında bir numara ile başlayan bir çalıştırılabilir dosyayı çalıştırmak, onu bir Ampersand (&) ile işaretleyin.
& 7zip.exe
Her simgeyi kaydırın, yardımcı program komut satırından tırnak işaretleri içinde görmeyi bekliyor.
& "c: \ boşluk \ path \ SomeCommand.exe" "/ parametre2" "/ parametre2" "" parametre2'nin Değeri "" Değer2 `" bir alıntı ile "
Bunu dene:
zip filename.zip (Get-ChildItem somepath\*)
Ya da:
zip filename.zip (Get-Content ListOfFiles.txt)
James Holwell Cevabınızı beğendim ama biraz genişlettim
# 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())
}
İyonik yaklaşım kayalar:
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
şifreleri, diğer şifreleme yöntemlerini vb. destekler.
Dosyaları senkronize bir şekilde sıkıştırmak ve açmak için yerel Windows işletim sistemi komutlarını kullanan PowerShell 2.0 uyumlu bir modül oluşturdum. Bu, Windows XP gibi daha eski işletim sistemlerinde çalışır ve .Net 4.5 veya başka bir harici araç gerektirmez. İşlevler, dosyaların tümü sıkıştırılmış / açılmış olana kadar komut dosyasının yürütülmesini de engeller. Sen olabilir daha fazla bilgi ve burada Blogumda modülünü bulmak .