Puncte:0

Aplicați importarea permisiunii pentru foldere publice Exchange prin Import-CliXML

drapel cn

Am dat peste situatie că mi-am pierdut toate permisiunile pentru folderele publice care au fost atribuite prin grupuri.

Înainte de a începe migrarea de la serverul nostru MSEX2016 la Office 365, toate permisiunile au fost exportate într-un fișier XML, ceea ce cred eu (descris pe acest Pagina Microsoft) sa întâmplat cu următoarea comandă:

Get-PublicFolder -Recurse -ResultSize Nelimitat | Get-PublicFolderClientPermission | Select-Object Identity,User,AccessRights -ExpandProperty AccessDrepturi | Export-CliXML OnPrem_PFPerms.xml

Fișierul de ieșire „OnPrem_PFPerms.xml” are aproximativ 5 GB. Asta mi se pare foarte mult pentru permisiuni doar pe o structură PF de aproximativ 300 GB, dar poate că dimensiunea sa uriașă este cauzată de complexitatea formatului XML. Compresia 7-Zip o reduce la 25 MB, înseamnă că există o mulțime de date redundante în ea.

Pe MSEX2010, care a mai fost migrat la MSEX2016, există un fișier „Legacy_PFPerms.xml” cu aproximativ 500 MB.

Care ar fi comanda PowerShell adecvată pentru a aplica toate permisiunile din fișierul XML la structura de foldere publice din Office 365 / Exchange online?

Bănuiesc că Import-CliXML ar face treaba cumva, dar nu sunt atât de familiarizat cu PowerShell pentru a construi comanda potrivită.

Puncte:2
drapel cn

În cele din urmă, următorul script PowerShell mi-a permis să aplic toate permisiunile din fișierul XML la structura folderului public. Mulțumită Ivan_Wang care m-a condus în direcția bună cu răspunsul său.

$pfs = Import-Clixml -Path OnPrem_PFPerms.xml

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

Este, de asemenea, posibil să o împărțiți în mai multe sesiuni PowerShell pentru a aplica modificările mai rapid, deoarece rulează destul de lent.

  1. Sesiunea PS: foreach($pf în $pfs[0..2000]) ...

  2. Sesiunea PS: foreach($pf în $pfs[2001..4000])...

...

Nu rulați prea multe sesiuni simultan, altfel va întrerupe conexiunea la Exchange Online cu următorul mesaj: Cererea nu este deservită pe server. Solicitarea dvs. este prea frecventă.

Ivan_Wang avatar
drapel us
Mă bucur că informațiile de mai jos vă sunt utile. Vă mulțumim pentru partajare și completare în același timp! Dacă există o problemă cu acest proces de export după aceea, nu ezitați să o postați. Dacă totul funcționează bine, puteți marca cel mai bun răspuns pentru a finaliza acest thread. Să aveţi o zi bună:)
Puncte:1
drapel us

Care sunt proprietățile incluse în fișierul .xml? Dacă există Identitate și Utilizator, Drepturi de acces, ai putea incerca:

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

Pe baza comenzii dvs. de mai sus, se pare că exportați numai fișierul Drepturi de acces obiect. Dacă da, poate fi necesar să exportați lista ACL curentă în Exchange Online într-un fișier .csv:

Get-PublicFolder -Recurse -ResultSize Nelimitat | Get-PublicFolderClientPermission | Select-Object Identity,User,@{n="AccessRights";e={[String]($_.AccessRights)}} -ExpandProperty AccessRights | Export-Csv pf.csv

Și atribuiți din nou permisiuni ale folderelor publice utilizatorilor dvs. prin PowerShell (Pentru intrările de permisiuni existente, PowerShell va raporta un avertisment: A fost găsită o intrare de permisiune existentă pentru utilizator):

$pfs = Import-Csv pf.csv
foreach($pf în $pfs)
{
Add-PublicFolderClientPermission -Identity $pf.Identity -Utilizator $pf.User -AccessRights $pf.AccessRights
}
Puncte:0
drapel cv

Dacă serverul sursă Exchange este încă disponibil, puteți utiliza următoarele pentru a exporta permisiunile clientului Public Folder într-un fișier CSV și a le importa în Office 365. Probabil va trebui să editați fișierul CSV sursă pentru a edita numele de utilizator pentru a se potrivi cu Office. 365 de nume de utilizator pentru fiecare utilizator prezent în permisiuni.

Exportați permisiunile folderului public în CSV:

Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Selectați Identity, User, @{ expression={$_.AccessRights}; label='Drepturi de acces' } | Export-Csv C:\Temp\PublicFolderClientPermission.csv

Importați permisiunile pentru folderele publice din CSV:

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

Michael Uray avatar
drapel cn
Din păcate, serverul sursă Exchange nu mai este disponibil. Numele de utilizator/numele de grup din O365 sunt aceleași, deoarece AD-ul nostru local este sincronizat cu Azure AD.
joeqwerty avatar
drapel cv
Utilizatorii sunt sincronizați, dar permisiunile clientului PF local pot fi listate ca **domeniu\nume utilizator**, caz în care, va trebui să le editați pentru a se potrivi cu numele Office 365.
joeqwerty avatar
drapel cv
Ați revizuit fișierul XML? Permisiunile clientului PF pot fi copiate într-un fișier CSV? Dacă da, le puteți importa cu comanda import din răspunsul meu.
Michael Uray avatar
drapel cn
S-ar putea să fi funcționat și cu exportul în CSV, dar mi-am dat seama între timp cum să-l rulez direct prin fișierul XML. Cu toate acestea, vă mulțumesc pentru sfat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.