Toevoegen meerdere gebruikers aan shared mailbox(Powershell)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • yoeri1989
  • Registratie: April 2012
  • Laatst online: 15:29
Mijn vraag
Onlangs is er een mailmigratie van On-prem naar MS365 uitgevoerd en zijn er wat dingen misgegaan met betrekking tot rechten op gedeelde mailboxen.

Nu is mij gevraagd om een oplossing te bedenken om meerdere gebruikers in 1x aan een gedeelde mailbox toe te voegen.

Ik heb gekeken naar een Powershell script en na wat knutselen had ik het volgende bedacht:

code:
1
2
3
4
5
6
Connect-ExchangeOnline

$DGroup = Read-Host 'Insert Shared mailbox Name'

Import-Csv  C:\scripts\Members.csv | foreach { Add-MailboxPermission  $DGroup  -User  $_.Mailbox  -AccessRights  FullAccess} |
foreach { Add-RecipientPermission $Dgroup -Trustee $_.Mailbox -AccessRights "SendAs"}


Ik heb het vermoeden dat ik het CMDLET Add-RecipientPermission verkeerd gebruik, of dat mijn CSV niet de juiste inhoud heeft om dit CMDLET uit te voeren.

Op het moment dat ik -trustee mijnnaam@domein.nl er bij specifieer dan voert het script wel uit, echter haalt dat de hele automatisering uit het script.

Het ziet er dan zo uit:

code:
1
2
3
4
5
6
 Connect-ExchangeOnline

$DGroup = Read-Host 'Insert Shared mailbox Name'

Import-Csv  C:\scripts\Members.csv | foreach { Add-MailboxPermission  $DGroup  -User  $_.Mailbox  -AccessRights  FullAccess} |
foreach { Add-RecipientPermission $Dgroup -Trustee mijnnaam@domein.nl -AccessRights "SendAs"}


Relevante software en hardware die ik gebruik
Windows server 2016 + Powershell

Wat ik al gevonden of geprobeerd heb
Onderstaande links gebruikt als referentie:

https://docs.microsoft.co...rmission?view=exchange-ps
https://docs.microsoft.co...rmission?view=exchange-ps

Alvast heel erg bedankt! :F

Beste antwoord (via yoeri1989 op 05-03-2021 15:24)


  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 20:03

ElCondor

Geluk is Onmisbaar

Je piped de output van je Add-Mailboxpermission door naar de Add-RecipientPermission. Ik denk dat je daar een denkfout maakt.
De foreach moet je maar één keer definiëren en dan beide commando's met SDGroup en $_.Mailbox als parameter uitvoeren.

Zoiets als
PowerShell:
1
2
3
4
foreach {
    Add-MailboxPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox;
    Add-RecipientPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox;
}


Volgens mij moet je het zo voor elkaar krijgen.
De output van Add-MailboxPermission is geen set aan objects meer, dus je hebt dan geen current object meer waarvan je de .Mailbox property kunt uitlezen.

Wat ook zou kunnen is de Add-MailboxPermission cmdlet een -PassThrough parameter meegeven (Als die er is voor dit cmdlet). Dan wordt volgens mij het current object naar de pipeline gestuurd in plaats van de output. Dan kun je wel een '|' gebruiken.

Een '|' wordt dus altijd gebruikt om OUTPUT van een commando door te sturen naar het volgende commando achter de '|'. En in dit geval wil je dat niet.
Voor je begrip, je kunt ook het volgende testen:
PowerShell:
1
Add-MailboxPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox | $_.Mailbox


Ik denk dat je geen output krijgt, want $_.Mailbox bestaat dan al niet meer. oOo

[ Voor 32% gewijzigd door ElCondor op 05-03-2021 14:48 ]

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 20:03

ElCondor

Geluk is Onmisbaar

Je piped de output van je Add-Mailboxpermission door naar de Add-RecipientPermission. Ik denk dat je daar een denkfout maakt.
De foreach moet je maar één keer definiëren en dan beide commando's met SDGroup en $_.Mailbox als parameter uitvoeren.

Zoiets als
PowerShell:
1
2
3
4
foreach {
    Add-MailboxPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox;
    Add-RecipientPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox;
}


Volgens mij moet je het zo voor elkaar krijgen.
De output van Add-MailboxPermission is geen set aan objects meer, dus je hebt dan geen current object meer waarvan je de .Mailbox property kunt uitlezen.

Wat ook zou kunnen is de Add-MailboxPermission cmdlet een -PassThrough parameter meegeven (Als die er is voor dit cmdlet). Dan wordt volgens mij het current object naar de pipeline gestuurd in plaats van de output. Dan kun je wel een '|' gebruiken.

Een '|' wordt dus altijd gebruikt om OUTPUT van een commando door te sturen naar het volgende commando achter de '|'. En in dit geval wil je dat niet.
Voor je begrip, je kunt ook het volgende testen:
PowerShell:
1
Add-MailboxPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox | $_.Mailbox


Ik denk dat je geen output krijgt, want $_.Mailbox bestaat dan al niet meer. oOo

[ Voor 32% gewijzigd door ElCondor op 05-03-2021 14:48 ]

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • +1 Henk 'm!

  • yoeri1989
  • Registratie: April 2012
  • Laatst online: 15:29
ElCondor schreef op vrijdag 5 maart 2021 @ 14:41:
Je piped de output van je Add-Mailboxpermission door naar de Add-RecipientPermission. Ik denk dat je daar een denkfout maakt.
De foreach moet je maar één keer definiëren en dan beide commando's met SDGroup en $_.Mailbox als parameter uitvoeren.

Zoiets als
PowerShell:
1
2
3
4
foreach {
    Add-MailboxPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox;
    Add-RecipientPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox;
}


Volgens mij moet je het zo voor elkaar krijgen.
De output van Add-MailboxPermission is geen set aan objects meer, dus je hebt dan geen current object meer waarvan je de .Mailbox property kunt uitlezen.

Wat ook zou kunnen is de Add-MailboxPermission cmdlet een -PassThrough parameter meegeven (Als die er is voor dit cmdlet). Dan wordt volgens mij het current object naar de pipeline gestuurd in plaats van de output. Dan kun je wel een '|' gebruiken.

Een '|' wordt dus altijd gebruikt om OUTPUT van een commando door te sturen naar het volgende commando achter de '|'. En in dit geval wil je dat niet.
Voor je begrip, je kunt ook het volgende testen:
PowerShell:
1
Add-MailboxPermission -BlablaParameter $DGroup -NogEenParameter $_.Mailbox | $_.Mailbox


Ik denk dat je geen output krijgt, want $_.Mailbox bestaat dan al niet meer. oOo
Ik had het script inderdaad anders vorm moeten geven. Na lang knutselen heb ik dit er van gemaakt.

code:
1
2
3
4
5
6
7
8
9
10
Connect-ExchangeOnline

$DGroup = Read-Host 'Insert Shared Mailbox Name'

Import-Csv  C:\scripts\Members.csv |

 foreach { Add-MailboxPermission $DGroup  -User  $_.Mailbox  -AccessRights  FullAccess -Confirm:$false;
 Add-RecipientPermission -Identity $DGroup -Trustee $_.Mailbox -AccessRights "SendAs" -Confirm:$false;
 Set-Mailbox $DGroup -GrantSendOnBehalfTo @{Add=$_.Mailbox} -Confirm:$false
 }


Bedankt in elk geval @ElCondor