Jump to content

Recommended Posts

Posted

Hi there,

I would be really grateful if anyone could share their methods for removing annoying Windows 11 bloatware from their Intune-connected systems.

By default, we seem to get Xbox, Solitaire & Casual games, Microsoft Clipchamp, LinkedIn and possibly more.

I tried making a few PowerShell scripts to deal with this, but most seem to fail.

 

Has anyone found a way around this? We are running Windows 11 24H2 26100.3775.

 

Here is an example of one of the ps1 scripts I tried....
 

# Remove Windows 11 Bloatware and also Learn about this picture ico on desktop for all users, with Windows Event Logging
# Ensure the script runs with elevated permissions
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Host "Please run this script as Administrator!" -ForegroundColor Red
    exit
}

Write-Host "Starting bloatware & Windows Spotlight removal process..." -ForegroundColor Green

# Register an Event Source (if not already present)
$EventSource = "IntuneBloatwareRemoval"
if (-not [System.Diagnostics.EventLog]::SourceExists($EventSource)) {
    New-EventLog -LogName Application -Source $EventSource
}

# Log Start of Script Execution
Write-EventLog -LogName Application -Source $EventSource -EntryType Information -EventId 1000 -Message "Starting bloatware & Windows Spotlight removal process."

# List of apps to remove
$BloatwareApps = @(
    "*Xbox*",
    "*LinkedIn*",
    "*Clipchamp*",
    "*Solitaire*",
    "*Weather*",
    "*News*",
    "*Paint3D*",
    "*MixedRealityPortal*",
    "*Skype*",
    "*People*",
    "*WindowsTips*"
)

# Remove provisioned packages (for new users)
Write-Host "Removing provisioned packages for new users..." -ForegroundColor Yellow
foreach ($App in $BloatwareApps) {
    try {
        Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -like $App} | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
        Write-EventLog -LogName Application -Source $EventSource -EntryType Information -EventId 1001 -Message "Provisioned package removed: $App"
    } catch {
        Write-EventLog -LogName Application -Source $EventSource -EntryType Error -EventId 1002 -Message "Error removing provisioned package: $App - $($_.Exception.Message)"
    }
}

# Remove installed packages (for existing users)
Write-Host "Removing installed packages for existing users..." -ForegroundColor Yellow
$Profiles = Get-CimInstance -ClassName Win32_UserProfile | Where-Object { $_.Special -eq $false }

foreach ($Profile in $Profiles) {
    if ($Profile.SID -and $Profile.LocalPath) {
        Write-EventLog -LogName Application -Source $EventSource -EntryType Information -EventId 1009 -Message "Processing user profile: $($Profile.LocalPath) with SID: $($Profile.SID)"
        try {
            foreach ($App in $BloatwareApps) {
                $Packages = Get-AppxPackage -User $Profile.SID | Where-Object {$_.Name -like $App}
                foreach ($Package in $Packages) {
                    Remove-AppxPackage -Package $Package.PackageFullName -User $Profile.SID -ErrorAction SilentlyContinue
                    Write-EventLog -LogName Application -Source $EventSource -EntryType Information -EventId 1003 -Message "Removed app for user $($Profile.LocalPath): $Package.PackageFullName"
                }
            }
            Write-Host "Removed apps for user: $($Profile.LocalPath)" -ForegroundColor Green
        } catch {
            Write-EventLog -LogName Application -Source $EventSource -EntryType Error -EventId 1004 -Message "Failed to remove apps for user: $($Profile.LocalPath) - $($_.Exception.Message)"
        }
    } else {
        Write-EventLog -LogName Application -Source $EventSource -EntryType Warning -EventId 1005 -Message "Skipping profile with invalid SID or path: $($Profile.LocalPath)"
    }
}

# Remove "Learn about this picture" Windows Spotlight icon
Write-Host "Removing 'Learn about this picture' desktop icon..." -ForegroundColor Yellow

$RegPaths = @(
    "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{2cc5ca98-6485-489a-920e-b3e88a6ccce3}",
    "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel",
    "HKLM:\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{2cc5ca98-6485-489a-920e-b3e88a6ccce3}",
    "HKLM:\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel"
)

