2010-09-09 6 views
0

У меня возникли проблемы с Powershell скрипт я в основном пытаются сбросить разрешение на папку, удалив из следующих группPowershell Папка Наследование проблема

  • NT Authority \ аутентифицированные пользователи
  • BUILTIN \ Users

Если я вручную изменю папку, чтобы не наследовать от нее родительский скрипт, я просматриваю google, чтобы найти лучший способ удаления наследования с помощью скрипта, который компилирует скрипт, но ничего не делает.

Это команда, я использую

$WebsiteACL =Get-Acl -Path "C:\websites" 
$WebsiteACL.SetAccessRuleProtection($true,$false) 

Кто-нибудь есть предложение приемлемо?

ответ

1

Лично я считаю, что Get-Acl и Set-Acl все еще слишком много используют PITA (и я C# dev). Вы можете использовать icacls.exe для облегчения вашей задачи:

icacls C:\temp\foo /inheritance:d 

Он также поддерживает удаление групп. Проверьте его использование: icacls /?.

+0

спасибо keith, get-acl/set-scl is pita, даст, что я попробую – Iain

1

Get-Acl/Set-Acl может быть королевской болью, если вы не являетесь владельцем объекта, с которым вы пытаетесь изменить права доступа, даже если вы являетесь администратором. Если вы хотите изменить ACL на объекте, которому вы не являетесь, вы должны включить для вашей личности/учетной записи SeBackupPrivilege. Единственный простой способ изменить системные привилегии - установить Расширения сообщества PowerShell и использовать Get/Set-Privilege. Я действительно не понимаю, почему это ограничение существует, но это так.

С учетом этого, используя icacls, очень хорошо работает в большинстве случаев. Существует ошибка, если вы устанавливаете разрешения для каталога, доступ к которому осуществляется через общий ресурс с включенным переходом на основе доступа. Все это делают правильно? ;)

Прикосновение к каталогу под управляемым общим доступом ABE с icacls приводит к исчезновению каталога, даже если у вас все еще есть разрешения для этого каталога. Если вы используете редактор ACL проводника Windows для чтения и (повторного) применения разрешений, установленных с помощью icacls, каталог снова отображается.

После того, как большая царапина в голове была определена, что icacls что-то делал с синхронизировать бит. Без synchronize ABE заставляет каталог быть невидимым. Простейшим обходным решением было бы не использовать ABE, но в нашей среде отключение ABE не является вариантом.

Другим решением является использование SetACL.exe, которое вы можете скачать из SourceForge. У него очень сложный синтаксис imho, но он действительно мощный. Он также доступен как OCX, поэтому вы можете его запускать через PowerShell.

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