This script is designed to be used with the script password encryption for Office 365. See here https://www.techshizz.com/post/powershell-script-password-ecryption-for-multi-site-administration for more info.
$rootpath = (get-item '.' ).parent.FullName $clientname = Get-Content "$rootpathclient.txt" -Raw $user = Get-Content "$rootpathUserID.txt" $PasswordFile = "$rootpathPassword.txt" $KeyFile = "C:ICUAES.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 https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection #Import the session Write-Host "Connecting to Exchange Online for $clientname" Import-PSSession $Session -AllowClobber | Out-Null function Menu { $menu=@" 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" #Disable 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'" Menu } "Q" { Write-Host "Quitting" -ForegroundColor Green Get-PSSession | Remove-PSSession Exit } default { Write-Host "Choose a valid option... Fool!" -ForegroundColor Yellow Menu } } #end switch } Menu ## 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) { 0{ Write-Host "Script has completed." Get-PSSession | Remove-PSSession }1{ Menu } }