foreach ($RegPath in $RegPaths) {
    if (Test-Path $RegPath) {
        try {
            Remove-Item -Path $RegPath -Recurse -ErrorAction SilentlyContinue
            New-ItemProperty -Path $RegPath -Name "{2cc5ca98-6485-489a-920e-b3e88a6ccce3}" -PropertyType DWORD -Value 1 -Force -ErrorAction SilentlyContinue
            Write-EventLog -LogName Application -Source $EventSource -EntryType Information -EventId 1006 -Message "Removed Windows Spotlight registry: $RegPath"
        } catch {
            Write-EventLog -LogName Application -Source $EventSource -EntryType Error -EventId 1007 -Message "Failed to modify registry: $RegPath - $($_.Exception.Message)"
        }
    }
}

# Log completion
Write-EventLog -LogName Application -Source $EventSource -EntryType Information -EventId 1008 -Message "Bloatware and Windows Spotlight removal completed successfully."

Write-Host "All specified apps and Windows Spotlight have been successfully removed!" -ForegroundColor Green

 

 

Screenshot 2025-04-30 110819.png

Posted (edited)

For us we did the AppX package in the script above manually (i.e. we had a full image and I picked which ones to remove based on what we didn't need)

 

Get-AppXPackage *BingNews* | Remove-AppXPackage -AllUsers  

 

Had to use -AllUsers or it didn't work - there is a list online (or you can do Get-AppXPackage *string* 

 

 

We used to do a fully stripped image but back in the Win Se7en days  I remember having an issue when we needed to install some software for a teacher and it needed a part of Windows we had removed. These days I'm sure the script would be fine (I'd have used it if I knew about it) but you can choose what you want to keep/remove this way (Put the powershell lines as part of our task sequence so it automatically does it)

Edited by mikes
  • Like 1
Posted

At the minute we run this script in our SCCM task sequence whilst the machine is still in the WinPE phase:

 

# ***************************************************************************
# 
# File:      RemoveApps.ps1
# 
# Version:   1.2 
# 
# Author:    Michael Niehaus 
#
# Purpose:   Removes some or all of the in-box apps on Windows 8, Windows 8.1,
#            or Windows 10 systems.  The script supports both offline and
#            online removal.  By default it will remove all apps, but you can
#            provide a separate RemoveApps.xml file with a list of apps that
#            you want to instead remove.  If this file doesn't exist, the
#            script will recreate one in the log or temp folder, so you can
#            run the script once, grab the file, make whatever changes you
#            want, then put the file alongside the script and it will remove
#            only the apps you specified.
#
# Usage:     This script can be added into any MDT or ConfigMgr task sequences.
#            It has a few dependencies:
#              1.  For offline use in Windows PE, the .NET Framework, 
#                  PowerShell, DISM Cmdlets, and Storage cmdlets must be 
#                  included in the boot image.
#              2.  Script execution must be enabled, e.g. "Set-ExecutionPolicy
#                  Bypass".  This can be done via a separate task sequence 
#                  step if needed, see http://blogs.technet.com/mniehaus for
#                  more information.
#
# ------------- DISCLAIMER -------------------------------------------------
# This script code is provided as is with no guarantee or waranty concerning
# the usability or impact on systems and may be used, distributed, and
# modified in any way provided the parties agree and acknowledge the 
# Microsoft or Microsoft Partners have neither accountabilty or 
# responsibility for results produced by use of this script.
#
# Microsoft will not provide any support through any means.
# ------------- DISCLAIMER -------------------------------------------------
#
# ***************************************************************************


# ---------------------------------------------------------------------------
# Initialization
# ---------------------------------------------------------------------------

