Categorieën
Exchange Online

Email verwijderen uit mailbox via Powershell

We zijn en blijven mensen. Een ongelukje zit in een klein hoekje en voor je het weet gaat er een email de deur uit wat helemaal niet de bedoeling was.

In onderwijsland proberen vooral leerlingen van alles uit. Vooral mail-enabled distributiegroepen die niet goed beveiligd zijn, dat zijn de leukste.

Normaal gesproken zijn distributiegroepen zo ingesteld dat alleen bepaalde groepen hier naartoe mogen emailen.

Correct ingesteld “Bezorgingsbeheer”

Helaas kan ik uit eigen ervaring schrijven dat bovenstaande niet altijd goed ingesteld staat. Maar wat als er tussen 1800 leerlingen een “reply-all” cultuur ontstaat, hoe krijg je al die emails er dan weer uit? Met Powershell! (let op! er is geen weg terug!)

  • Maak verbinding met Exchange Online via Powershell
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking
  • Doe een intiele search naar de emails, in het voorbeeld zoeken we naar “Subject:’Virus'”
Get-mailbox | search-mailbox –searchquery "Subject:'virus'" –Logonly –Targetmailbox administrator –Targetfolder Inbox

Om daadwerkelijk over te gaan tot het verwijderen van alle emails met het onderwerp “virus” gebruik je het volgende commando.

Get-mailbox | search-mailbox –searchquery "Subject:'virus'" –DeleteContent

Na elke mailbox-search verschijnt de mededeling of je zeker bent om het te verwijderen. Die melding negeren? Voeg “-Force” toe achter “-DeleteContent”.

Extra

Je kan de mailbox-search ook beperken tot een kleinere groep. Bijvoorbeeld alleen email adressen met “@leerling.testschool.nl” als email adres. Dat maakt de zoekactie een stuk sneller.

$mailboxes = Get-Mailbox -Filter { WindowsEmailAddress -like "*@leerling.testschool.nl" }
foreach($mailbox in $mailboxes){
search-mailbox -Identity $mailbox.Alias –searchquery "Subject:'virus'" –DeleteContent -Force
}

Bronnen:

https://docs.microsoft.com/en-us/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/connect-to-exchange-online-powershell?view=exchange-ps

https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/Search-Mailbox?redirectedfrom=MSDN&view=exchange-ps

Categorieën
Microsoft Teams

Teams policies

Beleidsregels (policies) in Teams, een krachtige tool om bepaalde rechten toe te kennen aan de juiste groepen. Echter, per persoon…

Powershell komt hierbij uitermate van pas, maar de handleidingen zijn wat schaars. Hierbij een korte handleiding hoe je een policy voor een grotere groep, in één keer toe kan passen.

  1. Maak een nieuw “beleid aan voor berichten” en kies hier de instellingen die je voor ogen hebt. (via admin.teams.microsoft.com)
  2. Download en installeer de Skype Connector (https://docs.microsoft.com/nl-nl/skypeforbusiness/set-up-your-computer-for-windows-powershell/download-and-install-the-skype-for-business-online-connector)
  3. Open een Powershell venster (uitvoeren als administrator)
  4. Maak verbinding met de verschillende onderdelen:
#Connect SkypeConnectors voor het instellen van Policies
Import-Module SkypeOnlineConnector
$Session = New-CsOnlineSession
Import-PSSession $Session
#Connect AzureAD voor het gebruik van Azure Groepen
Connect-AzureAD
  1. Zorg ervoor dat je de benodigde “Object Id” hebt van de groep waaraan je de policy toe wilt wijzen (via https://portal.azure.com/#blade/Microsoft_AAD_IAM/GroupsManagementMenuBlade/AllGroups)
$users = (Get-AzureADGroupMember -ObjectId "123456789-12345-1243-1241-12344124125").userprincipalname
foreach ($user in $users) {
Grant-CsTeamsMessagingPolicy -Identity $user -PolicyName Teams_pers_policy
}

De code zorgt ervoor dat “Teams_pers_policy” aan -ObjectId “123456789-12345-1243-1241-12344124125” gekoppeld wordt.

Dit is een messaging policy, maar je kan natuurlijk ook een “Beleidsregel voor vergadering” aanmaken.

Grant-CsTeamsMeetingPolicy -identity $user -PolicyName Education_Teacher

De complete code kan er dan zo uitzien

$users = (Get-AzureADGroupMember -ObjectId "123456789-12345-1243-1241-12344124125").userprincipalname
foreach ($user in $users) {
Grant-CsTeamsMessagingPolicy -Identity $user -PolicyName Teams_pers_policy
Grant-CsTeamsMeetingPolicy -identity $user -PolicyName Education_Teacher
}