如何解决检测PowersShell无法访问的图像文件
我在服务器上遇到一个奇怪的问题,有时图像文件会以某种方式损坏,这导致任何人(包括管理员)都无法访问它一段时间,直到问题似乎解决为止本身。
从管理员的角度来看,其作用是在尝试打开X时告知他们“拒绝访问X”。此外,无权编辑文件的权限。都很奇怪。
如果可能,我希望使用PowerShell实现的脚本可以迭代目录中的数千张图像,并以某种方式检测图像是否处于该不可访问状态。由于要遍历的文件量很大,因此需要非常有效。
只需在此处查找常规方向指示器即可。鉴于我们正在处理的文件甚至是管理员都无法访问的,请问这是获取内容的工作,还是您的经验有更好的方法?
谢谢
解决方法
如果您没有读取错误并将其存储在单独变量中的权限,则可以使用Get-Content
生成“拒绝权限”错误。
Get-Content -Path $filePath -Encoding byte -TotalCount 1 -ErrorAction SilentlyContinue -ErrorVariable $errorReadFile | Out-Null
这只会读取文件$filePath
的第一个字符。但是由于Out-Null
而不会显示。如果发生错误,由于-ErrorAction SilentlyContinue
,该错误将不会显示在屏幕上。并将其存储到$errorReadFile
中。
因此,您只能保留Permission Denied类型错误:
$errorReadFile = $errorReadFile | Where-Object { $_.CategoryInfo.Category -eq 'PermissionDenied' }
然后显示如下文件:
$errorReadFile.CategoryInfo.TargetName
或者,您可以从NTFSSecurity模块使用Get-NTFSEffectiveAccess
:https://github.com/raandree/NTFSSecurity
它将告诉您您对任何项目拥有什么权限。但是您可能需要管理员权限才能正确使用它
由于 Kluk 的建议,我想到了下面的内容,它可以通过预定任务很好地工作。
{{1}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。