Advertisement
Guest User

Windows 10 Remove-AppxPakckages

a guest
Sep 25th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Functions
  2. function Write-LogEntry {
  3.     param(
  4.         [parameter(Mandatory=$true, HelpMessage="Value added to the RemovedApps.log file.")]
  5.         [ValidateNotNullOrEmpty()]
  6.         [string]$Value,
  7.         [parameter(Mandatory=$false, HelpMessage="Name of the log file that the entry will written to.")]
  8.         [ValidateNotNullOrEmpty()]
  9.         [string]$FileName = "RemovedApps.log"
  10.     )
  11.     # Determine log file location
  12.     $LogFilePath = Join-Path -Path $env:windir -ChildPath "Temp\$($FileName)"
  13.     # Add value to log file
  14.     try {
  15.         Add-Content -Value $Value -LiteralPath $LogFilePath -ErrorAction Stop
  16.     }
  17.     catch [System.Exception] {
  18.         Write-Warning -Message "Unable to append log entry to RemovedApps.log file"
  19.     }
  20. }
  21.  
  22. # Get a list of all apps
  23. Write-LogEntry -Value "Starting appx package removal"
  24. $AppArrayList = Get-AppxPackage -PackageTypeFilter Bundle -AllUsers | Select-Object -Property Name, PackageFullName | Sort-Object -Property Name
  25. # White list of appx packages to keep installed
  26. $WhiteListedApps = @(
  27.     "Microsoft.DesktopAppInstaller",
  28.     "Microsoft.StorePurchaseApp"
  29.     "Microsoft.WindowsCalculator",
  30.     "Microsoft.WindowsCommunicationsApps",
  31.     "Microsoft.WindowsStore"
  32. )
  33. # Loop through the list of appx packages
  34. foreach ($App in $AppArrayList) {
  35.     # If application name not in appx package white list, remove AppxPackage and AppxProvisioningPackage
  36.     if (($App.Name -in $WhiteListedApps)) {
  37.         Write-LogEntry -Value "Skipping excluded application package: $($App.Name)"
  38.     }
  39.     else {
  40.         # Gather package names
  41.         $AppPackageFullName = Get-AppxPackage -Name $App.Name | Select-Object -ExpandProperty PackageFullName
  42.         $AppProvisioningPackageName = Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -like $App.Name } | Select-Object -ExpandProperty PackageName
  43.         # Attempt to remove AppxPackage
  44.         try {
  45.             Write-LogEntry -Value "Removing application package: $($AppPackageFullName)"
  46.             Remove-AppxPackage -Package $AppPackageFullName -ErrorAction Stop
  47.         }
  48.         catch [System.Exception] {
  49.             Write-Warning -Message $_.Exception.Message
  50.         }
  51.         # Attempt to remove AppxProvisioningPackage
  52.         if ($AppProvisioningPackageName -ne $null) {
  53.             try {
  54.                 Write-LogEntry -Value "Removing application provisioning package: $($AppProvisioningPackageName)"
  55.                 Remove-AppxProvisionedPackage -PackageName $AppProvisioningPackageName -Online -ErrorAction Stop
  56.             }
  57.             catch [System.Exception] {
  58.                 Write-Warning -Message $_.Exception.Message
  59.             }
  60.         }
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement