Я пытаюсь понять, как это делать, но использую вызовы PowerShell (из C #).Мы переходим на Exchange 2010, и мой старый код не хочет работать, поэтому PowerShell.
IExchangeMailbox exMb = (IExchangeMailbox)userDe.NativeObject;
IADsSecurityDescriptor securityDescriptor = (IADsSecurityDescriptor)exMb.MailboxRights;
IADsAccessControlList acl = (IADsAccessControlList)securityDescriptor.DiscretionaryAcl;
AccessControlEntry ace = new AccessControlEntry();
...
...
Я получил почтовый ящик в порядке, используя:
using (PowerShell powershell = PowerShell.Create())
{
powershell.AddCommand("Get-Mailbox");
powershell.AddParameter("Identity", username);
runspace.Open();
powershell.Runspace = runspace;
return powershell.Invoke()[0];
}
Но еслиЗатем я передаю результат аналогичному методу, чтобы получить ACL, чтобы начать его модификацию, например:
using (PowerShell powershell = PowerShell.Create())
{
powershell.AddCommand("Get-Acl");
powershell.AddArgument(mailbox);
runspace.Open();
powershell.Runspace = runspace;
return powershell.Invoke()[0];
}
... Я получаю
Термин 'Get-Acl 'не распознается как имя командлета
..., появляющегося в журналах.Я также попробовал «Get-ACL», если он чувствителен к регистру, но я думаю, что первая версия верна.
Я также попробовал Get-MailboxPermission, но в документах об этом сказано, что он даже не имеет возвращаемого типа., так что это не дало бы мне предмет для манипулирования впоследствии.
Пожалуйста, помогите