if ($env:SYSTEMDRIVE -eq "X:")
{
  $script:Offline = $true

  # Find Windows
  $drives = get-volume | ? {-not [String]::IsNullOrWhiteSpace($_.DriveLetter) } | ? {$_.DriveType -eq 'Fixed'} | ? {$_.DriveLetter -ne 'X'}
  $drives | ? { Test-Path "$($_.DriveLetter):\Windows\System32"} | % { $script:OfflinePath = "$($_.DriveLetter):\" }
  Write-Verbose "Eligible offline drive found: $script:OfflinePath"
}
else
{
  Write-Verbose "Running in the full OS."
  $script:Offline = $false
}


# ---------------------------------------------------------------------------
# Get-LogDir:  Return the location for logs and output files
# ---------------------------------------------------------------------------

function Get-LogDir
{
  try
  {
    $ts = New-Object -ComObject Microsoft.SMS.TSEnvironment -ErrorAction Stop
    if ($ts.Value("LogPath") -ne "")
    {
      $logDir = $ts.Value("LogPath")
    }
    else
    {
      $logDir = $ts.Value("_SMSTSLogPath")
    }
  }
  catch
  {
    $logDir = $env:TEMP
  }
  return $logDir
}

# ---------------------------------------------------------------------------
# Get-AppList:  Return the list of apps to be removed
# ---------------------------------------------------------------------------

function Get-AppList
{
  begin
  {
    # Look for a config file.
    $configFile = "$PSScriptRoot\RemoveApps11.xml"
    if (Test-Path -Path $configFile)
    {
      # Read the list
      Write-Verbose "Reading list of apps from $configFile"
      $list = Get-Content $configFile
    }
    else
    {
      # No list? Build one with all apps.
      Write-Verbose "Building list of provisioned apps"
      $list = @()
      if ($script:Offline)
      {
        Get-AppxProvisionedPackage -Path $script:OfflinePath | % { $list += $_.DisplayName }
      }
      else
      {
        Get-AppxProvisionedPackage -Online | % { $list += $_.DisplayName }
      }

      # Write the list to the log path
      $logDir = Get-LogDir
      $configFile = "$logDir\RemoveApps.xml"
      $list | Set-Content $configFile
      Write-Information "Wrote list of apps to $logDir\RemoveApps.xml, edit and place in the same folder as the script to use that list for future script executions"
    }

    Write-Information "Apps selected for removal: $list.Count"
  }

  process
  {
    $list
  }

}

# ---------------------------------------------------------------------------
# Remove-App:  Remove the specified app (online or offline)
# ---------------------------------------------------------------------------

function Remove-App
{
  [CmdletBinding()]
  param (
        [parameter(Mandatory=$true,ValueFromPipeline=$true)]
        [string] $appName
  )

  begin
  {
    # Determine offline or online
    if ($script:Offline)
    {
      $script:Provisioned = Get-AppxProvisionedPackage -Path $script:OfflinePath
    }
    else
    {
      $script:Provisioned = Get-AppxProvisionedPackage -Online
      $script:AppxPackages = Get-AppxPackage
    }
  }

  process
  {
    $app = $_

    # Remove the provisioned package
    Write-Information "Removing provisioned package $_"
    $current = $script:Provisioned | ? { $_.DisplayName -eq $app }
    if ($current)
    {
      if ($script:Offline)
      {
        $a = Remove-AppxProvisionedPackage -Path $script:OfflinePath -PackageName $current.PackageName
      }
      else
      {
        $a = Remove-AppxProvisionedPackage -Online -PackageName $current.PackageName
      }
    }
    else
    {
      Write-Warning "Unable to find provisioned package $_"
    }

    # If online, remove installed apps too
    if (-not $script:Offline)
    {
      Write-Information "Removing installed package $_"
      $current = $script:AppxPackages | ? {$_.Name -eq $app }
      if ($current)
      {
        $current | Remove-AppxPackage
      }
      else
      {
        Write-Warning "Unable to find installed app $_"
      }
    }

  }
}


# ---------------------------------------------------------------------------
# Main logic
# ---------------------------------------------------------------------------

$logDir = Get-LogDir
Start-Transcript "$logDir\RemoveApps.log"

Get-AppList | Remove-App

Stop-Transcript

 

with this in an xml file in the location with the name from the script:

Clipchamp.Clipchamp
Microsoft.549981C3F5F10
Microsoft.BingNews
Microsoft.BingWeather
Microsoft.GamingApp
Microsoft.GetHelp
Microsoft.Getstarted
Microsoft.MicrosoftOfficeHub
Microsoft.MicrosoftSolitaireCollection
Microsoft.People
Microsoft.PowerAutomateDesktop
Microsoft.SecHealthUI
Microsoft.Todos
Microsoft.WindowsAlarms
microsoft.windowscommunicationsapps
Microsoft.WindowsFeedbackHub
Microsoft.WindowsMaps
Microsoft.WindowsSoundRecorder
Microsoft.Xbox.TCUI
Microsoft.XboxGameOverlay
Microsoft.XboxGamingOverlay
Microsoft.XboxIdentityProvider
Microsoft.XboxSpeechToTextOverlay
Microsoft.YourPhone
Microsoft.ZuneMusic
Microsoft.ZuneVideo

 

This seems to give us a relatively clean install.

  • Thanks 1
Posted

Hey Squelch I have heard of NTLite but haven't ever remembered to give it a try.  After you customize your install do you know if it will usually Sysprep properly?

Posted

It creates an iso at the end of the process and I either use rufus to make a usb drive or copy the wim to mdt.

 

I don’t sysprep so can’t really advise about that.

 

I found a demo of NTLite on YouTube, it works really well for me.

Posted
21 minutes ago, supportman said:

NTLite and the autounattend.xml file works very well for us here.

 

That does sound like a good combo for a clean installation.  What we wind up doing though is creating an image and then running Sysprep on it before deployment.  It really saves time when we get a large shipment of PCs.  I was wondering how to eliminate all the startup questions when booting up a Sysprepped image.  I have seen it done from a vendor once, but I don't know how they did it.

Posted (edited)

Is there a quick and easy way to do this for all users so if a new profile is created, none of the crud is created too?

 

Update: added -AllUsers to Remove-App

 

$logDir = Get-LogDir
Start-Transcript "$logDir\RemoveApps.log"

Get-AppList | Remove-App -AllUsers

Stop-Transcript
Edited by timbo343
Found a workable solution
Posted
On 30/04/2025 at 12:05, mikes said:

We used to do a fully stripped image but back in the Win Se7en days  I remember having an issue when we needed to install some software for a teacher and it needed a part of Windows we had removed.

 

Don't want to hijack the thread but we are in the same boat as when the machines were imaged the camera app was removed and now we need it. Is there a way to automatically add it to each user at logon to save reimaging? 

Posted

Another update to this, I've used this - https://schneegans.de/windows/unattend-generator/ - to create a custom autounattend.xml file and added the xml to a Windows 11 ISO using AnyBurn. A feature in there is called Edit Image File where I added the autounattend.xml file to the root of the ISO.

 

I must say it's installed Windows 11 Education 24H2 without the crud.

 

It has left the following on:

PS C:\WINDOWS\system32> Get-AppxPackage -AllUsers | Select Name, Version

Name                                           Version
----                                           -------
1527c705-839a-4832-9118-54d4Bd6a0c89           10.0.19640.1000
c5e2524a-ea46-4f67-841f-6a9465d9d515           10.0.26100.1
E2A4F912-2574-4A75-9BB0-0D023378592B           10.0.19640.1000
F46D4000-FD22-4DB4-AC8E-4E1DDDE828FE           10.0.26100.1
Microsoft.AAD.BrokerPlugin                     1000.19580.1000.0
Microsoft.AccountsControl                      10.0.26100.1
Microsoft.AsyncTextService                     10.0.26100.1
Microsoft.BioEnrollment                        10.0.19587.1000
Microsoft.CredDialogHost                       10.0.19595.1001
Microsoft.ECApp                                10.0.26100.1150
Microsoft.LockApp                              10.0.26100.1301
Microsoft.MicrosoftEdgeDevToolsClient          1000.25128.1000.0
Microsoft.UI.Xaml.CBS                          9.2311.10002.0
Microsoft.Win32WebViewHost                     10.0.26100.1
Microsoft.Windows.Apprep.ChxApp                1000.25128.1000.0
Microsoft.Windows.AssignedAccessLockApp        1000.25128.1000.0
Microsoft.Windows.CapturePicker                10.0.19580.1000
Microsoft.Windows.CloudExperienceHost          10.0.26100.1
Microsoft.Windows.ContentDeliveryManager       10.0.26100.1
Microsoft.Windows.NarratorQuickStart           10.0.26100.1
Microsoft.MicrosoftEdge.Stable                 122.0.2365.106
Microsoft.Windows.OOBENetworkCaptivePortal     10.0.21302.1000
Microsoft.Windows.OOBENetworkConnectionFlow    10.0.21302.1000
Microsoft.Windows.ParentalControls             1000.25128.1000.0
Microsoft.Windows.PeopleExperienceHost         10.0.26100.1
Microsoft.Windows.PinningConfirmationDialog    1000.25140.1001.0
Microsoft.Windows.PrintQueueActionCenter       1.0.2.0
Microsoft.Windows.SecureAssessmentBrowser      10.0.26100.1
Microsoft.Windows.ShellExperienceHost          10.0.26100.1301
Microsoft.Windows.StartMenuExperienceHost      10.0.26100.1301
Microsoft.Windows.XGpuEjectDialog              10.0.26100.1
Microsoft.WindowsAppRuntime.CBS                5001.184.1607.0
Microsoft.XboxGameCallableUI                   1000.25128.1000.0
MicrosoftWindows.Client.AIX                    1000.26100.29.0
MicrosoftWindows.Client.CBS                    1000.26100.18.0
MicrosoftWindows.Client.Core                   1000.26100.19.0
MicrosoftWindows.Client.FileExp                1000.26100.3.0
MicrosoftWindows.Client.OOBE                   1000.26100.2.0
MicrosoftWindows.Client.Photon                 1000.26100.4.0
MicrosoftWindows.LKG.AccountsService           1000.26100.1742.0
MicrosoftWindows.LKG.IrisService               1000.26100.1742.0
MicrosoftWindows.LKG.Search                    1000.26100.1742.0
MicrosoftWindows.UndockedDevKit                10.0.26100.1
NcsiUwpApp                                     1000.25128.1000.0
Windows.CBSPreview                             10.0.19580.1000
windows.immersivecontrolpanel                  10.0.8.1000
Windows.PrintDialog                            6.2.3.0
Microsoft.WindowsAppRuntime.1.3                3000.934.1904.0
Microsoft.NET.Native.Runtime.2.2               2.2.28604.0
Microsoft.NET.Native.Framework.2.2             2.2.29512.0
Microsoft.VCLibs.140.00.UWPDesktop             14.0.30704.0
Microsoft.UI.Xaml.2.8                          8.2310.30001.0
Microsoft.VCLibs.140.00                        14.0.30704.0
Microsoft.ApplicationCompatibilityEnhancements 1.2401.10.0
Microsoft.AV1VideoExtension                    1.1.61781.0
Microsoft.AVCEncoderVideoExtension             1.0.271.0
Microsoft.DesktopAppInstaller                  1.21.10120.0
Microsoft.GetHelp                              10.2302.10601.0
Microsoft.HEIFImageExtension                   1.0.63001.0
Microsoft.HEVCVideoExtension                   2.0.61931.0
Microsoft.MicrosoftStickyNotes                 4.0.4602.0
Microsoft.MPEG2VideoExtension                  1.0.61931.0
Microsoft.Paint                                11.2302.20.0
Microsoft.RawImageExtension                    2.3.171.0
Microsoft.ScreenSketch                         11.2307.52.0
Microsoft.SecHealthUI                          1000.26100.1.0
Microsoft.StorePurchaseApp                     22312.1400.6.0
Microsoft.VP9VideoExtensions                   1.1.451.0
Microsoft.WebMediaExtensions                   1.0.62931.0
Microsoft.WebpImageExtension                   1.0.62681.0
Microsoft.Windows.Photos                       24.24010.29003.0
Microsoft.WindowsAlarms                        1.0.188.0
Microsoft.WindowsCalculator                    11.2311.0.0
Microsoft.WindowsCamera                        2023.2312.3.0
Microsoft.WindowsNotepad                       11.2312.18.0
Microsoft.WindowsSoundRecorder                 1.0.76.0
Microsoft.WindowsStore                         22401.1400.6.0
Microsoft.ZuneMusic                            11.2312.8.0
MicrosoftWindows.Client.WebExperience          424.1301.270.9
MicrosoftWindows.CrossDevice                   0.23101.22.0

 

This is what I initially used to remove the bloatware:

image.thumb.png.c06ff8ff1d9621bda64ab9aea6221421.png

 

Added a few more items to the RemoveApp.xml list:

 

Clipchamp.Clipchamp
Microsoft.549981C3F5F10
Microsoft.BingSearch
Microsoft.BingNews
Microsoft.BingWeather
Microsoft.GamingApp
Microsoft.GetHelp
Microsoft.Getstarted
Microsoft.MicrosoftOfficeHub
Microsoft.MicrosoftSolitaireCollection
Microsoft.People
Microsoft.PowerAutomateDesktop
Microsoft.SecHealthUI
Microsoft.MicrosoftStickyNotes
Microsoft.OutlookForWindows
Microsoft.Todos
Microsoft.WindowsAlarms
microsoft.windowscommunicationsapps
Microsoft.WindowsFeedbackHub
Microsoft.WindowsMaps
Microsoft.WindowsSoundRecorder
Microsoft.Xbox.TCUI
Microsoft.XboxGameOverlay
Microsoft.XboxGamingOverlay
Microsoft.XboxIdentityProvider
Microsoft.XboxSpeechToTextOverlay
Microsoft.YourPhone
Microsoft.ZuneMusic
Microsoft.ZuneVideo
Microsoft.WindowsTerminal
Microsoft.Copilot
MSTeams
Microsoft.WindowsStore
Microsoft.XboxGameCallableUI
Microsoft.Getstarted
Microsoftwindows.client.webexperience
Windows.CBSPreview

 

Struggling to remove "Get Started" but don't think it's possible to remove. Maybe Custom Start Menus will do the trick.

  • Like 1
Posted

How do you get rid of QuickAssist with this? I have tried

 

Get-AppXPackage *QuickAssist* | Remove-AppXPackage -AllUsers

 

but it doesn't work. I just know that students will mess with this.

Posted
38 minutes ago, Theldron said:

How do you get rid of QuickAssist with this? I have tried

 

Get-AppXPackage *QuickAssist* | Remove-AppXPackage -AllUsers

 

but it doesn't work. I just know that students will mess with this.

Why don't you use AppLocker to block access to the app instead?

Posted

I've just run Get-AppXPackage *QuickAssist* | Remove-AppXPackage -AllUsers on my test machine and it's taken off MicrosoftCorporationII.QuickAssist

  • 2 weeks later...
Posted
On 30/04/2025 at 11:18, alordcharlie said:

 

 

Thanks everyone,

This post was the first I saw, thanks @alordcharlie and everyone else for your useful posts.

The Andrew S Taylor script worked really well, however it removed OneDrive which was no good for us. I made a comment on his site and he did update the ps1. 

 

What I decided to do, was copy his ps and put it on my own repository and then customised it to what we need, which currently is, OneDrive installed locally, Dell Command Update Apps etc. 

On his original script, the Dell software was set to remove. 

 

So far, it is working really well. It is a very good script.I just changed this part of the invoke script:

Quote

Invoke-WebRequest ` -Uri "https://raw.githubusercontent.com/andrew-s-taylor/public/main/De-Bloat/RemoveBloat.ps1" `

 

 

To my version in my repository. It now means, I can make changes as necessary to RemoveBloat.ps1, if for instance, we needed Camera App or certain apps which are currently set for removal by adding to whitelist. I have left Andrew’s details on the scripts in my repository for his credit.

 

Thanks everyone for your help on this.

  • Like 2
Posted
5 minutes ago, altecsole said:

We don't bother removing anything anymore - we just use Applocker to restrict access.

This was the route I was going to take, but it seems that profiles are fairly hefty and initial logins are rather slow - going to remove some of the bloat and see if it has a positive impact.

  • Like 1
Posted
11 minutes ago, ThomL said:

This was the route I was going to take, but it seems that profiles are fairly hefty and initial logins are rather slow - going to remove some of the bloat and see if it has a positive impact.

We redirect AppData, which seems to help with this. Plus, seating plans mean that students tend to logon to the same computers each time, so quicker logons after the initial logon.

 

Posted

Redirected Desktops, and using OpenShell to only show needed items in the start menu.

This is for our Win10 setup, but planning on using the same system for Win11 when we deploy it.

  • Like 1
Posted

Thom we use redirected Desktops which helps a lot.  Also if initial logins are slow check this in your Group Policy:

 

Computer Configuration, Administrative Templates, System, and open Logon

 

Disable Show first sign-in animation

 

If I am remembering correctly this is what I did years ago when we first went to Windows 10 to speed up the first login of a user to a PC.

  • Thanks 2
Posted

Hi!

Epic post. Useful info here.

 

What was the big reason you used Windows 11 Education and not Professional seeing as you are doing an app cleanout.

 

We currently use Windows 10 LTSC - want to move to a different version of windows next time and having a hard time deciding which.

A Simple primary school.

 

Any advice would be cool!

 

5nowman

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...