Friday, 20 October 2017 19:27

Removing Quick Assist App Using MDT

Written by
Rate this item
(11 votes)


Quite a few of my blog posts start off with a customer engagement - this one is no different. This week I held another Windows 10 deployment workshop in Munich where I emphasized how Microsoft Deployment Toolkit is a powerful OS deployment tool which allows a high grade of Windows 10 golden image customization. One of the questions was "Is it possible to remove the "Quick Assist" application from a Windows 10 "Fall Creators Update" (1709) image using Microsoft Deployment Toolkit? The answer was a resounding "yes" because #PowerShellIsKing

Initially introduced with last year's Windows 10 Anniversary Update, this remote-access application allows two computers to connect over the internet. Needless to say, in an Enterprise scenario, the usefulness of this application is somewhat limited. The good news is - unlike the new "Mixed Reality Portal" app, which is considered a system app and can’t be removed (believe me, I tried) - this particular app can be uninstalled. A couple of months ago, Michael Niehaus published a blog post detailing how to remove the "Contact Support" app from a Windows 10 image. This is a non-issue now as - starting with Windows 10 1709 - "Contact Support" became a provisioned application package, but the same methodology applies.

As you may or may not know. the "Quick Assist" app is a Features on Demand v2 (Capabilities) package, that can be added or removed at any time. There are several different ways when it comes to dealing with Features on Demand v2 - my favorite approach is to remove the "Quick Assist" app during the Post-Install phase of a Microsoft Deployment Toolkit build & capture task sequence. Simply run this PowerShell script as part of your MDT task sequence and the app should be gone:

# Determine where to do the logging 
$tsenv = New-Object -COMObject Microsoft.SMS.TSEnvironment 
$logPath = $tsenv.Value("LogPath")  
$logFile = "$logPath\$($myInvocation.MyCommand).log"
$ScriptName = $MyInvocation.MyCommand

# Create Logfile
Write-Output "$ScriptName - Create Logfile" > $logFile
Function Logit($TextBlock1){
	$TimeDate = Get-Date
	$OutPut = "$ScriptName - $TextBlock1 - $TimeDate"
	Write-Output $OutPut >> $logFile

# Start Main Code Here
$OSDisk = $tsenv.Value("OSDisk")
$ScratchDir = $tsenv.Value("OSDisk") + "\Windows\temp"
$RunningFromFolder = $MyInvocation.MyCommand.Path | Split-Path -Parent 
$ListOfCapabilities = @("App.Support.QuickAssist~~~~")

. Logit "Running from $RunningFromFolder"
. Logit "Property OSDisk is now $OSDisk"
. Logit "Property ScratchDir is now $ScratchDir"

ForEach ($App in $ListOfCapabilities) {
    . Logit "Removing capability: $App"
    dism.exe /Image:$OSDisk /Remove-Capability /CapabilityName:$App /ScratchDir=$ScratchDir


Note: As Michal notes in his blog post, once the app has been removed, it shouldn’t come back when a new feature update is installed.

Read 1167 times Last modified on Sunday, 22 October 2017 18:47

Leave a comment

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.

Recent Posts