In a previous article, we had a look on how to get your office add-ins from the infrastructure by using SCCM and PowerShell. As mentioned, there are multiple ways in which you can achieve this so don’t take this article as the only way.
PowerShell Script
With this in mind, as we did with SCCM, we must first create a PowerShell script which gets all the Office Add-ins and writes them in a CSV. The CSV is stored on a network share that is accessible to everybody. The script checks all Office registry keys to gather the add-ins, and also has a check to see if the CSV is currently in use by another user (because multiple users will write at the same time in this file). The code for the script is:
function Check-FileOpen { param ( [parameter(Mandatory=$true)] [string]$Path ) $oFile = New-Object System.IO.FileInfo $Path if ((Test-Path -Path $Path) -eq $false) { $false return } try { $oStream = $oFile.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None) if ($oStream) { $oStream.Close() } $false } catch { # file is locked by a process. $true } } $searchScopes = "HKLM:\SOFTWARE\Microsoft\Office\Outlook\Addins","HKCU:\SOFTWARE\Microsoft\Office\Outlook\Addins","HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Outlook\Addins", "HKLM:\SOFTWARE\Microsoft\Office\Word\Addins","HKCU:\SOFTWARE\Microsoft\Office\Word\Addins", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Office\Word\Addins", "HKLM:\SOFTWARE\Microsoft\Office\Excel\Addins","HKCU:\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" $test = $searchScopes | % {Get-ChildItem -Path $_ | % {Get-ItemProperty -Path $_.PSPath} | Select-Object @{n="Name";e={Split-Path $_.PSPath -leaf}},FriendlyName,Description} | Sort-Object -Unique -Property name foreach ($tst in $test){ $test | Add-Member -Name 'Computer Name' -Type NoteProperty -Value $env:COMPUTERNAME } write-host $test while ((Check-FileOpen -Path "C:\Users\YOURUSER\Desktop\test.csv")){ Start-Sleep -s 15 Write-Host "File in Use" } Write-Host "File Not in Use" $test | export-csv -Path C:\Users\YOURUSER\Desktop\test.csv -NoTypeInformation -Append
Don’t forget to modify the location where the script is saved and where the script checks if it’s opened/in use or not. Now that the script is ready, all we need to do is deploy it via Intune.
Create and Deploy Script in Intune
In Intune, you have multiple choices to deploy a script, for example create an .intunewin file and push it, or we can use the native Scripts deployment method from Intune. First, navigate to the start page of Intune.
Next, navigate to Devices > Scripts:
Give it a Name and a Description:
Next, select the script from your local machine. In our case, we wanted the script to run in the user context, because we are searching through user registry keys, so we checked Yes for “Run this script using the logged on credentials”. We also want the script to run in 64-bit environment, so we selected Yes for “Run script in 64 bit PowerShell Host”:
The last step is to select the groups you want the script to be deployed, or the groups you want to exclude from the deployment:
Review and add your script/deployment:
At the end, after the script is executed on the users machine, you should have a CSV populated with all the necessary information: