Как я написал в предыдущей заметке, для решения проблемы с невозможностью выдачи права 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