Необходимо удалить выбранные права доступа - PullRequest
1 голос
/ 19 апреля 2019

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

Я пытался исключить права доступа с помощью приведенной ниже команды.

PS C: \ Users \ XXXX> get-mailboxpermission -Identity 'CCCC.XXXX.com/Users/test_50' | выберите AccessRights | где {_.AccessRights -ne "FullAccess"}

Это фактический результат, который я получаю:

PS C:\Users\XXXX> get-mailboxpermission -Identity 'CCCC.XXXX.com/Users/test_50' |select AccessRights

AccessRights
------------
{FullAccess, ReadPermission}
{FullAccess}
{FullAccess}
{FullAccess}
{FullAccess}
{FullAccess}
{ReadPermission}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{ReadPermission}
{ReadPermission}
{FullAccess, ReadPermission}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{ReadPermission}

Я бы попытался исключить "FullAccess" в приведенной ниже команде:

PS C:\Users\XXXX> get-mailboxpermission -Identity 'CCCC.XXXX.com/Users/test_50' |select AccessRights | where { $_.AccessRights -ne "FullAcce
ss"}

AccessRights
------------
{FullAccess, ReadPermission}
{ReadPermission}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{ReadPermission}
{ReadPermission}
{FullAccess, ReadPermission}
{FullAccess, DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{ReadPermission}

Ожидаемый результат:

AccessRights
------------
{ReadPermission}
{ReadPermission}
{DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{ReadPermission}
{ReadPermission}
{ReadPermission}
{DeleteItem, ReadPermission, ChangePermission, ChangeOwner}
{ReadPermission}

1 Ответ

1 голос
/ 19 апреля 2019

Поскольку вы просто пытаетесь отфильтровать выходные данные, вам подойдет комбинация оператора -replace и метода .where().

(get-mailboxpermission -Identity 'CCCC.XXXX.com/Users/test_50' |
Select-Object @{n="AccessRights";e={$_.AccessRights -replace "FullAccess(?:, )?"}}).where{$_.AccessRights -ne ""}

Оператор -replace здесь заменит строку FullAccess,или FullAccess с пустой строкой.Метод .where() удаляет строки, которые просто содержат пустую строку.Поскольку при замене используется Regex, (?:, )? оценивается как группа без захвата (?:()), совпадающая по запятой, за которой следует пробел ноль или один раз (?).

Команда Select-Objectиспользование хеш-таблицы для сохранения имени заголовка AccessRights при манипулировании объектом конвейера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...