0

バックアップするスクリプトを作成し、コピーされなかったファイルに沿ってエラーを発生させるのに本当に助けが必要です

これが私が試したものです:

に渡すファイルパスのリストを作成しますcopy-item。後でファイルごとにエラーをキャッチし、後でログに記録することを期待しています。

を使用$list2Xすると、各ファイルを循環できますがcopy-item、ディレクトリ構造が失われ、すべてが 1 つのフォルダーに移動します。したがって、今のところ使用して$list2おり、後でcopy-item -recurseフォルダーをコピーします。

#create list to copy
$list = Get-ChildItem -path $source | Select-Object Fullname
$list2 = $list -replace ("}"),("")
$list2 = $list2 -replace ("@{Fullname=") , ("")

out-file -FilePath g:\backuplog\DirList.txt -InputObject $list2

#create list crosscheck later
$listX = Get-ChildItem -path $source -recurse | Select-Object Fullname
$list2X = $listX -replace ("}"),("")
$list2X = $list2X -replace ("@{Fullname=") , ("")

out-file -FilePath g:\backuplog\FileDirList.txt -InputObject $list2X           

そして、ここでリストを渡します:

$error.clear()
Foreach($item in $list2){
 Copy-Item -Path $item -Destination $destination -recurse -force -erroraction Continue 
  }
 out-file -FilePath g:\backuplog\errorsBackup.txt -InputObject $error

これについての助けは大歓迎です!!!

4

3 に答える 3

1

複雑なファイル コピーまたはバックアップ スクリプトに対する答えは、ほとんどの場合、「robocopy を使用する」です。

明細書

于 2013-03-20T20:08:56.267 に答える
0

" C:\Scripts (サブフォルダーを含む) 内のすべてのアイテムを C:\Test にコピーしますか? 次に、単純にワイルドカード文字を使用します... "

次に、自分自身をより簡単にして、次のようにします。

$files = (Get-ChildItem $path).FullName #Requires PS 3.0
#or
$files = Get-ChildItem $path | % {$_.Fullname}
$files | Out-File $outpath
于 2013-03-21T06:01:51.993 に答える
0

私の応答時間を考えると、それには長い時間がかかりました。これは、ほとんどのエラー (ネットワーク ドロップ、失敗したコピーなど) をログに記録する私のコピー関数です。

Function backUP{ Param ([string]$destination1 ,$list1)
$destination2 = $destination1
                          #extract new made string for backuplog
                        $index = $destination2.LastIndexOf("\") 
                        $count = $destination2.length - $index
                        $source1 = $destination2.Substring($index, $count)
                        $finalstr2 = $logdrive + $source1

Foreach($item in $list1){

 Copy-Item -Container: $true -Recurse -Force -Path $item -Destination     $destination1     -erroraction Continue 
 if(-not $?)
 {
  write-output "ERROR de copiado : " $error| format-list | out-file  -Append             "$finalstr2\GCI-ERRORS-backup.txt"
      Foreach($erritem in $error){
      write-output "Error Data:" $erritem.TargetObject  | out-file -Append   "$finalstr2\GCI-    ERRORS-backup.txt"
          }
  $error.Clear()
     }
   }
 }
于 2013-04-10T14:29:53.830 に答える