Как получить права пользователя в календаре на сервере Exchange, используя c# - PullRequest
2 голосов
/ 07 марта 2020

Я использую календарь обмена в своем веб-приложении. Прежде чем вставлять событие в календарь из моего веб-приложения на сервер обмена, я хотел бы получить разрешения пользователя для этого конкретного календаря на моей стороне c#. Я получил разрешение выполнив следующую команду powershell. Но застрял при получении того же с помощью c#.

Get-MailboxFolderPermission -Identity john@contoso.com:\Calendar -User "test@test.com"

1 Ответ

0 голосов
/ 07 марта 2020

Я не мог найти никакого пути к этому без вызова powershell, но это можно сделать так:

var runspace = RunspaceFactory.CreateRunspace();
runspace.Open();

object psSessionConnection;

// Create a powershell session for remote exchange server
using (var powershell = PowerShell.Create())
{
    var command = new PSCommand();
    command.AddCommand("Get-MailboxFolderPermission");
    command.AddParameter("Identity", "john@contoso.com:\Calendar");
    command.AddParameter("User", "test@test.com"));
    powershell.Commands = command;
    powershell.Runspace = runspace;

    var result = powershell.Invoke();
    psSessionConnection = result[0];
}

Что вы делаете, так это фактически запускаете команду PS из самого кода.

Я также нашел EWS api , который, вероятно, содержит то, что вы ищете.

Получение текущих разрешений для папки с помощью метода Bind.

    // Create a property set to use for folder binding.
    PropertySet propSet = new PropertySet(BasePropertySet.FirstClassProperties, FolderSchema.Permissions);
    // Bind to the folder and get the current permissions. 
    // This call results in a GetFolder call to EWS.
    Folder sentItemsFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Calendar, "test@test.com"), propSet);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...