2010-01-04 2 views
1

У меня иногда возникает вопрос о создании списка пользователей, имеющих права полного доступа к определенному почтовому ящику Exchange 2007. На данный момент я делаю это вручную, и мне идеально хотелось бы сделать это с Powershell.Аудит доступа к полному доступу почтового ящика Exchange 2007 с полномочиями Powershell

В любом случае, для создания списка разрешений полного доступа (и прав отправки по имени также будет полезно).

Спасибо, Jonny

ответ

1

отправить как права сохраняются в активном каталоге, так что это немного сложно, чтобы получить на них. Вы можете использовать Add-Member, если хотите объединить свойства, о которых вы заботитесь, из двух результатов.

Полный доступ:

get-mailbox | %{$foo = $_; Get-MailboxPermission $foo | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}} | ft {$foo},User,AccessRights 

Send-As:

get-mailbox | %{$mailbox = $_; Get-ADPermission $mailbox.DistinguishedName | ?{$_.ExtendedRights -like "Send-As" -and $_.User -notlike "NT AUTHORITY\SELF"}} | ft {$mailbox},user,{"Send-As"} 
+0

Hi Slipsec! «Полный доступ» работал как шарм! Благодаря! Я также ответил ниже с альтернативой Send-As, который я разработал, когда пробовал это вчера. – Jonny

2

В дополнение к Slipsecs ответ есть альтернатива Send-As разрешений аудита.

$(Get-Mailbox -Identity mailboxName).GrantSendOnBehalfTo | ft Name 

Это возвращает только добавленных пользователями вручную и автоматических генерируемых.

Еще раз спасибо Slipsec с вашей помощью!

+1

Я не думаю, что это «альтернатива», а что-то еще (хотя многие админы, как правило, настроены как потому, что не понимают разницы). AFAIK, «GrantSentOnBehalfTo» соответствует «Послать от имени» право (a.k.a. «Делегат»), а не разрешение «Отправить как»? Основная поведенческая разница между ними заключается в том, что с помощью «Отправить от имени» получатель по-прежнему будет видеть адрес фактического отправителя в дополнение к адресу, который вы отправляете от имени. С «Отправить как» нет следов какой-либо третьей стороны, участвовавшей в отправке сообщения. –

0

get-mailbox | %{$foo = $_; Get-MailboxPermission $foo | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}} | ft {$foo},User,AccessRights

в команде выше, я могу заменить Foo с почтовым ящиком или имя пользователя? Я попробовал команду, и она говорит, что не может связываться, поскольку объект имеет значение null - будет благодарен за вашу помощь.

+0

Нет, $ foo не нужно менять. $ foo устанавливается для каждого объекта почтового ящика, потому что передается сообщение Get-Mailbox. Таким образом, каждый почтовый ящик хранится в $ _, который затем присваивается $ foo и может быть доступен за пределами внутреннего конвейера. – Jonny

0

Я знаю, что это старый, но на всякий случай кто-то сталкивается с этой нитью, ища помощь, чтобы ответить на последний вопрос OPs, $foo представляет собой переменную, которую вы должны определить перед запуском команды, так как n пример:

$foo = 'Example User' 

get-mailbox | %{$foo = $_; Get-MailboxPermission $foo | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}} | ft {$foo},User,AccessRights 
+1

oops, не полностью прочитал команду, $ foo уже определен с помощью get-mailbox – private

1
get-mailbox -identity MailBoxName | %{$foo = $_; Get-MailboxPermission $foo | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}} | ft {$foo},User,AccessRights 

Если вы ищете разрешения для пользователей на определенный почтовый ящик. Замените MailBoxName на точное имя почтового ящика, на котором вы пытаетесь запустить отчет. Это KeySensitive в отношении имени почтового ящика и псевдонима.

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