Puncte:0

Cum să adăugați membrii grupului AAD SG la un EXO DG și să comparați

drapel it

În prezent, sunt ocupat cu un script care trebuie să facă următoarele:

Scriptul trebuie să verifice grupul Azure AD și să compare mutațiile într-un EXO DG. Am scris și împachetat câteva dintre și ieșiri, dar nu pot să funcționeze.Am zero erori când rulez, dar un utilizator șters din grupul SG nu va fi șters din DG în EXO.

De ce fac asta? Am o întrebare deschisă pentru a activa un grup de securitate Azure AD. Din păcate, grupurile de securitate Azure AD nu pot fi grupuri activate pentru e-mail.

Pe „New-AzureADMSGroup” sau „Set-AzureADMSGroup” există un obiect MailEnabled, dar nu este acceptat.

Având un EXO MSG, pur și simplu nu completați nevoile, deoarece nu puteți utiliza acest grup în cadrul pachetelor de acces sau al aplicațiilor Enterprise.

Având un EXO DDL, de asemenea, nu umple nevoile, deoarece utilizatorii din AAD SG solicitat, pur și simplu nu au aceleași criterii pentru a filtra. Singurul lucru pe care utilizatorii îl au în comun este calitatea de membru al AAD SG.

#Azure AD
$AzureADGroup1 = „xxxxx-xxx-xxxx-xx-xxxxxxx”
$AzureADGroup1Members = Get-AzureADGroupMember -ObjectId $AzureADGroup1 -All $true | Select-Object Mail

#EXO
$DGMembers = (Get-distributiongroupmember -identity [email protected]).primarysmtpaddress

foreach ($AzureADGroup1Member în $AzureADGroup1Members) {
#dacă utilizatorii deja adăugați returnează $false
dacă (!($DGMembers -se potrivește cu $AzureADGroup1Member))
{
Add-DistributionGroupMember -Identity [email protected] -Member $AzureADGroup1Member.Mail -Confirm:$false -ErrorAction SilentlyContinue
}

Write-Host -ForegroundColor Verde $AzureADGroup1Member.Mail „este adăugat”

dacă (!($DGMembers -notmatch $AzureADGroup1Member))
{
    Remove-DistributionGroupMember -Identity [email protected] -Member $AzureADGroup1Member.Mail -Confirm:$false -ErrorAction SilentlyContinue
}

Write-Host -ForegroundColor Verde $AzureADGroup1Member.Mail „este eliminat”

}

ACTUALIZAȚI: Am făcut acum un alt scenariu, care nu este foarte îngrijit.

1: Îndepărtează toți membrii din DG

2: Preia toți membrii de la AAD SG

3: adăugați toți membrii înapoi la DG

#EXO: Clear DG

$DG = „DG1”

$DGMembers = (Get-distributiongroupmember -identity $DG).PrimarySmtpAddress



foreach ($DGMember în $DGMembers) {

    Remove-DistributionGroupMember -Identity $DG -Member $DGMember -Confirm:$false -ErrorAction SilentlyContinue

    Write-Host -ForegroundColor Verde $DGMember „este eliminat”

}



#Azure AD: Obțineți AAD SG

$AzureADGroup1 = „xxxx-xxxx-xxx-xxx-xxx”

$AzureADGroup1Members = (Get-AzureADGroupMember -ObjectId $AzureADGroup1 -All $true).Mail



#EXO: Umpleți din nou DG

foreach ($AzureADGroup1Member în $AzureADGroup1Members) {

    Add-DistributionGroupMember -Identity $DG -Member $AzureADGroup1Member -Confirm:$false -ErrorAction SilentlyContinue

    Write-Host -ForegroundColor Green $AzureADGroup1Membru „este adăugat”

    }

Ei bine, asta în sine nu este o problemă, doar că AAD SG are mai mult de 1100 de membri, îl pot rula desigur la ora 1 în fiecare seară, dar mi-e teamă că s-ar putea să nu fie gata la ora 7 pe termen lung.

Puncte:0
drapel it

Răspund la întrebarea mea pentru viitorii cititori. Cheia este să lucrați cu funcția Compare-Object în PowerShell!

#Azure AD: Obțineți AAD SG
$AzureADGroup = „xxx-xxx-xxx-xxx-xxxx”
$AzureADGroupMembers = (Get-AzureADGroupMember -ObjectId $AzureADGroup -All $true).Mail

#EXO: Obțineți EXO DG
$DG = „[email protected]”
$DGMembers = (Get-distributiongroupmember -identity $DG).PrimarySmtpAddress


# SideIndicator: "<=" = NU ÎN EXO DG - ADĂUGAȚI MEMBRUL GRUPULUI AAD SG LA EXO DG
Compare-Object -ReferenceObject $AzureADGroupMembers -DifferenceObject $DGMembers | Unde-Obiect {$_.SideIndicator -eq „<="} | Pentru fiecare obiect {
    Add-DistributionGroupMember -Identity $DG -Member $_.InputObject -Confirm:$false
    Write-Host -ForegroundColor Green $_.InputObject „este adăugat”
}

# SideIndicator: "=>" = NU ÎN AAD SG - ELIMINAȚI MEMBRU DE GRUP EXO DG DIN AAD SG 
Compare-Object -ReferenceObject $AzureADGroupMembers -DifferenceObject $DGMembers | Unde-Obiect {$_.SideIndicator -eq "=>"} | Pentru fiecare obiect {
    Remove-DistributionGroupMember -Identity $DG -Member $_.InputObject -Confirm:$false
    Write-Host -ForegroundColor Green $_.InputObject „este eliminat”
}

Write-Host -ForegroundColor Green "Scriptul este terminat!"

Puteți completa DG o singură dată cu:

#Azure AD: obțineți AzureADGroup1 și AzureADGroup1Members
$AzureADGroup1 = „xxxx-xxx-xxxx-xxx”
$AzureADGroup1Members = (Get-AzureADGroupMember -ObjectId $AzureADGroup1 -All $true).Mail

#EXO: Setați DistributionGroupMembers din AzureADGroup1Members în AzureADGroup1
foreach ($AzureADGroup1Member în $AzureADGroup1Members) {
Add-DistributionGroupMember -Identity [email protected] -Member $AzureADGroup1Member -Confirm:$false
Write-Host -ForegroundColor Green $AzureADGroup1Membru „este adăugat”
}

Write-Host -ForegroundColor Green "Scriptul este terminat!"

După completarea unică, puteți face o sarcină de automatizare care să compare ambele grupuri în fiecare zi.

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.