Forum Discussion

ColeRiese's avatar
ColeRiese
Copper Contributor
Apr 14, 2023
Solved

PowerShell - ActiveX Control Error

Greetings,

We have a script that connects to Exchange Online. The first time we run the script, it kicks back this error: "ActiveX control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated because the current thread is not in a single-threaded apartment." However, if we run the script a 2nd time, it works fine. What could be causing this? And how do I fix the script so that we don't have to keep running it twice?

Thanks,

Cole Riese

  • ColeRiese Does your script utilize any forms? (e.g. $form1 = New-Object System.Windows.Forms.Form)

     

    I just got done going through this and was finally able to work around it. It is my understanding that there is a bug in newer versions of the Exchange Online module. If you are using any sort of forms in your script and those forms are called before you connect to Exchange Online it generates the error. If you connect to Exchange Online first, then the form is called, there is no issue.

     

    I had to tweak our script to connect to Exchange Online first, then add a prefix to our on-prem exchange session to prevent any conflicts. Here are a couple links I found during my search that helped me track down the issue. 

     

    https://twitter.com/DanielSjoegren/status/1406954671248396292

    https://www.sapien.com/forums/viewtopic.php?t=15297

    https://www.sapien.com/forums/viewtopic.php?t=16213&sid=b1fcd3f71b3ada945eeb75f4dbc4490f&start=10

     

    Hope this helps!

     

19 Replies

  • Pete_Martin's avatar
    Pete_Martin
    Copper Contributor

    ColeRiese Does your script utilize any forms? (e.g. $form1 = New-Object System.Windows.Forms.Form)

     

    I just got done going through this and was finally able to work around it. It is my understanding that there is a bug in newer versions of the Exchange Online module. If you are using any sort of forms in your script and those forms are called before you connect to Exchange Online it generates the error. If you connect to Exchange Online first, then the form is called, there is no issue.

     

    I had to tweak our script to connect to Exchange Online first, then add a prefix to our on-prem exchange session to prevent any conflicts. Here are a couple links I found during my search that helped me track down the issue. 

     

    https://twitter.com/DanielSjoegren/status/1406954671248396292

    https://www.sapien.com/forums/viewtopic.php?t=15297

    https://www.sapien.com/forums/viewtopic.php?t=16213&sid=b1fcd3f71b3ada945eeb75f4dbc4490f&start=10

     

    Hope this helps!

     

    • Nodri11486's avatar
      Nodri11486
      Copper Contributor

      This unfortunately is not working for me. My script was working just fine prior to today..Now I get this error message when trying to run the .exe. It works fine if I just run it via .ps1 script. 

    • ColeRiese's avatar
      ColeRiese
      Copper Contributor
      Hi Harm, I am running PS version 5. Thanks!
      • Could you run this in an admin command prompt?
        powershell.exe -noprofile
        update-module ExchangeOnlineManagement
        connect-Exchangeonline

Resources