I am writing an Office 365 assistance tool in PowerShell and have what I think is a simple question I can't find the answer to. How can I tell if a connection as created by Connect-MsolService
is present and active? There must be some way to know because the other cmdlets can check, I just don't know what that way is and I'm not having luck finding it.
This was my solution.
try
{
Get-MsolDomain -ErrorAction Stop > $null
}
catch
{
if ($cred -eq $null) {$cred = Get-Credential $O365Adminuser}
Write-Output "Connecting to Office 365..."
Connect-MsolService -Credential $cred
}
I know this is an old question, but this is how I did this:
# Only run if not already connected
if(-not (Get-MsolDomain -ErrorAction SilentlyContinue))
{
$O365Cred = Get-Credential -Message "Please provide credentials for Microsoft Online"
$O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection -ErrorAction Stop
Connect-MsolService –Credential $O365Cred
Import-PSSession $O365Session | Out-Null
}
If the Connect-MsolService
line comes before the $O365Session =
line, then inputting incorrect credentials will lead to a false positive on your next run (it will think you're connected, even though you're not because the credentials were wrong.) Doing it this way prevents that little hiccup from happening.
Also notice the -ErrorAction Stop
at the end of the $O365Session = New-PSSession
line. This prevents it from attempting the Connect-MsolService
line with incorrect credentials.
Connect-MsolService
return an object once connected, and as far as I can see doesn't add new variables. Maybe you can determine that by running one of the module commands and base it on the execution result of the command:
Get-MsolDomain -ErrorAction SilentlyContinue
if($?)
{
"connected"
}
else
{
"disconnected"
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With