Normally our servicedesk support staff can't create a shared mailbox because of the limited rights they have in our environment. Shared mailboxes can only be created with powershell and Organization Management rights.
The script runs as a "Module" in RES AM.
There are 2 variables that need to be entered:
- The shared mailbox Alias
- The shared mailbox description
The 2 variables:
When the job has run successfully the following has happened:
A group for the shared mailbox "Testmailbox" has been created in the OU domain.lan\Central\Accounts\Groups\Shared Mailboxes with the name; g.f.mail.Alias (g.f.mail.testmailbox)
The new group is added to the shared mailbox with "Full Access" permissions and "Send as" permissions.
The only thing that has to be done by hand, is add the opropriate users to the new "Testmailbox".
The script:
param ($Alias,$DisplayName)
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
import-module activedirectory
# Setup variables
$DomainController="sr-XXXXX.domain.lan"
$OU='domain.lan/Central/Accounts/Shared Mailboxes'
$UPNdomain = "@domain.com"
if ($Alias)
{
if ($Alias.Contains('@')) { $Alias = $Alias.Substring(0,$Alias.IndexOf('@')) }
$AliasMailbox = Get-Mailbox $Alias -ErrorAction SilentlyContinue
$AliasMailUser = Get-MailUser $Alias -ErrorAction SilentlyContinue
if ($AliasMailbox -or $AliasMailUser)
{
Write-Output "The Alias specified already exists."
$Alias = $null
}
}
while (!$Alias)
{
$Alias = Read-Host -Prompt "Alias"
if ($Alias)
{
if ($Alias.Contains('@')) { $Alias = $Alias.Substring(0,$Alias.IndexOf('@')) }
$AliasMailbox = Get-Mailbox $Alias -ErrorAction SilentlyContinue
$AliasMailUser = Get-MailUser $Alias -ErrorAction SilentlyContinue
if ($AliasMailbox -or $AliasMailUser)
{
Write-Output "The Alias specified already exists."
$Alias = $null
}
}
}
if ($DisplayName)
{
$DisplayNameMailbox = Get-Mailbox $DisplayName -ErrorAction SilentlyContinue
$DisplayNameMailUser = Get-MailUser $DisplayName -ErrorAction SilentlyContinue
if ($DisplayNameMailbox -or $DisplayNameMailUser)
{
Write-Output "The Display Name specified already exists."
$DisplayName = $null
}
}
while (!$DisplayName)
{
$DisplayName = Read-Host -Prompt "Display Name"
if ($DisplayName)
{
$DisplayNameMailbox = Get-Mailbox $DisplayName -ErrorAction SilentlyContinue
$DisplayNameMailUser = Get-MailUser $DisplayName -ErrorAction SilentlyContinue
if ($DisplayNameMailbox -or $DisplayNameMailUser)
{
Write-Output "The Display Name specified already exists."
$DisplayName = $null
}
}
}
#Alias to lower
$Alias=$Alias.ToLower()
# Set UPN
$UPN=$Alias + $UPNDomain
Write-Output "Creating Shared Mailbox"
New-Mailbox -Name:$Alias -Alias:$Alias -DisplayName:$DisplayName -OrganizationalUnit:$OU -UserPrincipalName:$UPN -SamAccountName:$Alias -Database:$MailboxDatabase –Shared –DomainController $DomainController
Sleep 10
Write-Output "Creating Security Group"
New-ADGroup -Name "g.f.mail.$Alias" -SamAccountName g.f.mail.$Alias -GroupCategory Security -GroupScope Global -DisplayName "g.f.mail.$Alias" -Path "OU=Shared Mailboxes,OU=Groups,OU=Accounts,OU=Central,DC=domain,DC=lan" -Description "Group for shared mailbox $Alias"
Write-Output "Setting Mailbox Permissions"
sleep 50
Add-MailboxPermission –Identity: $Alias –AccessRights:FullAccess –user:"g.f.mail.$Alias"
Add-ADPermission –Identity: $Alias –user:"g.f.mail.$Alias" –ExtendedRights: 'Send-as'
Mooi script, kun je uitleggen hoe je deze implementeert in RES One Automation Manager ?
ReplyDelete