Рейтинг:0

Применить разрешение на импорт общих папок Exchange с помощью Import-CliXML

флаг cn

я столкнулся с ситуация что я потерял все права доступа к общедоступным папкам, которые были назначены через группы.

До того, как началась миграция с нашего сервера MSEX2016 на Office 365, все разрешения были экспортированы в файл XML, что я думаю (описано на это Страница Microsoft) произошло с помощью следующей команды:

Get-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User,AccessRights-ExpandProperty AccessRights | Экспорт-CliXML OnPrem_PFPerms.xml

Выходной файл «OnPrem_PFPerms.xml» имеет размер около 5 ГБ. Это звучит много для разрешений только для структуры PF размером около 300 ГБ, но, возможно, ее огромный размер вызван сложностью формата XML. Сжатие 7-Zip уменьшает его размер до 25 МБ, что означает, что в нем много избыточных данных.

На нашем MSEX2010, который ранее был перенесен на MSEX2016, есть файл «Legacy_PFPerms.xml» размером около 500 МБ.

Какой будет правильная команда PowerShell для применения всех разрешений из XML-файла к структуре общих папок в Office 365/Exchange Online?

Я предполагаю, что Import-CliXML как-то справится с задачей, но я не настолько знаком с PowerShell, чтобы создать правильную команду.

Рейтинг:2
флаг cn

Наконец, следующий сценарий PowerShell позволил мне применить все разрешения из XML-файла к структуре общих папок. Благодаря Иван_Ванг который привел меня в правильном направлении с его ответом.

$pfs = Import-Clixml-Path OnPrem_PFPerms.xml

foreach($pf в $pfs)
{
Add-PublicFolderClientPermission -Identity ("\" + $($pf.Identity.MapiFolderPath -join "\")) -User $pf.User.DisplayName -AccessRights $pf.AccessRights[0].ToString()
}

Также возможно разделить это на несколько сеансов PowerShell, чтобы быстрее применить изменения, поскольку он работает довольно медленно.

  1. ПС сессия: foreach($pf в $pfs[0..2000]) ...

  2. ПС сессия: foreach($pf в $pfs[2001..4000])...

...

Не запускайте слишком много сеансов одновременно, иначе подключение к Exchange Online будет прервано со следующим сообщением: Запрос не обслуживается на сервере. Ваш запрос слишком частый.

Ivan_Wang avatar
флаг us
Я рад, что приведенная ниже информация оказалась полезной для вас. Спасибо за то, что поделились и дополнили одновременно! Если после этого возникнет проблема с этим процессом экспорта, пожалуйста, опубликуйте ее. Если все работает хорошо, вы можете отметить лучший ответ, чтобы закончить эту тему. Хорошего дня:)
Рейтинг:1
флаг us

Какие свойства включены в файл .xml? Если есть Личность и Пользователь, Права доступа, вы можете попробовать:

$pfs = Import-Clixml-Path OnPrem_PFPerms.xml
foreach($pf в $pfs)
{
Add-PublicFolderClientPermission -Identity $pf.Identity -User $pf.User -AccessRights $pf.AccessRights
}

Основываясь на вашей команде выше, кажется, что экспортируется только Права доступа объект. В этом случае вам может потребоваться экспортировать текущий список ACL в Exchange Online в CSV-файл:

Get-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User,@{n="AccessRights";e={[String]($_.AccessRights)}} -ExpandProperty AccessRights | Экспорт-CSV pf.csv

И снова назначьте разрешения общих папок своим пользователям через PowerShell (для существующих записей разрешений PowerShell сообщит о предупреждении: Для пользователя найдена существующая запись разрешения):

$pfs = Import-CSV pf.csv
foreach($pf в $pfs)
{
Add-PublicFolderClientPermission -Identity $pf.Identity -User $pf.User -AccessRights $pf.AccessRights
}
Рейтинг:0
флаг cv

Если исходный сервер Exchange по-прежнему доступен, вы можете использовать следующее, чтобы экспортировать разрешения клиента общедоступной папки в CSV-файл и импортировать их в Office 365. Возможно, вам потребуется отредактировать исходный CSV-файл, чтобы отредактировать имена пользователей, чтобы они соответствовали Office 365 имен пользователей для каждого пользователя, присутствующего в разрешениях.

Экспорт разрешений общей папки в CSV:

Get-PublicFolder-Recurse | Get-PublicFolderClientPermission | Выберите Идентификация, Пользователь, @{выражение={$_.AccessRights}; label='AccessRights' } | Export-CSV C:\Temp\PublicFolderClientPermission.csv

Импорт разрешений общедоступной папки из CSV:

$Users= Import-CSV C:\Temp\PublicFolderClientPermission.csv foreach ($User в $Users){Get-PublicFolder-Identity $($User.identity) | add-publicfolderclientpermission -AccessRights $User.AccessRights -User $User.User}

Michael Uray avatar
флаг cn
К сожалению, исходный сервер Exchange больше недоступен. Имена пользователей/групп в O365 одинаковы, поскольку наша локальная служба AD синхронизируется с Azure AD.
joeqwerty avatar
флаг cv
Пользователи синхронизируются, но разрешения локального клиента PF могут быть указаны как **doman\username**, и в этом случае вам нужно будет отредактировать их, чтобы они соответствовали имени Office 365.
joeqwerty avatar
флаг cv
Вы просмотрели файл XML? Можно ли скопировать разрешения клиента PF в файл CSV? Если это так, вы можете импортировать их с помощью команды импорта в моем ответе.
Michael Uray avatar
флаг cn
Это могло бы сработать и с экспортом в CSV, но тем временем я понял, как запустить его напрямую через файл XML. Тем не менее, спасибо за ваш совет.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.