2014-11-21 2 views
3

Кто-нибудь знает, как создать отчет для ACL для атрибутов пользователя AD. , например, кто имеет права на пользователей Active Directory «читать инициалы» или «писать инициалы». Я нашел команды PowerShell для получения ACL для самого пользовательского объекта AD, но не на уровне атрибута.Как получить эффективные разрешения с помощью PowerShell для атрибута объекта пользователя AD

ответ

2

Проверьте PowerShell Access Control module. Версия 3.0 реализована почти полностью в PowerShell, что делает ее довольно медленной по сравнению с использованием Get-Acl, но я думаю, что она может делать то, о чем вы просите (и я работаю над проблемой скорости).

У этого есть функция с именем Get-EffectiveAccess, которая может вычислять эффективный доступ принципала над защищаемым объектом, но я не думаю, что это то, что вы ищете. Похоже, вы хотите получить список ACE, которые предоставляют доступ для чтения/записи свойства «initials». Чтобы сделать это, вы будете использовать Get-AccessControlEntry:

# Get any ACEs that grant or deny read or write access to the 'initials' property: 
Get-ADUser TestUser | Get-AccessControlEntry -ObjectAceType initials 

# Get any ACEs that grant or deny write access to the 'initials' property: 
Get-ADUser TestUser | Get-AccessControlEntry -ObjectAceType initials -ActiveDirectoryRights WriteProperty 

# Get any ACEs that grant write access to the 'initials' property: 
Get-ADUser TestUser | Get-AccessControlEntry -ObjectAceType initials -ActiveDirectoryRights WriteProperty -AceType AccessAllowed 

Эти примеры все использовали Get-ADUser для поиска одного пользователя. Вы должны иметь возможность подавать функцию любому объекту AD, независимо от того, используете ли вы модуль AD или DirectorySearcher. Вы даже можете указать различающееся имя как параметр -Path для функции.

Параметр -ObjectAceType должен иметь возможность использовать GUID, или вы можете поместить в один или несколько свойств/свойств/утвержденных имен записи/расширенного права/класса (вы можете использовать * в качестве подстановочного знака).

Если вы действительно хотели, чтобы вычислить фактический эффективный доступ, вот некоторые примеры функции Get-EffectiveAccess:

# Get effective access that 'AnotherUser' has over 'TestUser' object (this doesn't include property, property set, validated write, etc effective permissions): 
Get-ADUser TestUser | Get-EffectiveAccess -Principal AnotherUser 

# Same as before, but this time include effective access down to the ObjectAceType level: 
Get-ADUser TestUser | Get-EffectiveAccess -Principal AnotherUser -ObjectAceTypes initials 
Get-ADUser TestUser | Get-EffectiveAccess -Principal AnotherUser -ObjectAceTypes init* 

Во время работы на нескольких последних примеров, я заметил, что есть некоторые ошибки, которые написанных при использовании Get-EffectiveAccess с параметром -ObjectAceTypes, даже если функция работает правильно. Если у меня будет время в выходные, я могу это исправить, но я, вероятно, просто подожду версию 4.0.

+0

Thanks Rohn, Get-AccessControlEntry отлично работает. Я получил некоторые ошибки, когда я запустил Get-EffectiveAccess, но я получил отчет, который мне нужен, из Get-AccessControlEntry. Еще раз спасибо! Majid –

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