Customise a Windows 10/11 or Windows Server image at deployment time, including the default user profile, AppX packages and OS features
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location\Value
to Allow
. See Can't set time zone automatically in Windows 10
Install-enAU.ps1
- this script calls Install-Defaults.ps1
to set language to en-AU
and the timezone to AUS Eastern Standard Time
. Enables calling the solution in Intune etc. where passing a full command line can be problematic. Use the same approach for other time zones / locale settingsThis release includes several file assets:
image-customise.zip
- a downloadable copy of the solution that can be used anywhereimage-customise.intunewin
- a copy of the solution in Intune Win32 format for deployment to manage devicesWin32App.json
- a definition file for the Win32 package and can be used with the IntuneWin32App
PowerShell module to import into an Intune tenant-Language
parameter to use System.Globalization.CultureInfo
as inputSet-SystemLocale
function to set region and locale settings using the International
module and improve setting local language settings for Windows 11, Windows 10, and Windows Server-TimeZone
parameter to Install-Defaults.ps1
which accepts a time zone name value and sets the local time zone. Adds function Set-TimeZoneUsingName
to set a specified time zoneInstall-Defaults.ps1
This release includes several file assets:
image-customise.zip
- a downloadable copy of the solution that can be used anywhereimage-customise.intunewin
- a copy of the solution in Intune Win32 format for deployment to manage devicesWin32App.json
- a definition file for the Win32 package and can be used with the IntuneWin32App
PowerShell module to import into an Intune tenant-Filter
with -Include
in Get-ChildItem
to ensure files are enumerated correctlytzautoupdate
service Start
value to 3
and start service. This enables time zone detection - for Autopilot deployments, a reboot is still required after Autopilot completesC:\Windows\System32\Update\Run\{GUID}
to enable it to be run during feature updates. See: Run custom actions during feature update. This enables the Custom Defaults to be re-run during an in-place upgrade. Tested with Windows 10 21H2 -> Windows 1022H2 -> Windows 11 21H2 -> Windows 11 22H2C:\Windows\System32\Update\Run\{GUID}
to enable it to be run during feature updates. See: Run custom actions during feature update. This enables the Custom Defaults to be re-run during an in-place upgrade. Tested with Windows 10 21H2 -> Windows 1022H2 -> Windows 11 21H2 -> Windows 11 22H2C:\Windows\System32\Update\Run\{GUID}
to enable it to be run during feature updates. See: Run custom actions during feature update. This enables the Custom Defaults to be re-run during an in-place upgradeInstall-Defaults.ps1
to pass parameters correctly back to the the script when launched from 32-bit PowerShell (e.g. -Language
). Using the script to install language pack support in Autopilot via Intune now works as intended1
if there's a failure in the script (it was previously passing 0
regardless of issues or not)SetupComplete.cmd
for re-running Install-Defaults.ps1
during an in-place OS upgrade. See Add a Custom Script to Windows Setup
SupportsShouldProcess
support - Install-Defaults.ps1
can now be run with -WhatIf
to test/list changesInstall-Defaults.psm1
to manage functions in an external file and enabling better testing with PesterSet-RegistryOwner
to enable changing owner on specified registry keysHKLM:Software\Microsoft\Windows\CurrentVersion\Communications
ConfigureChatAutoInstall
in key HKLM:Software\Microsoft\Windows\CurrentVersion\Communications
to prevent the install of the consumer version of Microsoft Teams on Windows 11 (in Machine-Windows11.All.json
)Install-Defaults.ps1 -Language "en-GB"
to install language support for a specified language (Supports Skip
to skip the install of language settings or the bcp47 tag of the language to install)note
property to registry entries to enable documentation of each key"Type": "Direct"
property for registry items in Machine.Client.json