Exchange 2010: общие папки и Send-As продолжение

e2010Как я написал в предыдущей заметке, для решения проблемы с невозможностью выдачи права Send-As необходимо менять владельца объекта общей папки в Active Directory. Эта задача скучная и нудная, особенно, если у нас имеется несколько сотен/тысяч таких объектов. Нам в её решении поможет PowerShell. Для начала, имеет смысл выгрузить существующих владельцев:

Set-Location ad:
Get-ADObject -LDAPFilter "(ObjectClass=publicFolder)" -SearchBase 'CN=Microsoft Exchange System Objects,DC=o365lab,DC=pro' |
select Name, DistinguishedName, @{Name="Owner";expression={(Get-Acl "$_").Owner}} |
Export-Csv -Delimiter ";" -Path c:tmppfOwners.txt -Encoding UTF8

Теперь приступаем к написанию скрипта, который всех этих владельцев будет исправлять. Командлет Get-Acl имеет метод SetOwner(), который может помочь поменять владельца объекта. Правда, для замены нам понадобится использовать командлет Set-Acl, чтобы это изменение применить к объекту. Подробнее процедура расписана здесь. В нашем случае процедура замены будет выглядеть примерно следующим образом:

$NewOwner = New-Object System.Security.Principal.NTAccount("O365LABNEWMAILSERVER$")
$PF = Get-ADObject -LDAPFilter "(ObjectClass=publicFolder)" -SearchBase 'CN=test6,CN=Microsoft Exchange System Objects,DC=o365lab,DC=pro'
$Acl = Get-Acl $PF
$Acl.SetOwner($NewOwner)
Set-Acl -AclObject $Acl -Path $PF.DistinguishedName

Осталось эту процедуру запустить в цикл, в котором она будет применена ко всем общим папкам в контейнере Microsoft Exchange System Objects:

Import-Module ActiveDirectory
Set-Location ad:

$PFs = Get-ADObject -LDAPFilter "(ObjectClass=publicFolder)" -SearchBase 'CN=Microsoft Exchange System Objects,DC=o365lab,DC=pro'
$NewOwner = New-Object System.Security.Principal.NTAccount("O365LABNEWMAILSERVER$")

ForEach ($PF in $PFs) {
$Acl = Get-Acl $PF
$Acl.SetOwner($NewOwner)
Set-Acl -AclObject $Acl -Path $PF.DistinguishedName   }

Полезные ссылки:
How Can I Use Windows PowerShell to Determine the Owner of a File?
Can I Determine a Folder’s Access Rights and Who Has Them?
Cannot add send as permission for public folder on Exchange 2010

Leave a Reply

Your email address will not be published. Required fields are marked *