2016-10-10 2 views
0

Моя цель - прочитать права доступа пользователей к папкам диска и сохранить их в файле.Сохранить ACL, если родительская папка не имеет таких же разрешений, что и текущий

Сценарий должен проверять разрешение родительской папки и сравнивать ее с текущей папкой. Если разрешения равны текущей папке, они не должны быть сохранены.

Моя попытка была следующая:

ls -r | Where-Object { $_.mode -notmatch "a" } | %{ 
    $path = Get-Location 
    if(((Get-Location | Get-Acl).AccessToString) -ne (((Get-Item $path).parent.FullName) | Get-Acl).AccessToString){ 
     Get-Location | Get-Acl | Export-Csv -Delimiter ";" c:\ACL1.csv 
    } 
} 

К сожалению, я не знаю, процесс исполнения ls (Get-Childitem) командования и как я могу обратиться низкоспиновое «расстрельный список» ... Попробовать с $ путь не удалось с дефектом записки

+0

Пожалуйста, взгляните на приведенный ниже ответ, если это помогло или ответили на ваш вопрос вверх или принять его. Если ответ не ответил на ваш вопрос, напишите комментарий о том, почему. – Richard

ответ

0

Попробуйте следующее:

Get-ChildItem -Recurse ` 
    | Where-Object{ $_.PSIsContainer -eq $true } ` 
    | ForEach-Object { 
     $currentACL = Get-Acl $_.FullName 
     $parentACL = Get-Acl ($_.FullName | Split-Path -Parent) 
     if($currentACL.AccessToString -ne $parentACL.AccessToString){ 
      $currentACL | Export-Csv -Delimiter ";" c:\ACL1.csv -Append 
     } 
    } 

Это будет дисквалифицировать через чековый каталог разрешений на с Текущая папка с родительской папкой (один уровень вверх). Если разрешения не совпадают, то текущая папка ACL добавляется к CSV файлам c:\ACL1.csv.

Смежные вопросы