Disable-SkypePlugin.ps1

<#PSScriptInfo
 
.VERSION 1.0
 
.GUID 014cadd4-530c-4b46-ad05-355caed388b8
 
.AUTHOR Aaron Guilmette
 
.COMPANYNAME Microsoft
 
.COPYRIGHT 2021
 
.TAGS
 
.LICENSEURI
 
.PROJECTURI https://www.undocumented-features.com/2020/05/11/manually-disable-skype-for-business-com-add-in-for-outlook/
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
 
.DESCRIPTION
Disable the Skype for Business Outlook Plug-In.
 
.PRIVATEDATA
 
#>


<#
.SYNOPSIS
Disable Skype for Business Plug-In
 
.PARAMETER CloseOutlook
Force closing of Outlook prior to running.
 
.PARAMETER Update
Update the value to 0. Current value is written to -LoadBehavior in appropriate
registry key.
 
.NOTES
See https://support.microsoft.com/en-us/help/3097122/skype-meeting-control-is-not-displayed-on-outlook-2016 for
more information on Skype plug-in.
#>


[cmdletbinding()]
param (
    [switch]$Update,
    [switch]$CloseOutlook = $true
)

# Unload Skype for Business plug-in from Outlook
try
{
    # Test to see if Outlook is running; if so, close.
    If ($CloseOutlook)
    {
        If (Get-Process -Name Outlook -ea silentlycontinue)
        {
            Stop-Process -Name Outlook -Force; sleep 10
        }
    }
}
catch
{ "Couldn't close Outlook"}

# Click2Run Location 1, 32-bit Office on 32-bit Windows OR 64-bit Office on 64-bit Windows
$c2r1 = (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior
If ($c2r1 -ne $null) { Write-Verbose "Current value of C2R1 HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is $($c2r1)."}
If ($c2r1 -eq "0" -and $Update)
{
    $Resultc2r1a = New-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $c2r1 | Out-Null
    $Resultc2r1b = Set-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0
    <#catch
    {
        Write-Verbose "Unable to set value LoadBehavior in HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1"
    }#>

}
if ($c2r1 -eq "0" -and $Update)
{
    Write-Verbose "C2R1 HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is already set to 0."
}
    
# Click2Run Location 2, 32-bit Office on 64-bit Windows
$Error.Clear()
$c2r2 = (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior
If ($c2r2 -ne $null) { Write-Verbose "Current value of C2R2 HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is $($c2r2)." }
If ($c2r2 -ne 0 -and $Update)
{
    $Resultc2r2a = New-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $c2r2 | Out-Null
    $Resultc2r2b = Set-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0
    If ($Error) { Write-Verbose $Error.Exception.ToString() }
}

if ($c2r2 -eq "0" -and $Update)
{
    Write-Verbose "C2R2 HKLM:SOFTWARE\Microsoft\Office\ClickToRun\Registry\Machine\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is already set to 0."
}

# MSI Location 1, 32-bit Office on 32-bit Windows OR 64-bit Office on 64-bit Windows
$Error.Clear()
$msi1 = (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior
If ($msi1 -ne $null) { Write-Verbose "MSI1 Current value of HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is $($msi1)." }
If ($msi1 -ne $null -and $Update)
{
    $Resultmsi1a = New-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $msi1 | Out-Null
    $Resultmsi1b = Set-ItemProperty "HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0
    If ($Error) { Write-Verbose $Error.Exception.ToString() }
}

if ($msi1 -eq "0" -and $Update)
{
    Write-Verbose "HKLM:SOFTWARE\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is already set to 0."
}

# MSI Location 2, 32-bit Office on 64-bit Windows
$Error.Clear()
$msi2 = (Get-ItemProperty "HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior
If ($msi2 -ne $null) { Write-Verbose "Current value of HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is $($msi2)." }
If ($msi2 -ne "0" -and $Update)
{
    $Resultmsi2a = New-ItemProperty "HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $msi2 | Out-Null
    $Resultmsi2b = Set-ItemProperty "HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0
    If ($Error) { Write-Verbose $Error.Exception.ToString() }
}

if ($msi2 -eq "0" -and $Update)
{
    Write-Verbose "MSI2 HKLM:SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins\UcAddin.LyncAddin.1\LoadBehavior is already set to 0."
}


# HKCU for Skype Meeting Add-In
$Error.Clear()
$hkcuval = (Get-ItemProperty "HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1" -ErrorAction SilentlyContinue).LoadBehavior
if ($hkcuval -ne $null)
{
    Write-Verbose "Current value of HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1\LoadBehavior is $($hkcuval)."
}
if ($hkcuval -ne "0" -and $Update)
{
    $Resulthkcua = New-ItemProperty "HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1" -PropertyType DWORD -Name "-LoadBehavior" -Value $hkcuval | Out-Null
    $Resulthkcub = Set-ItemProperty "HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1" -Name "LoadBehavior" -Value 0
    If ($Error) { Write-Verbose $Error.Exception.ToString() }
}

if ($hkcuval -eq "0" -and $Update)
{
    Write-Verbose "HKCU:Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1\LoadBehavior is already set to 0."
}