約 10 個のフォルダーをそれぞれ 3 KB の .txt ファイルを含むリモート ファイル共有に数秒の遅延でコピーしようとしています。私はCopy-Item
次のようにPowershellを使用しています:
try
{
Copy-Item -Path $source -Destination $destination -Recurse -ErrorAction Stop
}
catch
{
Write-Error $_.Exception.ToString()
}
スクリプトを実行しているユーザーは、ファイル サーバー共有とローカル ソースに対する読み取り、書き込み、および実行のアクセス許可を持っています。
最初の実行では、宛先フォルダーは空です。すべて正常に動作します。2 回目の実行時には、ファイルとフォルダーは既に存在します。したがって、上記のコードを実行する前に、最初にチェックを実行しTest-Path
、フォルダーが存在する場合は、次のRemove-Item
ように削除します。
try
{
if(Test-Path -Path $path -ErrorAction Stop)
{
Remove-Item -Recurse -Path $path -ErrorAction Stop
}
}
catch
{
Write-Error $_.Exception.ToString()
}
他の誰もそれらのファイルを編集しません。ただし、スクリプトを数回実行すると、時々、理解できない理由で、コピー中に一部のフォルダーでUnauthorizedAccessExceptionエラーが突然発生します。正確なエラーは次のとおりです。
System.UnauthorizedAccessException: アクセスが拒否されました ---> System.ComponentModel.Win32Exception: System.Management.Automation.SessionStateInternal.IsItemContainer(CmdletProvider providerInstance、文字列パス、CmdletProviderContext の Microsoft.PowerShell.Commands.FileSystemProvider.NativeDirectoryExists(文字列パス) でアクセスが拒否されました環境
注:リモートファイルサーバー上の古いファイルの削除が正常に完了した後、これらのエラーが発生します。