Toon posts:

Toevoegen meerdere gebruikers aan shared mailbox(Powershell)

Pagina: 1
Acties:

Vraag


  • yoeri1989
  • Registratie: April 2012
  • Laatst online: 11-03 01:41
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: 14:45

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
  • +1Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 14:45

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:
  • +1Henk 'm!

  • yoeri1989
  • Registratie: April 2012
  • Laatst online: 11-03 01:41
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


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee