<#
.SYNOPSIS
    Removing Built-in apps from Windows 10 / Windows 8.1 / Windows 8
.DESCRIPTION
    Removing Built-in apps from Windows 10 / Windows 8.1 / Windows 8
.PARAMETER 
    PathtoWim - Path to install.wim
    select - Enable 
.EXAMPLE
    .\removeapps.ps1 -pathtowim c:\10\install.wim
    .\removeapps.ps1 -pathtowim c:\10\install.wim -select $true
    .\removeapps.ps1 -pathtowim c:\10\install.wim -select $true -index 2
.NOTES
    Script name: removeapps.ps1
    Version:     1.2
    Author:      André Picker
    Contact:     @clientmgmt
    DateCreated: 2015-07-22
    LastUpdate:  2016-03-08
    #>

param (
    [string]$pathtowim,
    [bool]$selectapps,
    [string]$index="1"
    )

$Host.UI.RawUI.BackgroundColor = "Black"; Clear-Host
$startdate = (Get-Date).ToString()
$ProgressPreference=’SilentlyContinue’

function CreateTempDirectory {
   $tmpDir = [System.IO.Path]::GetTempPath()
   $tmpDir = [System.IO.Path]::Combine($tmpDir, [System.IO.Path]::GetRandomFileName())
   [System.IO.Directory]::CreateDirectory($tmpDir) | Out-Null
   $tmpDir
   }

try {
    $pathworkfolder = CreateTempDirectory
    Write-Host "Start:" $startdate -ForegroundColor White
    Write-Host "Create temporary directory..." -ForegroundColor Green
    Write-Host "Temporary directory:" $pathworkfolder -ForegroundColor Green
    }

catch [Exception] {
    Write-Host "Error:" $_.Exception.Message -ForegroundColor Red; break
    }

try {
    Write-Host "Mounting Windows-Image..." $pathtowim -ForegroundColor Green
    Write-Host "Please wait..." -ForegroundColor White
    Mount-WindowsImage -Path $pathworkfolder -ImagePath $pathtowim -Index $index | Out-Null
    }

catch [Exception] {
    Write-Host "Mounting Windows-Image failed..." -ForegroundColor Red;
    Write-Host "Error:" $_.Exception.Message -ForegroundColor Red; break
    }

try {
    Write-Host "Remove the following Built-in apps:" -ForegroundColor Green 
    $apps = Get-AppxProvisionedPackage -Path $pathworkfolder | ForEach-Object {

    if($selectapps -eq $true) {
    $call = read-host "Do you really want to delete the following App:" $_.DisplayName "(Y/N)"
    
    if($call -eq "y") {
    Write-Host "Delete:" $_.DisplayName -ForegroundColor Green
    Remove-AppxProvisionedPackage -Path $pathworkfolder -PackageName $_.PackageName
    $call = ""
    }

    else {
    Write-Host "Skipped:" $_.DisplayName -ForegroundColor yellow
    }
    }
    
    else {
    Write-Host "Delete:" $_.DisplayName -ForegroundColor Green
    Remove-AppxProvisionedPackage -Path $pathworkfolder -PackageName $_.PackageName 
    $call = ""
    }
    
    }
    }

catch [Exception] {
    Write-Host "Removing Built-in apps failed..." -ForegroundColor Red;
    Write-Host "Error:" $_.Exception.Message -ForegroundColor Red; break
    }

try {
    Write-Host "Dismount-WindowsImage..." -ForegroundColor Green
    Write-Host "Please wait..." -ForegroundColor White
    Dismount-WindowsImage -Path $pathworkfolder  -Save -CheckIntegrity | Out-Null
    Write-Host "Remove temporary directory..." -ForegroundColor Green
    Remove-Item $pathworkfolder -Recurse -Force | Out-Null
    Write-Host "Complete:" (Get-Date).ToString() -ForegroundColor White
    }

catch [Exception] {
    Write-Host "Error:" $_.Exception.Message -ForegroundColor Red; break
    }