Connecting to Office 365 with PowerShell enables you to perform many functions not available in the GUI. But what if you want to automate these functions. Connecting to Office 365 with PowerShell will prompt you for credentials for that session. Now credentials can be saved in the script but that would be a security issue having your password saved in a file. The way around that would be to save your password as a secure string in a text file. And that is easy:
Read-Host -Prompt “Enter your password” -AsSecureString | ConvertFrom-SecureString | Out-File “C:\scripts\cred.txt”
Your password will be encrypted and look like this:
Now that your password is saved as a secure string you can customize your script to call it when connecting to Office 365
##This will connect to Office 365
$AdminName = “firstname.lastname@example.org”
$Pass = Get-Content “c:\scripts\cred.txt” | ConvertTo-SecureString
$Cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $AdminName, $Pass
$Session = New-PSSession`
-ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/`
-Credential $cred -Authentication Basic -AllowRedirection
After the connection part you can add your desired function to the script. Let’s say for instance you want to export a list of shared mailboxes.
Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited | Select DisplayName | sort DisplayName | Export-Csv c:\scripts\SharedMailboxes.csv -NoTypeInformation
**This illustrates how an O365 administrator can introduce automation in scripts that they own and control individually. For scheduling automation tasks it is recommended to use a dedicated service account.