我想每个包含〜3KB .txt文件约10个文件夹复制到一些秒的延迟的远程文件共享。我使用Powershells Copy-Item
这样的:UnauthorizedAccessException使用复制,项目上的远程文件服务器
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()
}
没有其他人编辑这些文件。然而,运行脚本dozent时候,曾经在一段时间,是有原因的,我不明白,我突然得到UnauthorizedAccessException错误,对一些在复制过程中的文件夹。确切的错误是:
System.UnauthorizedAccessException的:拒绝访问 ---> System.ComponentModel.Win32Exception:访问被拒绝在Microsoft.PowerShell.Commands.FileSystemProvider.NativeDirectoryExists (字符串 路径) 系统。 Management.Automation.SessionStateInternal.IsItemContainer(CmdletProvider providerInstance,弦乐路径,CmdletProviderContext方面
请注意:我发现了这些错误的旧文件删除遥控器上的AFTER文件服务器已成功完成。
很好,只是因为它不是一个好的设计。您将非面向对象的代码与简单的文本生成命令混合在一起。这种类似的错误处理有许多缺点。使用cmdlet将返回对象,然后我可以稍后使用它。这就像在* test-connection *时使用* ping *。 – masi