2016-03-31 12 views
0

$destination için bir dizi ayarlıyorum, ancak bu seçili her dizin için ayrı bir .zip oluşturur, bunu işe alabilirsiniz.System.IO.Compression.ZipFile Çoklu Dizinler

Her dizini nasıl seçebilirim ve birden çok hedef dosya yerine tek bir hedef altında bunları nasıl kaydedebilirim? İşte benim kodudur:

Ben onları seçin ve bir dizi olarak bunları saklayabilir tek bir dizin veya birden eğer benim Out-GridView seçenek böyledir korumak istiyorum
$type = "*.txt" 
$destination = "LogsBackup.zip" 

Add-Type -Assembly "System.IO.Compression.FileSystem" ; 

$_sources = dir c:\Logs\$type -Recurse | Select Directory -Unique | 
      Out-GridView -OutputMode Multiple | 
      Select @{Name="Path";Expression={$_.Directory -As [string]}} 

for ($i = 0; $i -lt $_sources.Length; $i++) 
{ 
    $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal 
    [System.IO.Compression.ZipFile]::CreateFromDirectory($_sources[$i].Path , $destination) 
} 

.

+0

Eğer Powershell v5 kullanıyorsanız bu oldukça kolay bir şekilde yapılabilir. – Kiran

+0

Evet onun powershell v5 –

cevap

0

-update parametresi, mevcut arşivinizin out-gridview arasından seçmiş olduğunuz yeni girişlerle güncellendiğinden emin olacaktır.

$destination = "C:\logs\LogsBackup.zip" 

#Create a single archive 
Get-ChildItem -Path C:\logs -Filter *.txt -Recurse | 
    Select @{Name="Path";Expression={$_.DirectoryName}} -Unique | 
     Out-GridView -PassThru | Compress-Archive -CompressionLevel Optimal -DestinationPath $destination -Update 
+0

Bu tam olarak benim istediğim şey değil, eğer mevcut değilse, Arşiv'i oluşturmak istiyorum. Eminim bir parametre bayrağıdır ama bunu yapmak için% 100 emin değilim. –

+0

Tamam Sanırım çalışıyorum ama gridview'deki dizin yolundan daha fazlasını nasıl göstereceğim. Ayrıca dizin içeriğini de göstermek istiyorum. –

+0

Şimdi çalışıyor. Bu komut dosyasını şirketimizden kullanacağım tüm kullanıcıların sürüm 5'e sahip olmayacağını fark ettim. 4. sürüm için bir eşdeğer var mı? –