Skip to content

Set-ExchangeMailboxConfig

Exchange: Modifies properties of a mailbox and its associated user

#Requires -Version 5.1

[CmdletBinding()]
Param (
    [Parameter(Mandatory = $true)]
    [string]$Identity,

    [string]$Alias,
    [string]$DisplayName,
    [string]$PrimarySmtpAddress,
    [string]$FirstName,
    [string]$LastName,
    [string]$Office,
    [string]$Phone,
    [bool]$ResetPasswordOnNextLogon
)

Process {
    try {
        $mailboxParams = @{
            'Identity'    = $Identity
            'Confirm'     = $false
            'ErrorAction' = 'Stop'
        }
        if ($PSBoundParameters.ContainsKey('Alias')) { $mailboxParams.Add('Alias', $Alias) }
        if ($PSBoundParameters.ContainsKey('DisplayName')) { $mailboxParams.Add('DisplayName', $DisplayName) }
        if ($PSBoundParameters.ContainsKey('PrimarySmtpAddress')) { $mailboxParams.Add('PrimarySmtpAddress', $PrimarySmtpAddress) }

        if ($mailboxParams.Count -gt 3) {
            Set-Mailbox @mailboxParams
        }

        $userParams = @{
            'Identity'    = $Identity
            'Confirm'     = $false
            'ErrorAction' = 'Stop'
        }
        if ($PSBoundParameters.ContainsKey('FirstName')) { $userParams.Add('FirstName', $FirstName) }
        if ($PSBoundParameters.ContainsKey('LastName')) { $userParams.Add('LastName', $LastName) }
        if ($PSBoundParameters.ContainsKey('Office')) { $userParams.Add('Office', $Office) }
        if ($PSBoundParameters.ContainsKey('Phone')) { $userParams.Add('Phone', $Phone) }
        if ($PSBoundParameters.ContainsKey('ResetPasswordOnNextLogon')) { $userParams.Add('ResetPasswordOnNextLogon', $ResetPasswordOnNextLogon) }

        if ($userParams.Count -gt 3) {
            Set-User @userParams
        }

        $mailbox = Get-Mailbox -Identity $Identity -ErrorAction Stop
        $user = Get-User -Identity $Identity -ErrorAction Stop

        $result = [PSCustomObject]@{
            Identity    = $Identity
            DisplayName = $mailbox.DisplayName
            Alias       = $mailbox.Alias
            Office      = $user.Office
            Phone       = $user.Phone
            Action      = "MailboxConfigUpdated"
            Status      = "Success"
            Timestamp   = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        }

        Write-Output $result
    }
    catch {
        throw
    }
}

Specifies the Identity of the mailbox.

Optional. Specifies a new Exchange alias.

Optional. Specifies a new display name.

Optional. Specifies a new primary SMTP address.

Optional. Specifies the user's first name.

Optional. Specifies the user's last name.

Optional. Specifies the user's office location.

Optional. Specifies the user's phone number.

Optional. If set, forces the user to change their password at the next logon.

An interactive directory of PowerShell scripts.