2014-02-14 28 views
1

我在Powershell v。1.0中寫入進度命令時遇到問題。當我在Powershell ISE中包含幾百個文件的測試目錄上運行此腳本時,進度欄將按照公佈的方式工作,並遞歸顯示其中所有文件的名稱。當我在用戶主目錄的公司域上運行它時,進度條根本不會移動,$ files.name只顯示文件夾內的頂級目錄名稱,例如「桌面」,「AppData」等。爲什麼這可能是這種情況?預先感謝任何幫助!PowerShell寫入進度條無法在大文件上工作

$path = "\\company\shares\campus\HomeDir\username"  
$dest = "R:\Terminated"  
$counter = 0  
$files = gci $path -recurse    
Foreach($file in $files) 
     { 
      Copy-Item $path $dest -recurse -force 
      Write-Progress -Activity "Backing Up Terminated User HomeDir:" -status $file.name -PercentComplete ($counter/$files.count*100) 
      $counter++   
      } 

     If ($Counter = $files.Count) 
      {[System.Windows.Forms.MessageBox]::Show("Backup Complete.")} 
     Else 
      {[System.Windows.Forms.MessageBox]::Show("File Backup Did Not Finish.")} 

回答

1

這可能是因爲你正在複製文件和目錄。 $files變量包含目錄和文件結果。如果要過濾掉目錄,並將這些文件作爲單個項目複製,請過濾出目錄結果。

當你調用Copy-Itemforeach循環中,如果結合-Path到一個目錄,然後單Copy-Item命令將包括文件的整個目錄結構的價值。這就是爲什麼你沒有獲得每個文件的基礎。

$files = gci $path -recurse | ? { -not $_.PSIsContainer; }; 
+1

它的工作就像魅力特雷弗!謝謝! – user3311261

+0

@ user3311261:不客氣!請按照您認爲合適的方式標記答案:) –