PDA

Показать полную графическую версию : [решено] Отказано в доступе при переборе файлов в каталоге Windows


kelevara
07-05-2013, 00:53
Добрый день!
Мне необходимо определить размер всех файлов gif и jpg, которые находятся в папке windows и в ее подкаталогах. Для этого использую следующий командлет:

$ln = 0; ForEach ($f in Dir c:\windows\* -include *.gif, *.jpg -recurse -force) {$ln +=$f.length}; $ln > kur7.txt

Но при его работе возникают многочисленные сообщения об ошибках следующего содержания:

Get-ChildItem : Отказано в доступе по пути "C:\windows\System32\wfp".
строка:1 знак:28
+ $ln = 0; ForEach ($f in Dir <<<< c:\windows\* -include *.gif, *.jpg -recurse) {$ln +=
$f.length}; $ln > kur7.txt
+ CategoryInfo : PermissionDenied: (C:\windows\System32\wfp:String) [Get-C
hildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.
GetChildItemCommand

Судя по тексту - проблемы с доступом какие-то. С чем это может быть связано?
К слову, считает то вроде верно =)

Foreigner
07-05-2013, 07:01
Если правильно считает, добавь в ErrorAction - параметр значение SilentlyContinue

gci C:\Windows -inc *.bmp, *.gif -r -forc -ea 0 | % { $s += $_.length }; $s; $s = $null

Georgio
07-05-2013, 10:00
К слову, считает то вроде верно »

Считает правильно, если в папках с ограниченным доступом ("wfp" и др.) нет GIF и JPG. В папке "wfp" (Windows File Protection) их точно нет. Рарешения можно, конечно, изменить через вкладку "Безопасность" в "Свойствах", а для большинства папок и файлов и через команды CACLS, ICACLS командной строки, но смысла в этом я не вижу, т. к.: 1) изменять атрибуты безопасности желательно только в экстренных случаях, 2) в этих папках могут быть подпапки и файлы с такими же атрибутами, которые также придётся менять.




© OSzone.net 2001-2012