Forum Discussion

merill's avatar
merill
Tin Contributor
Oct 02, 2026

Teams PowerShell no longer works on MacOS - Windows only dependency after 7.9.0

Since MicrosoftTeams 7.9.0, Connect-MicrosoftTeams with the default interactive sign-in fails on macOS before any sign-in prompt appears. It throws System.DllNotFoundException: Unable to load shared library 'kernel32.dll'. Version 7.8.0 connects without error on the same machine. The current release, 8.0.0, has the same problem.

Environment

  • macOS 27.0.1 on Apple silicon (Arm64)
  • PowerShell 7.6.2 on .NET 10.0.8
  • MicrosoftTeams 7.9.0 and 8.0.0 fail; 7.8.0 works

Steps to reproduce

Install-Module MicrosoftTeams -RequiredVersion 8.0.0 -Scope CurrentUser
Import-Module MicrosoftTeams -RequiredVersion 8.0.0
Connect-MicrosoftTeams

Expected result

A browser sign-in opens and the session connects, as it does with 7.8.0.

Actual result

No sign-in prompt appears. The command fails straight away:

System.DllNotFoundException: Unable to load shared library 'kernel32.dll' or one of its dependencies.
   at Microsoft.TeamsCmdlets.Powershell.Connect.TeamsPowerShellSession.GetConsoleWindow()
   at Microsoft.TeamsCmdlets.Powershell.Connect.TeamsPowerShellSession.GetConsoleWindow()
   at Microsoft.TeamsCmdlets.Powershell.Connect.TeamsPowerShellSession.GetConsoleOrTerminalWindow()
   at Microsoft.Identity.Client.PublicClientApplicationBuilder.<>c__DisplayClass12_0.<WithParentActivityOrWindow>b__0()
   at Microsoft.Identity.Client.AcquireTokenInteractiveParameterBuilder.WithParentActivityOrWindowFunc(Func`1 parentActivityOrWindowFunc)
   at Microsoft.Identity.Client.PublicClientApplication.AcquireTokenInteractive(IEnumerable`1 scopes)
   at Microsoft.TeamsCmdlets.Powershell.Connect.TokenProvider.MsalTokenProvider.GetAccessTokenInteractive(ModuleConfiguration config, AzureAccount azAccount, IEnumerable`1 scopes)
   at Microsoft.TeamsCmdlets.Powershell.Connect.AuthenticationFactory.Authenticate(AzureAccount account, AzureEnvironment environment, String tenantId, SecureString password, AuthenticationFlow authFlow, String resource, IEnumerable`1 scopes, String clientAppId)
   at Microsoft.TeamsCmdlets.Powershell.Connect.RMProfileClient.AcquireAccessToken(AzureAccount account, AzureEnvironment environment, String tenantId, SecureString password, AuthenticationFlow authFlow)
   at Microsoft.TeamsCmdlets.Powershell.Connect.RMProfileClient.Login(AzureAccount account, AzureEnvironment environment, String tenantId, SecureString password, AuthenticationFlow authFlow)
   at Microsoft.TeamsCmdlets.Powershell.Connect.ConnectMicrosoftTeams.ProcessRecord()

The full exception message also lists every path .NET tried for kernel32.dll.dylib, libkernel32.dll and so on, all "no such file".

Cause

TeamsPowerShellSession.GetConsoleOrTerminalWindow() calls the Windows GetConsoleWindow function through [DllImport("kernel32.dll")]. The module passes it to MSAL as the parent-window callback (PublicClientApplicationBuilder.WithParentActivityOrWindow), and MSAL calls that callback inside AcquireTokenInteractive. macOS has no kernel32.dll, so the call throws before sign-in starts.

Comparing Microsoft.TeamsCmdlets.PowerShell.Connect.dll across versions:

  • 7.8.0: only the Integrated Windows Authentication path, which runs only on Windows, sets this callback.
  • 7.9.0 and 8.0.0: AzureSessionProvider also sets it when it builds the client application, and that client is used for interactive sign-in on every platform.

A fix would be to set the callback only on Windows, or have GetConsoleOrTerminalWindow() return IntPtr.Zero on other platforms. Linux has no kernel32.dll either, so I'd expect interactive sign-in to fail there too, but I haven't tested it.

Workarounds

  • Stay on 7.8.0:
Install-Module MicrosoftTeams -RequiredVersion 7.8.0 -Scope CurrentUser
Import-Module MicrosoftTeams -RequiredVersion 7.8.0
  • Use device code sign-in. Connect-MicrosoftTeams -UseDeviceAuthentication doesn't call GetConsoleWindow, and on 8.0.0 it gets to the device code prompt without this error.

I found this while testing Maester (maester.dev), which calls Connect-MicrosoftTeams from Connect-Maester -Service Teams and -Service All.

1 Reply

  • Your test isolates the failure to MicrosoftTeams 7.9.0 and later on macOS: the same PowerShell and account work with 7.8.0, while the newer module tries to load the Windows-only kernel32.dll during interactive sign-in. Microsoft’s current documentation says the Teams module supports PowerShell 7.2 or later on all platforms, so that dependency is not expected macOS behavior and points to a module regression rather than your tenant. For now, keep 7.8.0 pinned for production scripts, or use Connect-MicrosoftTeams -UseDeviceAuthentication if that flow succeeds. Remove competing module versions from the session and confirm the loaded version with Get-Module MicrosoftTeams. Do not add or emulate kernel32.dll. Capture the full exception, PowerShell version, macOS version, processor architecture, and module version, then submit them through Microsoft support or the Teams PowerShell feedback channel. Retest a newer released module before unpinning; the documentation does not currently confirm a fix.