我正在尝试将大约 10 个文件夹复制到一个远程文件共享上,每个文件夹都包含一个 ~3KB .txt 文件,并有几秒钟的延迟。我正在使用Copy-Item
这样的 Powershell:
try
{
Copy-Item -Path $source -Destination $destination -Recurse -ErrorAction Stop
}
catch
{
Write-Error $_.Exception.ToString()
}
运行脚本的用户对文件服务器共享和本地源具有读取、写入和执行权限。
首次运行时,目标文件夹为空。一切正常。在第二次运行时,文件和文件夹已经存在。因此,在运行上面的代码之前,我首先使用以下方式运行检查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:访问被拒绝在 Microsoft.PowerShell.Commands.FileSystemProvider.NativeDirectoryExists(字符串路径)中的 System.Management.Automation.SessionStateInternal.IsItemContainer(CmdletProvider providerInstance,字符串路径,CmdletProviderContext语境
请注意:在远程文件服务器上的旧文件删除成功完成后,我收到了这些错误。