November 15, 2024
powershell zip unzip

Powershell ile zip Unzip

Powershell ile zip unzip işlemleri yapmamız gereken durumlar olur özellikle Windows core sunucularda veya Azure cloudshell üzerinde bu işlemleri sıkça kullanıyoruz. Windows PowerShell 5.0 bunu yapmak için iki cmdlet ekledi.

Compress-Archive – cmdlet klasörleri veya tek tek dosyaları yeni arşiv oluşturmak ve arşiv dosyaları eklemek sağlar.

Expand-Archive – Extract-Archive dosyaları açmak için kullanılabilir.

Sisteminizdeki Powershell versiyonunu öğrenmek için aşağıdaki iki yolu kullanabilirsiniz. İkisi de Powershell açıldıktan sonra çalıştırılacak komutlar.

1- $PSVersionTable

2- Get-Host | Select-Object Version

PowerShell 5.0 veya daha sonra sistemlerinde yüklü değilse, Microsoft’un web sitesinden Windows Management Framework son sürümünü indirebilirsiniz burada.

powershell zip unzip
Resim-1 Powershell ile dosya zipleme ve unzip işlemi

 

Powershell ile zip Unzip

Zip Dosyaları Oluşturmak için PowerShell Kullanma

Yeni bir zip arşivi yaratmak ve dosyaları sıkıştırmak için PowerShell’i nasıl kullanacağımıza bakalım.

İşlem oldukça basit tek yapmanız gereken sıkıştırmak istediğiniz klasörü belirtmek için -Path parametresini , oluşturmak istediğiniz arşivin adını belirtmek için – DestinationPath parametresini kullanmak.

Aşağıdaki komut, kök C dizinin altındaki muhasebe klasörünü sıkıştırır ve Arşivler klasöründe Muhasebe-dosyalar.zip adlı bir arşiv oluşturur:

Compress-Archive -Path ‘C:\muhasebe’ -DestionationPath ‘C:\muhasebe\Muhasebe-dosyalar.zip’

Alternatif olarak, muhasebe klasöründeki dosyaları – Path yerine -LiteralPath kullanarak ayrı ayrı sıkıştırabiliriz . Bu komut, -LiteralPath parametresinde açıkça listelenen iki dosyanın bulunduğu bir arşiv oluşturur:

Compress-Archive -LiteralPath C:\Muhasebe\ Dosya1.txt, C:\Muhasebe\Dosya2.txt -DestinationPath C:\muhasebe\Muhasebe-dosyalar.zip -Force

-Force parametresini eklediğimi ilk komutu kullanarak oluşturduğum arşivin üzerine yazmak için kullandım. -Force parametresi olmadan, varolan arşivlerin üzerine yazamazsınız ve PowerShell bunun yerine arşive dosya eklemenizi ister.

Bir arşive dosya eklemek için ise -Update parametresini kullanıyoruz . Aşağıdaki komut, Faturalar klasöründeki tüm dosyaları mevcut Muhasebe-dosyalar.zip arşivime ekler:

Compress-Archive -Path ‘C:\muhasebe’ -Update -HedefPath C:\muhasebe\Muhasebe-dosyalar.zip

İsteğe bağlı olarak, -CompressionLevel parametresini üç değerden biriyle kullanabilirsiniz.

  1. -Optimal
  2. -NoCompression
  3. -Fastest

-CompressionLevel parametresi ayarlanmamışsa, varsayılan ayar Optimal’dir. Mevcut en iyi sıkıştırmayı kullanır, ancak En Hızlı’dan daha uzun sürebilir. Sıkıştırma olmayan bir arşiv oluşturmak için NoCompression değerini kullanabilirsiniz.

 

Dosyaları Açmak için PowerShell Kullanma

Arşivdeki dosyaları çıkartmak, bir arşiv oluşturmaktan daha kolaydır. Tek yapmanız gereken, arşivin adını ve sıkıştırılmamış dosyalar için hedef klasörü belirtmek. Aşağıdaki komut, Muhasebe-dosyalar.zip arşivinin içeriğini Expand-Compress cmdlet’ini kullanarak C altında Muhasebe adlı bir klasöre çıkartır.

Expand-Archive -LiteralPath C:\muhasebe\Muhasebe-dosyalar.zip -DestinationPath C:\Muhasebe

Dosyaları açmak istediğiniz klasörün bulunması gerekmez; Expand-Archive gerekirse klasörü otomatik olarak oluşturur. Ancak, açmak istediğiniz dosyalar hedef klasörde zaten varsa, Expand-Archive bir hata döndürür. Komuta -Force parametresini ekleyerek hedef klasördeki dosyaların üzerine yazabilirsiniz.

 

Compress edilecek dosyaların boyutu 2 GB’dan fazla ise

Compress edilecek dpsyanın boyutu 2 GB aşıyorsa ne yazık ki Powershell 2 GB üstündeki dosyaları zipleyemiyor yani compress edemiyor. Komik evet ama ne yazık ki böyle. Umarım en kısa zamanda çözülür.

2 GB üzerindeki dosyaları powershell kullanarak ziplemeniz gerekiyorsa .Net objelerini kullanarak bu sorunu aşabiliyoruz. Aşağıda örnek bir komut bulunuyor.

Komutu ISE üzerinde çalıştırıyoruz.

Bir yanıt yazın