If you’re considering implementing Office 365 in your company, you need to know that some add-ons and plug-ins for Microsoft Office applications will not work. There’s not really a good way to tell which ones will or will not work other than trying to upload them to the plug-in page in the admin tools section of the portal. Before you can do that you’ll need to know what plug-ins are being used across your enterprise. That’s where PowerShell comes in, we can scan the registry and generate a nice HTML report from either each machine on your network or just from a select few.

The code below will create an email an HTML report from whatever machine it is executed against. This comes in handy if your network security blocks WinRM.

$userinfo = $env:USERNAME+" "+"on"+" "+$env:COMPUTERNAME+$env:userdnsdomain

Function Get-Plugins {
$searchScopes = "HKLM:\SOFTWARE\Microsoft\Office\Outlook\Addins","HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins", "HKLM:\SOFTWARE\Microsoft\Office\Word\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Word\Addins", "HKLM:\SOFTWARE\Microsoft\Office\Excel\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Excel\Addins", "HKLM:\SOFTWARE\Microsoft\Office\MS Project\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\MS Project\Addins", "HKCU:\SOFTWARE\Microsoft\Office\PowerPoint\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\PowerPoint\Addins"
$searchScopes | % {Get-ChildItem -Path $_ | % {Get-ItemProperty -Path $_.PSPath} | Select-Object @{n="Name";e={Split-Path $_.PSPath -leaf}},FriendlyName,Description} | Sort-Object -Unique -Property name
}

$style = "BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + ""
$report = Get-Plugins|ConvertTo-Html -Head $style|Out-String
Send-MailMessage -SmtpServer yourmailserver -From yourreport@yourdomain.com -To youremail@yourdomain.com -Subject "Office Plugins for $userinfo" -BodyAsHtml:$true -Body $report<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>

If you are able to use WinRM to access all of your computers you can expand this script to invoke the function on every workstation in your AD Forest by scanning for the domain controllers, the using Get-ADComputer with a filter to find all of the workstations. After you have all the workstation names stored in a variable you’ll just need to use “invoke-command” against them to create a comprehensive report.

Import-Module ActiveDirectory 

$domains=(Get-ADForest).domains
$dcs = foreach ($domain in $domains) {Get-ADDomainController -DomainName $domain -Discover -Service PrimaryDC|select -ExpandProperty hostname
}

$systems = foreach ($dc in $dcs) {
Get-ADComputer -properties * -Filter {(OperatingSystem -like "*Windows*") -and (OperatingSystem -NotLike "*Server*")} -Server $domain |select DNSHostName
}

$userinfo = $env:USERNAME+" "+"on"+" "+$env:COMPUTERNAME+$env:userdnsdomain

Function Get-Plugins {
$userinfo = $env:USERNAME+" "+"on"+" "+$env:COMPUTERNAME+$env:userdnsdomain
$searchScopes = "HKLM:\SOFTWARE\Microsoft\Office\Outlook\Addins","HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins", "HKLM:\SOFTWARE\Microsoft\Office\Word\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Word\Addins", "HKLM:\SOFTWARE\Microsoft\Office\Excel\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Excel\Addins", "HKLM:\SOFTWARE\Microsoft\Office\MS Project\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\MS Project\Addins", "HKCU:\SOFTWARE\Microsoft\Office\PowerPoint\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\PowerPoint\Addins"
$searchScopes | % {Get-ChildItem -Path $_ | % {Get-ItemProperty -Path $_.PSPath} | Select-Object @{n="Name";e={Split-Path $_.PSPath -leaf}},FriendlyName,Description} | Sort-Object -Unique -Property name
}

$style = "
BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + "

"

$report = Foreach ($system in $systems) {Invoke-Command -ComputerName $system {Get-Plugins|ConvertTo-Html -Head $style|Group-Object $system|Out-String}}
Send-MailMessage -SmtpServer yourmailserver -From yourreport@yourdomain.com -To youremail@yourdomain.com -Subject "Office Plugins for $userinfo" -BodyAsHtml:$true -Body $report

Either way, you’ll end up with a nice report that will help you obtain and test all the plug-ins being used in your company.

Name FriendlyName Description
ExcelPlugInShell.PowerMapConnect Microsoft Power Map for Excel Power Map 3D Data Visualization Tool for Microsoft Excel.
InteractionVoicemail.OutlookLauncher Automatically initiates playback of Interactive Intelligence voicemails.
Microsoft.VbaAddinForOutlook.1 Microsoft VBA for Outlook Addin
NativeShim.InquireConnector.1 Inquire NativeShim Inquire Addins used by SpreadsheetIQ.
OneNote.OutlookAddin OneNote Notes about Outlook Items Adds Send to OneNote and Notes about this Item buttons to the command bar
OneNote.PowerPointAddinTakeNotesButton OneNote Linked Notes Add-In Adds Take Notes in Onenote button to the command bar
OneNote.PowerPointAddinTakeNotesService OneNote Notes about PowerPoint Presentations Enable OneNote Linked Notes Content Service for PowerPoint
OscAddin.Connect Outlook Social Connector 2013 Connects to social networking sites and provides people, activity, and status information.
PhishMeOutlookReporter.AddinModule PhishMe Reporter PhishMe Outlook Reporter
Search.OutlookToolbar Windows Search Email Indexer Windows Search Email Indexer
TFCOfficeShim.Connect.15 Team Foundation Add-in Team Foundation Add-in
UCAddin.LyncAddin.1 Lync Meeting Add-in for Microsoft Office 2013 Lync Meeting Add-in for Microsoft Office 2013
UCAddin.UCAddin.1
UmOutlookAddin.FormRegionAddin Microsoft Exchange Add-in Exchange support for Unified Messaging, e-mail permission rules, and calendar availability.
VS15ExcelAdaptor Visual Studio Tools for Office Design-Time Adaptor for Excel Visual Studio Tools for Office Design-Time Adaptor for Excel
VS15WordAdaptor Visual Studio Tools for Office Design-Time Adaptor for Word Visual Studio Tools for Office Design-Time Adaptor for Word
Advertisements