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 |