使用远程文件服务器上的Copy-Item的UnauthorizedAccessException

时间:2013-01-06 15:05:16

标签: powershell powershell-v3.0

我正在尝试将每个包含〜3KB .txt文件的大约10个文件夹复制到远程文件共享上,并且延迟时间为几秒。我正在使用像这样的Powershells Copy-Item

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(String   路径)   System.Management.Automation.SessionStateInternal.IsItemContainer(CmdletProvider   providerInstance,String path,CmdletProviderContext context

请注意:删除远程文件服务器上的旧文件后,我收到了这些错误。

3 个答案:

答案 0 :(得分:0)

这是一个有多年历史的职位,但也许可以从中受益。您不必事先删除。您可以只使用-Force覆盖现有文件。

try
{
    Copy-Item -Path $source -Destination $destination -Recurse -ErrorAction Stop -Force
}
catch
{
    Write-Error $_.Exception.ToString()
}

答案 1 :(得分:-1)

您可能需要尝试以管理员身份运行命令行。

答案 2 :(得分:-3)

Masi,Powershell复制项功能并不是那么出色的IMO。为什么不在这里使用robocopy / Powershell混合?

示例:

$source = "C:\temp"

$destination ="\\\RemoteServer\Temp"

robocopy $source $destination /s /mt:8