Removing Quick Assist App Using MDT
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~~~~0.0.1.0")
. 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.