You can easily uninstall all versions of Zoom from the user’s devices using Intune by following the instructions provided in this blog post. I have provided two options for removing Zoom App, First one is by using a Powershell script and second one uses a program called cleanzoom.
cleanzoom is contained within a zip file. By extracting the contents of the zip file, you’ll find the cleanzoom.exe file, you can use that as well to remove the app. Let’s check both the options.
Step-by-Step guide
Table of Contents
Option 1 – Use a Powershell script to remove Zoom
To remove Zoom App using a Powershell script, follow below steps:
STEP 1 – Prepare a Powershell script
I have created a Powershell script and tested it multiple times to make sure its removing Zoom app effectively. You can download removeZoom.ps1 powershell script from my Github Repository: Powershell-Scripts/Zoom/removeZoom.ps1 and save it somewhere on your device.
There are no changes required in this powershell script, you can deploy it as is. Once the deployment is complete, it will remove Zoom app from users devices.
STEP 2 – Deploy Powershell Script
The next step is to deploy this PowerShell script, using Intune admin center. I’ve created a step-by-step guide on how to deploy a PowerShell script using Intune. You can start directly from STEP 2, as we’ve already prepared our PowerShell script in STEP 1.
Another alternative is to use Intune Device Remediations to deploy this PowerShell script. However, you will need two scripts when using Device remediations option. First is Detection script and Second one is remediation script.
You can refer to my other step-by-step guide on deploying a PowerShell script using Intune Device Remediations. The guide is titled “Block USB Drive Access on Windows Using Intune Remediations“.
Option 2 – Use CleanZoom
Second option is to use a CleanZoom program provided by the software vendor for removing Zoom App from users device. Please follow below steps to remove Zoom using CleanZoom.
1. Download Cleanzoom
Download the Cleanzoom utility from Zoom’s support website and Extract its contents into a folder.
2. Prepare a Powershell script file
Now, let’s create a PowerShell script file. In the script below, I’m using ‘cleanzoom.exe‘ with the ‘/silent‘ switch. This combination ensures the Zoom client is uninstalled from the device silently, without any user interactions or prompts displayed on the screen.
- Copy the below line of code into a file called ZoomUninstall.ps1
ZoomUninstall.ps1
.\cleanzoom.exe /silent
3. Create IntuneWin File
To create an Intunewin file, follow these steps. If you face any issues while creating the .intunewin file, refer to my blog post titled “How to Create an IntuneWin File” for guidance.
- Place CleanZoom.exe and Powershell script into one folder [refer to the screenshot below].
- Download Microsoft Win32 Content Prep Tool and Extract its contents into a folder. For simplicity, I have renamed the extracted folder as IntuneContentPrepTool.
- Create an empty folder for example C:\output or anywhere you like.
- Repackage the application folder ZoomUninstall to .intunewin file using IntuneWinAppUtil.exe.
- After the command has successfully completed, you can navigate to the “C:\output” folder where the .intunewin file has been generated. This file will be utilized later when deploying the Intune Windows app (win32).
4. Create a Win32 App deployment on Intune
To deploy the .Intunewin file, we will need to create a Win32 app deployment via Intune. Follow below steps:
- Login on Microsoft Intune Admin center
- Click on Apps and then click on All Apps
- Click on + Add and Select Windows app (Win32) from the app type
App Information
Click on “Select app package file” and browse to .Intunewin file. Provide Information in below mandatory fields. The rest of the fields are optional but can be useful for application documentation and troubleshooting issues.
- Name – Provide a unique name of the application. This name will show up on the Company portal app. For example Zoom Upgrade 5.11
- Description – Provide a useful description.
- Publisher – Provide Publisher information. For example: Zoom.
Program
- Install command: powershell.exe -Executionpolicy Bypass -File .\ZoomUninstall.ps1
- Uninstall command: powershell.exe -Executionpolicy Bypass -File .\ZoomUninstall.ps1
- Install behavior: System
- Device restart behavior: No specific Action
Requirements
You can specify the requirements that devices must meet in order to deploy the app. If your devices are a mix of 32-bit and 64-bit types, then check both the boxes for 32-bit and 64-bit in the Operating system architecture drop-down. Else, just go with 64-bit.
- Operating System Architecture: 64-bit
- Minimum operating system: Select the minimum OS requirement for this deployment.
Detection Rules
- Copy below code into a text file and save it as Check-ZoomInstallation.ps1.
- Rule format: Use a custom detection script.
- Script file: Browse to Check-ZoomInstallation.ps1
- Run script as 32-bit process on 64-bit clients: No
- Enforce script signature check and run script silently: No
Check-ZoomInstallation.ps1
<#
.SYNOPSIS
This script checks for the presence of Zoom installation in user profiles and Program Files.
.DESCRIPTION
The script iterates through user profiles under
C:\Users\ (excluding 'Public') and checks if Zoom is installed
in each user's profile. It also checks the Program Files directory
for Zoom installation. If Zoom is not detected, it exits with code 0 (success).
If detection occurs, it exits with code 1 (failure).
.NOTES
File Name : Check-ZoomInstallation.ps1
Author : Jatin Makhija
Prerequisite : PowerShell 4.0 or later
Copyright 2023 - Cloudinfra.net
#>
# Get a list of user profiles under C:\Users\ (excluding 'Public')
$Users = Get-ChildItem "C:\Users\" | Where-Object { $_.Name -ne 'Public' } | Select-Object -ExpandProperty Name
# Iterate through each user's profile
foreach ($User in $Users) {
try {
# Construct the user's profile path
$ProfilePath = "$env:SystemDrive\Users\$User\AppData\Roaming"
# Check if Zoom is installed in the user's profile
$ZoomInstalled = Test-Path -Path (Join-Path $ProfilePath 'Zoom\bin')
# Check if Zoom is installed in the Program Files directory
$ZoomInstalled2 = Test-Path -Path "C:\Program Files\Zoom\bin"
if (!($ZoomInstalled -or $ZoomInstalled2)) {
# If Zoom is not detected, print a message and exit with code 0 (success)
Write-Output "CloudinfraOutput - Not Detected Zoom on $User's PC"
Exit 0
} else {
# If Zoom is detected, continue to the next user profile
Write-Output "CloudinfraOutput - Detected Zoom on $User's PC"
Exit 1
}
} catch {
# Handle any exceptions and log the error
Write-Output "Error checking $User's profile: $_"
Exit 1
}
}
# If no detection occurred, exit with code 1 (failure)
Exit 1
- Dependencies – Click Next.
- Supersedence – Click Next.
Assignments
Click on Add group to add an Azure AD group containing users or devices. You can also click on Add all users or Add all devices.
Review + Create
Review the deployment and click on Create to start the deployment process.
Monitoring
You can follow below steps to monitor the installation:
From the Microsoft Intune admin center >Apps > All apps. Click on the deployment and check the Overview page which will show the deployment status.
Sync Intune Policies
The device check-in process might not begin immediately. If you’re testing this policy on a test device, you can manually kickstart Intune sync either from the device itself or remotely through the Intune admin center.
Alternatively, you can use PowerShell to force the Intune sync on Windows devices. Another way to trigger the Intune device check-in process is by restarting the device.
End-user Experience
After the deployment is completed successfully, Zoom will be removed from the user’s devices silently in the background. Users may see a pop-up notification related to the deployment, this is configurable using the “Show all toast notifications” setting.
What are you doing to avoid a uninstall and reinstall loop from occurring. I see you didn’t specify any requirements other than the system architecture and operating system
Hi Miguel,
Detection logic will check for the app installation. You could add a unique detection logic which will prevent this loop. I will test this scenario and update.
[UPDATE]:Post has been updated to fix this Issue.
I tried this and for some reason it didn’t remove the Zoom install. I’ve rechecked the steps and ensured the code was correct, still no joy. I and trying this on a single test machine in a specific group, not All Devices (yet…)
Hey Dave, I’ve just updated the blog post. If Cleanzoom isn’t working for you, you can try using a PowerShell script as described in Option 1 and deploy it to your target devices. Hopefully, this will resolve the issue for you.
Thank you. After tinkering with ot a bit, I was finally able to get it to work. The install check script does take a long time for some reason, but eventually it does Uninstaller the Zoom client. Thank you.
I’m happy to hear it’s working! In the end, did you go with Cleanzoom [Option 2] or the PowerShell script [Option 1]?
I used the cleanzoom option. The issue I had was too many test groups, so like anything else, by removing the extra stuff I wasn’t using any more and simplifying the configuration to one machine, one group it worked fine. No with proof of concept, will broaden the coverage to the other machines we want to clean the Zoom client from. Thanks again – this was an easy to follow process. Your instructions were very thorough!