none
ACL только нескольких уровней вложенности RRS feed

  • Вопрос

  • Добрый день!

    Есть задача выгрузить ACL списки файловой шары в csv. Моих знаний хватило только на такой код

    (

    get-childitem "\\server\users" -Recurse | Where {$_.PsIsContainer} | get-acl | fl) | Out-File c:\log.csv

    Но в данном случае скрипт вылетает в ошибку с длиной имени папок.

    Структура файло помойки примерно такая. Можно ли получить ACL только включая 3 уровня папок, исключая все нижестоящие?

    users

       folder1

          folder11

              folder111

              folder112

          folder22

              folder221

                  folder2221

                  folder2222

              folder222

       folder2

    ит.д


    • Изменено aficio 9 декабря 2011 г. 15:50 ошибка
    9 декабря 2011 г. 15:49

Ответы

  • function recursive($path, $max, $level = 1)
    {
        $path = (Resolve-Path $path).ProviderPath
        $path
        foreach ($item in @(Get-ChildItem $path | Where {$_.psiscontainer}))
        {
            if ($level -eq $max) { return }
    
            recursive $item.PSPath $max ($level + 1) 
        }
    }
    
    recursive C:\windows -max 3 | get-acl
    

    • Помечено в качестве ответа aficio 12 декабря 2011 г. 6:31
    9 декабря 2011 г. 16:55
    Отвечающий

Все ответы