Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


Сообщения: 208
Благодарности: 5

Профиль | Отправить PM | Цитировать


Kazun,
Большое спасибо за все ответы в теме!
Интересный модуль, изучим-с) Странно, что во время поиска не наткнулся на него.
В попытках завести один из предложенных Вами вариантов выше, заработал тот, что использует subinacl, ниже рабочий вариант с unc.

Код: Выделить весь код
cls
$subinacl = "C:\temp\subinacl.exe" #путь до улититы subinacl.exe
$log = "c:\temp\log.txt" #путь до лог файла
$log_subinacl = "c:\temp\log_subinacl.txt" #путь до внутреннего лог файла subinacl
$path = "\\uncpath...\*" #корневая папка для поиска

& $subinacl /outputlog=$log_subinacl /subdirectories=directories $path #запуск subinacl в фоне, с записью инфы в лог 
$content = (Get-Content $log_subinacl) -match "(\+File|\/control)" #выбираем из файла строки по условию

$result = for($i=0; $i -le $content.Count; $i+=2) {
    $status = $content[$i+1] -match "SE_DACL_PROTECTED" #если в строке, есть подстрока, записываем в переменную
    if($status) {
        $content[$i].TrimStart("+File ") #удаляем указанную подстроку из строки
    }
}

Remove-Item $log_subinacl #удаляем лог subinacl
$result | Out-File $log #записываем результат в переменную
На win10 работал подобный вариант написанный Вами ранее, но на win serv 2012r2 регулярное выражение должно выглядеть так - (\+File|\/control).
P.S. Но приведённый Вами модуль, мне нравится большей, этих костыльных решений )

Последний раз редактировалось pogo, 30-12-2015 в 14:42.


Отправлено: 14:31, 30-12-2015 | #13