1

Documents フォルダーを外付けハード ドライブにコピーするための簡単なバックアップ スクリプトがあります。

Copy-Item C:\Users\Username\Documents G:\Backup -Recurse -Force

ただし、コマンドを実行すると、Windows 8 はフォルダー、、、および に対して UnauthorizedAccessException を発生さ'...\Documents\My Music''...\Documents\My Pictures'ます'...\Documents\My Videos'。ただし、これらのフォルダーは単なるシンボリック リンクであり、これがエラーの原因であると思われます。シンボリックリンクをコピーしないようにするにはどうすればよいですか?

編集:ハードコーディングされた除外リストを使用しても機能しません。完全なスクリプトは次のとおりです。

$backupFolder = (get-date -uformat %Y%m%d)
$lines = Get-Content backup.cfg

$DirLinks = "C:\Users\Me\Documents\My Videos", "C:\Users\Me\Documents\My Music","C:\Users\Me\Documents\My Pictures"
$basePath = $lines[0] + $backupFolder + "\"
for ($i = 1; $i -lt $lines.Length; $i++)
{
    $lines[$i]
    Copy-Item $lines[$i] ($basePath + ($lines[$i].Replace(":", ""))) -Recurse -Force -Exclude $DirLinks
}

"Done!"

それでも次のエラーが発生します。

    Copy-Item : Access to the path 'C:\Users\Me\Documents\My Music' is denied.
At C:\Users\Me\Desktop\backup app\backup.ps1:20 char:5
+     Copy-Item $lines[$i] ($basePath + ($lines[$i].Replace(":", ""))) -Recurse -F ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (My Music:DirectoryInfo) [Copy-Item], UnauthorizedAccessException
    + FullyQualifiedErrorId : CopyDirectoryInfoItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand

Copy-Item : Access to the path 'C:\Users\Me\Documents\My Pictures' is denied.
At C:\Users\Me\Desktop\backup app\backup.ps1:20 char:5
+     Copy-Item $lines[$i] ($basePath + ($lines[$i].Replace(":", ""))) -Recurse -F ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (My Pictures:DirectoryInfo) [Copy-Item], UnauthorizedAccessException
    + FullyQualifiedErrorId : CopyDirectoryInfoItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand

Copy-Item : Access to the path 'C:\Users\Me\Documents\My Videos' is denied.
At C:\Users\Me\Desktop\backup app\backup.ps1:20 char:5
+     Copy-Item $lines[$i] ($basePath + ($lines[$i].Replace(":", ""))) -Recurse -F ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (My Videos:DirectoryInfo) [Copy-Item], UnauthorizedAccessException
    + FullyQualifiedErrorId : CopyDirectoryInfoItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.CopyItemCommand
4

2 に答える 2

2

残念ながら、シンボリック リンクを回避する簡単な方法はありません。

まず、それらを見つける必要があります:

$DirLinks = Get-ChildItem C:\SomeDir -Recurse | ? { $_.Attributes -like "*ReparsePoint*" } | % { $_.FullName } 

次にそれらを除外します。

Copy-Item C:\SomeDir D:\Backup -Recurse -Force -Exclude $DirLinks
于 2012-12-27T20:29:22.820 に答える
0

スクリプトを管理者として実行していますか? また、スクリプトを実行しているユーザーも、ユーザー名領域に収まる同じユーザーであると思いますか?

于 2012-12-27T20:25:49.547 に答える