Office 365 - Custom Out of Office Script

This script is designed to be used with the script password encryption for Office 365. See here for more info. 

$rootpath = (get-item '.\' ).parent.FullName
$clientname = Get-Content "$rootpath\client.txt" -Raw
$user = Get-Content "$rootpath\UserID.txt"
$PasswordFile = "$rootpath\Password.txt"
$KeyFile = "C:\ICU\AES.key"
$key = Get-Content $KeyFile
$UserCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri -Credential $UserCredential -Authentication Basic -AllowRedirection
#Import the session 
Write-Host "Connecting to Exchange Online for $clientname"
Import-PSSession $Session -AllowClobber | Out-Null

function Menu {
[email protected]"
1 Set an Out of Office
2 Disable an Out of Office
Q Quit

Select a task by number or Q to quit

Write-Host "Out of Office Configuration" -ForegroundColor Cyan
$r = Read-Host $menu

Switch ($r) {
"1" {
    #Collect Info
$mailbox = Read-Host "Enter the email address for the account to apply an out of office message"
$customemessage = Read-Host "Please enter your custom Out of Office message"
#Set the Our of Office
Write-Host "Setting out of office..."
Set-MailboxAutoReplyConfiguration $mailbox -AutoReplyState enabled -ExternalAudience all -InternalMessage "$customemessage" -ExternalMessage "$customemessage"
Write-Host "Out of Office has been set."

"2" {
    $mailbox = Read-Host "Enter the email address of the account to disable Out Of Office"
Write-Host "Disabling Auto reply for $mailbox"
Set-MailboxAutoReplyConfiguration $mailbox -AutoReplyState disabled
Write-Host "Confirming changes made..."
Get-MailboxAutoReplyConfiguration $mailbox
Write-Host "Ensure the value now reads 'Disabled'"

"Q" {
    Write-Host "Quitting" -ForegroundColor Green
    Get-PSSession | Remove-PSSession

default {
    Write-Host "Choose a valid option... Fool!" -ForegroundColor Yellow
} #end switch


## The following four lines only need to be declared once in your script.
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes","Description."
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No","Description."
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
## Prompt to finsh
$title = "Are you done?"
$message = "Do you want to enable/disable another?"
$result = $host.ui.PromptForChoice($title, $message, $options, 1)
switch ($result) {
        Write-Host "Script has completed."
        Get-PSSession | Remove-PSSession

Add comment