#Requires -Version 5.1 <# JbTecWiz Support Centre -- generated fix script Fault : The Teams Meeting button is missing from Outlook Fix : Rule out the three conditions that silently prevent it loading Source: https://jbtecwiz.com/support/win-office-teams-addin Run as : PowerShell as the affected user Expect : 15 minutes Risk : low Reversible : yes WHEN THIS IS THE RIGHT FIX Always check these first. Each takes seconds and each produces the symptom with no error message. HOW TO UNDO IT Nothing changed -- this fix is checks only. This script walks the fix one step at a time and asks before each one. Steps with no command are things you do yourself -- it prints those and waits. Run with -DryRun to print without executing. #> [CmdletBinding()] param( # Print every step and command without running anything. [switch]$DryRun, # Do not ask before each step. Read the script first if you use this. [switch]$Unattended ) $ErrorActionPreference = 'Stop' $script:Failed = 0 function Write-Rule { param([string]$Text) Write-Host '' Write-Host ('-' * 70) -ForegroundColor DarkGray if ($Text) { Write-Host $Text -ForegroundColor Cyan } } function Show-Prose { param([string]$Text, [string]$Colour = "Gray") if (-not $Text) { return } $words = $Text -split "\s+"; $line = " " foreach ($w in $words) { if (($line.Length + $w.Length) -gt 74) { Write-Host $line -ForegroundColor $Colour; $line = " " } $line += "$w " } if ($line.Trim()) { Write-Host $line -ForegroundColor $Colour } } function Invoke-Step { param( [int]$Number, [string]$Do, [string]$Why, [scriptblock]$Command, [switch]$Manual, [string]$Shell = "powershell" ) Write-Rule " Step $Number of 4" Show-Prose $Do "White" if ($Why) { Write-Host ""; Show-Prose $Why "DarkGray" } if ($Manual) { Write-Host '' Write-Host ' -> Do this yourself, then press Enter to carry on.' -ForegroundColor Yellow if (-not $Unattended -and -not $DryRun) { [void](Read-Host) } return } Write-Host '' foreach ($l in ($Command.ToString().Trim() -split "`n")) { Write-Host (" " + $l.Trim()) -ForegroundColor Green } Write-Host '' if ($DryRun) { Write-Host " (dry run -- not executed)" -ForegroundColor DarkGray; return } if (-not $Unattended) { $a = Read-Host " Run this step? [Y]es / [S]kip / [Q]uit" if ($a -match "^[Qq]") { Write-Host " Stopped at your request."; exit 0 } if ($a -match "^[Ss]") { Write-Host " Skipped." -ForegroundColor DarkGray; return } } try { & $Command } catch { $script:Failed++ Write-Host (" Step $Number failed: " + $_.Exception.Message) -ForegroundColor Red Show-Prose "The rest of the fix may depend on this. Read the write-up before carrying on." "Red" if (-not $Unattended) { $c = Read-Host " Carry on anyway? [y/N]" if ($c -notmatch "^[Yy]") { exit 1 } } } } Write-Rule Write-Host ' The Teams Meeting button is missing from Outlook' -ForegroundColor White Write-Host ' Rule out the three conditions that silently prevent it loading' -ForegroundColor Cyan Write-Host '' Write-Host ' Risk: low Reversible 15 minutes' Write-Rule if (-not $Unattended -and -not $DryRun) { $go = Read-Host ' Ready? [y/N]' if ($go -notmatch "^[Yy]") { Write-Host " Nothing was changed."; exit 0 } } Invoke-Step -Number 1 -Do 'Confirm Outlook is not running elevated. An Outlook started as administrator will not load an add-in registered for the standard user.' -Why 'This is the most commonly missed cause. Someone starts Outlook as administrator once to fix something else, the shortcut keeps the setting, and the Teams button is gone from then on with nothing to explain it.' -Command { Get-Process OUTLOOK -IncludeUserName -ErrorAction SilentlyContinue | Select-Object Name, UserName } Invoke-Step -Number 2 -Do 'Confirm Teams is installed and has been signed in at least once on this profile. The add-in is not registered until Teams has run and authenticated.' -Manual Invoke-Step -Number 3 -Do 'Confirm Teams and Office are the same architecture. A 32-bit Teams add-in will not load into 64-bit Outlook.' -Command { Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' | Select-Object Platform } Invoke-Step -Number 4 -Do 'Close both applications completely, start Teams first, let it sign in, then start Outlook.' -Why 'The order matters. Teams performs the registration at startup, and Outlook reads the add-in list at its own startup -- so Outlook first means Outlook looks before Teams has written anything.' -Manual Write-Rule " Confirm it worked" Show-Prose 'The New Teams Meeting button is present on the Calendar tab.' 'White' Write-Rule if ($script:Failed -gt 0) { Write-Host (" Finished with " + $script:Failed + " failed step(s).") -ForegroundColor Yellow Show-Prose 'Read the full write-up at https://jbtecwiz.com/support/win-office-teams-addin' 'Yellow' } else { Write-Host ' Finished.' -ForegroundColor Green } Write-Host '' Show-Prose 'To undo: Nothing changed -- this fix is checks only.' 'DarkGray' Write-Rule