繁体   English   中英

powershell - robocopy/List 选项不回退文件夹访问拒绝

[英]powershell - robocopy/List option not kicking back folder access denies

编辑:另外,我没有通过 Robocopy 使用日志记录的原因是它似乎也不想使用 /MT: 。 我得到的只是使用 robocopy 日志记录的开始和结束状态。

下面是我当前通过 robocopy 在网络上查找特定文件的脚本。 它工作完美,尤其是多线程。 但是,我正在搜索网络共享,偶尔会遇到一个我无权访问的目录。 Robocopy 似乎有一些能力来回退访问被拒绝的消息,但我无法让它们使用 /L 选项。 /MT:有时也会对输出做一些奇怪的事情。 /V(详细)与 /L 组合时对输出没有影响。

如果没有 /MT: 设置,我可以慢慢列出所有目录和文件。 但是,如果我被拒绝访问特定目录,则输出将仅显示我最初被拒绝的父目录。

如果我启用 /MT: 我仍然能够找到文件和文件夹,但是,日志不会在我被拒绝访问的路径中输出顶级父目录。

由于 DIR 和 Get-childitem 的长路径问题,Robocopy 是我唯一的选择。 到目前为止,由于线程化,它也是所有选项中运行最快的。

权限不可更改,而且我没有备份管理员权限来覆盖 ACL 拒绝。

如果有人知道如何捕获拒绝/失败日志,或者有线索,我会非常高兴。 我知道我已经否认了,因为每个日志的底部会列出失败的次数。 但是如果它列出了失败的次数,那么肯定有一种方法可以将每次单独写入日志?

为了在家中设置人为故障,我使用了一个标准帐户来运行 ISE,并使用我的管理员创建了一个包含一些文件的目录,然后在其中创建了另一个子目录,删除了每个人对子目录和其中文件的所有权限,并且将所有者更改为系统。 所有文件都显示出来了,但是子目录只显示顶级文件夹,无法搜索更深。

$ErrorActionPreference = 'continue'

remove-item C:\Users\$env:username\documents\log.txt

$measure= Measure-Command  -Expression{

$path = "C:\Users\$env:username\New folder" 

robocopy $path  null   /V /L /E /FP /XJD /XJF /R:1 /W:1 /MT:8  | % {

[string] $out=$_;

if(!($out.Contains("%"))){ECHO $out | Out-File "c:\users\$env:username\documents\log.txt" -Append}


} }



write-host $measure

/MT:x 肯定会弄乱实时副本中的输出。

我怀疑错误是通过错误流(stderr),而不是标准输出(stdout)

首先,我会将 /np 添加到您的选项中。 这样你以后就不必处理“%”了。

然后尝试使用重定向 我不经常这样做,但我认为 2>&1 > 会这样做。 它可能看起来像:

robocopy $path $FakeDest /V /L /E /FP /XJD /XJF /R:1 /W:1 /MT:8 2>&1 > "c:\users\$env:username\documents\log.txt"

此外,如果您将其包装在start-process 中,则有一些参数可以重定向标准流和错误流。 再次未测试,但它可能看起来像:

Start-Process -FilePath C:\Windows\System32\Robocopy.exe -ArgumentList "$path $FakeDestination /V /L /E /FP /XJD /XJF /R:1 /W:1 /MT:8" -RedirectStandardError C:\temp\Errors.txt -RedirectStandardOutput c:\temp\Output.txt

显然更改文件名...

如果你真的想发疯,这里有一个NTFS 权限模块。 它有像Get-ChildItem2这样的 cmdlet,它们基于名为 AlphaFS(我认为)的第三部分 API。 它可以访问超出典型 260 个字符限制的路径。 我敢肯定它会更慢,但前两个失败可能是值得的。 我不知道他们对拒绝访问有什么反应......

很抱歉,我目前没有时间测试任何这些方法。 但是,请让我知道这是否有帮助。 我会在附近...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM