Exchange Online has changed, and all the other posts on this topic seem to be outdated.
They are either about the V1 module (with import-pssesion) or about connect-msol (which is O365, NOT exchange online)
We need Connect-ExchangeOnline to work from GUI applications.
When running this command in a normal powershell or powershell_ise window, it brings up a browsed based MFA-capable logon prompt.
When running thie command from PowerShell Studio 2021 or a GUI application deployed with it, it just hangs.
I tried the -UseMultiTreading parameter with $true and $false and it did not make any difference, neither did changing STA mode to on or off. This logon prompt box just doesn't come (i've checked if its behind any other windows, it isn't)
I'm really struggling to make a GUI that can perform some operations on exchange online.
I can make a logon box show up by executing powershell.exe -command "&{connect-exchangeonline}" which isn't helpful since I need to connection from the session of the gui itself. I tried dot-sourcing a .ps1 from the gui script (instead of calling powershell.exe) but that doesn't help. problem seems to be in the powershell engine used by powershell studio. compiling different types of .exe appiclications does not seem to fix it.
there is no crash or error, the application just hangs when the connect-exchangeonline command is executed until killed.
Product version 2021 5.8.187
OS version Windows Server 2019
PSVersionTable version 5.1.17763.1
Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
Forum rules
Do not post any licensing information in this forum.
Any code longer than three lines should be added as code using the 'Select Code' dropdown menu or attached as a file.
Do not post any licensing information in this forum.
Any code longer than three lines should be added as code using the 'Select Code' dropdown menu or attached as a file.
- NicovanderStok
- Posts: 2
- Last visit: Thu Jul 14, 2022 4:35 am
- Alexander Riedel
- Posts: 8488
- Last visit: Tue Apr 16, 2024 8:42 am
- Been upvoted: 37 times
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
It can be simply an incompatible threading model, which you would need to ask Microsoft about. I am assuming some type of module is involved here, but you didn't specify.
Another very common reason for hanging processes accessing remote locations are remoting permissions, firewalls, elevation etc.
Check your system logs if you find any clues there.
Another very common reason for hanging processes accessing remote locations are remoting permissions, firewalls, elevation etc.
Check your system logs if you find any clues there.
Alexander Riedel
SAPIEN Technologies, Inc.
SAPIEN Technologies, Inc.
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
I'm looking at the exact same issue.
I'm trying to write a GUI for user creation that is required to check the Exchange Online instance to confirm the email address availability. I cannot seem to use the V2 cmdlets (ExchangeOnlineManagement module from PSGallery).
I can use the old methods of providing the ConnectionURI and username/password. This is using BASIC AUTHENTICATION which MS will be disabling soon (2021/2022 ??).
I found a method which may help NicovanderStok - it doesn't use the EXO cmdlets but does use MODERN AUTH
I tried to add some code here but was denied because I haven't posted more than 5 times - how ridiculous !!
All that said, my issue is trying to use the EXO cmdlets from within a GUI. The normal logon process is
which then prompts with the MFA enabled browser. This does not occur through a GUI.
I tried to use certificate based authentication. This involves creating an AzureAD app with required permissions and assigning a certificate to it. I can then use
from within a Powershell shell or ISE with no issues. Through the GUI it just seems to hang.
I'm trying to write a GUI for user creation that is required to check the Exchange Online instance to confirm the email address availability. I cannot seem to use the V2 cmdlets (ExchangeOnlineManagement module from PSGallery).
I can use the old methods of providing the ConnectionURI and username/password. This is using BASIC AUTHENTICATION which MS will be disabling soon (2021/2022 ??).
I found a method which may help NicovanderStok - it doesn't use the EXO cmdlets but does use MODERN AUTH
I tried to add some code here but was denied because I haven't posted more than 5 times - how ridiculous !!
All that said, my issue is trying to use the EXO cmdlets from within a GUI. The normal logon process is
Code: Select all
Connect-ExchangeOnline -userprincipalname <upn>
I tried to use certificate based authentication. This involves creating an AzureAD app with required permissions and assigning a certificate to it. I can then use
Code: Select all
Connect-ExchangeOnline -CertificateFilepath <certFilePath> -CertificatePassword <certPassword> -AppID <appID> -Org <org>
- Alexander Riedel
- Posts: 8488
- Last visit: Tue Apr 16, 2024 8:42 am
- Been upvoted: 37 times
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
"I tried to add some code here but was denied because I haven't posted more than 5 times - how ridiculous !!"
Sorry if you find that ridiculous. We don't like staying up all hours of the night removing SPAM posts, so unfortunately that is necessary.
Try to create the connection BEFORE the form is created. It is possible that you cannot do that from an event handler.
Sorry if you find that ridiculous. We don't like staying up all hours of the night removing SPAM posts, so unfortunately that is necessary.
Try to create the connection BEFORE the form is created. It is possible that you cannot do that from an event handler.
Alexander Riedel
SAPIEN Technologies, Inc.
SAPIEN Technologies, Inc.
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
Hello,Alexander Riedel wrote: ↑Wed Mar 24, 2021 3:49 pm "I tried to add some code here but was denied because I haven't posted more than 5 times - how ridiculous !!"
Sorry if you find that ridiculous. We don't like staying up all hours of the night removing SPAM posts, so unfortunately that is necessary.
Try to create the connection BEFORE the form is created. It is possible that you cannot do that from an event handler.
i was facing the same issue and creating the connection BEFORE the form is created indeed solved this problem.
Thanks for the hint
- escott0699
- Posts: 25
- Last visit: Thu Jan 12, 2023 7:52 am
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
I am running into a similar issue but my user is not MFA enabled. When running Connect-ExchangeOnline -Credential $MSOLCred the script just hangs loading the online connection. I've tried moving the connection to just about everywhere i can think of but no matter what the entire GUI is frozen once it reaches that line of code.
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
I have run into this problem as well. I think I have narrowed it down to what is causing it and a few solutions.
It seems to be related to 2.0.4 version of the ExchangeOnlineManagement module and the placement of the Connect-ExchangeOnline cmdlet in the script, and Windows PowerShell 5.1. I have found that using 2.0.3 or earlier does not have this problem. With 2.0.4, here is some simple code to test/confirm the problem:
Add-Type -AssemblyName System.Windows.Forms
$FormMain = New-Object System.Windows.Forms.Form
Connect-ExchangeOnline
The problem is the "Add-Type" cmdlet. If you call this before the Connect-ExchangeOnline cmdlet, the problem will happen (in 2.0.4). If you call Connect-ExchangeOnline before any and all Add-Type cmdlets, then it will work.
If you use PowerShell 7.x, then it also works.
So my suggestions are to use 2.0.3 (but then you use any new benefits of newer module releases) or re-order your code to make sure you authenticate first and then use the Add-Type cmdlets. Or switch to PowerShell 7.x.
Hope this helps.
NK
It seems to be related to 2.0.4 version of the ExchangeOnlineManagement module and the placement of the Connect-ExchangeOnline cmdlet in the script, and Windows PowerShell 5.1. I have found that using 2.0.3 or earlier does not have this problem. With 2.0.4, here is some simple code to test/confirm the problem:
Add-Type -AssemblyName System.Windows.Forms
$FormMain = New-Object System.Windows.Forms.Form
Connect-ExchangeOnline
The problem is the "Add-Type" cmdlet. If you call this before the Connect-ExchangeOnline cmdlet, the problem will happen (in 2.0.4). If you call Connect-ExchangeOnline before any and all Add-Type cmdlets, then it will work.
If you use PowerShell 7.x, then it also works.
So my suggestions are to use 2.0.3 (but then you use any new benefits of newer module releases) or re-order your code to make sure you authenticate first and then use the Add-Type cmdlets. Or switch to PowerShell 7.x.
Hope this helps.
NK
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
Oops, sorry I meant to say the "New-Object" cmdlet, not the "Add-Type" cmdlet. If you try to authenticate after using the "New-Object" cmdlet, in Windows PowerShell 5.1 and 2.0.4 version of the module is when it fails.
So make sure you authenticate first before using New-Object.
NK
So make sure you authenticate first before using New-Object.
NK
- michaelroach
- Posts: 1
- Last visit: Tue Feb 13, 2024 11:48 am
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
How do you put the Authentication before the Form Load?
I managed to get it to Prompt for the account with PowerShell 7 and it tells me to close the window after it authenticates, but then my form never loads.
I cannot for the life of me get the Connect-ExchangeOnline to work.. Its a simple gui that admin enters users email address to set quotas, LRH, and run simple reports that exports to CSV. Worked all fine until the new version and Connect-ExchangeOnlineShell wouldnt work anymore either..
I managed to get it to Prompt for the account with PowerShell 7 and it tells me to close the window after it authenticates, but then my form never loads.
I cannot for the life of me get the Connect-ExchangeOnline to work.. Its a simple gui that admin enters users email address to set quotas, LRH, and run simple reports that exports to CSV. Worked all fine until the new version and Connect-ExchangeOnlineShell wouldnt work anymore either..
Re: Connect-ExchangeOnline doesn't bring up MFA Capable browser based logonbox when executed from PowerShell Studio GUI
Any code outside of any event will execute before the form is created. Normally I put code like that at the top of the edit pane before the form load event but it can be placed anywhere outside of and event code. The code entered will be executed in a top-down way in the order it is declared in the file. All variables created at that level will be script scope variables.
You can also use a form project and initialize all code from "globals" which executes before any form function is called.
You can also use a form project and initialize all code from "globals" which executes before any form function is called.