2012-02-20 12 views
0

このPSCXコマンドレット「Write-Zip」が遅い理由を誰にも手伝ってもらえますか? DotNetZipライブラリーが同じフォルダーを約20分でZIPすることができるのは1.5時間です。 (DotNetZipライブラリの問題は、大きなファイルで窒息するので、PSCXに移行しました。これは完璧でクールなプログレスバーであり、実際には非常にゆっくりと動きます)。Powershell PSCX Write-Zipが遅い

ここにいくつかのサンプルコードがあります。他のものを見る必要がある場合はお知らせください。

$ElapsedTime = [System.Diagnostics.Stopwatch]::StartNew() 

    Write-Host "Script Started at $(get-date)" 

    Import-Module Pscx 
    Import-Module BitsTransfer 

    Write-Host "Just imported the BitsTransfer and Pscx modules" 

    Write-Host "*** Starting backup portion of script ***" 

    foreach($i in $appServers) { 

      if (!(Test-Path -path \\$i\c$\newDeploy)) { 
       New-Item \\$i\c$\newDeploy -type directory 
       Write-Host "Just created newDeploy folder on $i" 
      } 
      if (!(Test-Path -path \\$i\c$\newDeploy\backup)) { 
       New-Item \\$i\c$\newDeploy\backup -type directory 
       Write-Host "Just created newDeploy\backup folder on $i" 
      } 
      if(!(Test-Path \\$i\c$\newDeploy\zipper.ps1)) { 
       Start-BitsTransfer -Source \\$appDeployServer\c$\newDeploy\zipper.ps1 -Destination \\$i\c$\newDeploy 
       Write-host "Just added zipper.ps1 to $i" 
      } 

    } 

    foreach($i in $appServers) { 

     $sessionForI = New-PSSession -computername $i 
     Invoke-Command -Session $sessionForI -ArgumentList $aosFolder, $i, $ElapsedTime -ScriptBlock { 
      param ($aosFolder, $i, $ElapsedTime) 

      Import-Module Pscx 
      Write-Host "Just imported Pscx module for $i" 

      if ((Test-Path C:\\newDeploy\\backup\\$aosFolder.zip)) { 
       Remove-Item C:\\newDeploy\\backup\\$aosFolder.zip 
       Write-Host "Just removed newDeploy\backup\$aosFolder.zip on $i" 
      } 

      Write-Host "Just started creating new ZIP file backup created on $i" 
      Write-Host " Elapsed Time: $($ElapsedTime.Elapsed.ToString())" 

      cd "C:\Program Files (x86)\Folder\$aosFolder" 
      Get-ChildItem "C:\Program Files (x86)\Folder\$aosFolder" -Recurse -Exclude *.e2e | Write-Zip -OutputPath "C:\newDeploy\backup\$aosFolder.zip" -NoClobber -Level 1 

      write-host " Elapsed Time: $($ElapsedTime.Elapsed.ToString())" 
      Write-Host "Just finished creating new ZIP file backup created on $i" 
     } 
     remove-PSSession -session $sessionForI 

    } 

    Write-Host "Just ran second foreach loop to ZIP all folders to backup on each server" 

    foreach($i in $appServers) { 
     if(!(Test-Path -path C:\newDeploy\backup\$i)) { 
      New-Item C:\newDeploy\backup\$i -type directory 
      Write-Host "Just created DEPLOY SERVER's newDeploy\backup\$i folder for backups" 
     } 
     Start-BitsTransfer -Source \\$i\c$\newDeploy\backup\$aosFolder.zip -Destination C:\newDeploy\backup\$i 
     Write-Host "$i backup ZIP transferred to deploy server" 
    } 

    Write-Host "Just ran third foreach loop to move all ZIP files to the backup server for each remote server" 

    foreach($i in $appServers) { 
     Remove-Item \\$i\c$\newDeploy\backup\$aosFolder.zip 
     Write-Host "Just removed newDeploy\backup\$aosFolder.zip on $i" 
    } 

    Write-Host "Just ran forth foreach loop to delete all backup ZIP files to cleanup" 

    $date = get-date -format "M-d-yyyy" 
    Write-Zip -Path "C:\newDeploy\backup" -OutputPath "C:\newDeploy\backup\$date APPbackup.zip" -NoClobber -Level 1 
    Write-Host "Just ran final ZIP command to put all server's backups into one neat ZIP" 

    foreach($i in $appServers) { 
     if((Test-Path -path C:\newDeploy\backup\$i)) { 
      Remove-Item -Force -Recurse C:\newDeploy\backup\$i 
      Write-Host "Just removed DEPLOY SERVER's newDeploy\backup\$i folder" 
     } 
    } 
    Write-Host "Just ran fifth foreach loop to delete each server's backup folder on the local server to cleanup" 

    Write-Host "*** Finished with backup portion of script ***" 

    Write-Host "*** Starting deploy preparation portion of script ***" 



    Write-Host "*** Finished with deploy preparation portion of script ***" 

    Write-Host "Script Ended at $(get-date)" 
+0

はそれについての完全なソースコードの任意の最終的な解決策? – Kiquenet

+0

唯一の答えとして提案されているように私は7zipを使用してしまいました。私はすぐにコードを掲載します。 – user1161625

+0

cd "D:\ inetpub \ wwwroot" \t \t \t Get-ChildItem "D:\ inetpub \ wwwroot" -Recurse -Exclude * .e2e | D:\ newDeploy \ 7za.exe a -mx1 "D:\ newDeploy \ backup \ sites.zip" $ _。FullName – user1161625

答えて

0

ここで私がやった方法です:

set-alias sz "$env:C:\7za920\7za.exe" 
sz a -mx9 -tzip -r $FileName $SourceFolder 
関連する問題