Script – MS Exchange – Kalenderrechte FreeBusy für alle neuen User einstellen

Ziel dieses Scriptes ist eine Unternehmensvorgabe, dass alle User der Organisation Ihren Kalender mit FreeBusy/FreiGebucht freigegeben haben sollen.

Das Script sucht neue User der letzten 7 Tage, passt die Rechte für den Standard an und sendet dann eine Erfolgsmail.

 

#requires -version 2

#Load Exchange Server 2010 Management Shell if not loaded. You may delete/comment out this step if you are running the script from the Exchange Management Shell
if (-not (Get-PSSnapin | Where-Object {$_.Name -like „Microsoft.Exchange.Management.PowerShell.E2010“})){
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
}

#Custom variables
$mailboxes = Get-Mailbox -resultsize unlimited | where {$_.WhenCreated -gt (get-date).adddays(-7)}
$AccessRights = „availabilityonly“

#Loop through all mailboxes
foreach ($mailbox in $mailboxes) {

#Retrieve name of the user`s calendar
$calendar = (($mailbox.SamAccountName)+ „:“ + (Get-MailboxFolderStatistics -Identity $mailbox.SamAccountName -FolderScope Calendar | Select-Object -First 1).Name)

#Check if calendar-permission for user „Default“ is set to the default permission of „AvailabilityOnly“
if (((Get-MailboxFolderPermission $calendar  | Where-Object {$_.User -like „Default“}).AccessRights) -like „AvailabilityOnly“) {

Write-Host „Updating calendar permission for $mailbox…“

#Set calendar-permission for user „Default“ to value defined in variable $AccessRights
Set-MailboxFolderPermission -User „Default“ -AccessRights $AccessRights -Identity $calendar
#   }
}

function sendmail($body)
{
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
#########
# Hier müsst Ihr den Mailserver definieren
#########
$SmtpClient.Host = „exchange.domain.tld“
#########
# Hier müsst Ihr den Sender definieren
#########
$mailmessage.from = „FreeBusyScript@domain.tld“
#########
# Hier müsst Ihr den Empfaenger definieren
#########
$mailmessage.To.add(„blubb@bla.tld“)
#########
# Hier müsst Ihr den Betreff definieren
#########
$mailmessage.Subject = “Task – FreeBusy Rechte wurden für neue User gesetzt”
$MailMessage.IsBodyHtml = $false
$mailmessage.Body = $body
$smtpclient.Send($mailmessage)
}

$head1 = „Folgende neue User der letzten 7 Tage wurden bearbeitet: “
$head2 = „Dies ist eine automatisch erzeugte Mail!“

$body = $head1 + ($mailboxes | out-string) + $head2
sendmail $body

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.