我正在尝试将每个包含〜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
请注意:删除远程文件服务器上的旧文件后,我收到了这些错误。
答案 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