Skip to content

Commit a0e3637

Browse files
committed
Update docs
1 parent 8d6d37a commit a0e3637

File tree

8 files changed

+140
-96
lines changed

8 files changed

+140
-96
lines changed

.vitepress/config.mts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export default withMermaid(defineConfig({
1818
// image lazy loading is disabled by default
1919
lazyLoading: true
2020
},
21-
toc: { level: [1, 2, 3] },
21+
toc: { level: [1, 2, 3] }
2222
},
2323

2424
themeConfig: {
@@ -42,10 +42,20 @@ export default withMermaid(defineConfig({
4242
items: [
4343
{ text: 'About', link: 'about.md' },
4444
{ text: 'Results', link: 'results.md' },
45-
{ text: 'Installing', link: 'install.md' },
4645
{ text: 'Known issues', link: 'issues.md' }
4746
]
4847
},
48+
{
49+
text: 'Install',
50+
collapsed: false,
51+
items: [
52+
{ text: 'Download', link: 'download.md' },
53+
{ text: 'Installing', link: 'install.md' },
54+
{ text: 'Localising Windows', link: 'localisation.md' },
55+
{ text: 'Quick Install', link: 'quick.md' },
56+
{ text: 'Microsoft Intune', link: 'intune.md' }
57+
]
58+
},
4959
{
5060
text: 'Under the hood',
5161
collapsed: false,

docs/appxapps.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ layout: doc
1010
In this default mode, the script includes an explicit list of applications that it will keep, including packages that cannot be removed or are frameworks (packages that support other applications). **All other application packages will be removed**.
1111

1212
This mode should be run in [Windows OOBE](https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/customize-oobe-in-windows-11) (1) (i.e. via Windows Autopilot or Device provisioning) or in a gold image, where the intention it to optimise the Windows installation by keeping only a core set of applications that provide valuable features to end-users.
13-
{ .annotate }
1413

15-
1. Windows OOBE stands for Windows Out-of-Box Experience. It's the setup process that occurs when you turn on a new Windows device for the first time or after resetting it to its factory settings. During OOBE, you're guided through various steps to personalize and configure your device, such as: connecting to a Wi-Fi network, setting up device preferences like region, keyboard layout, and privacy settings, and signing in with a Microsoft account.
14+
::: info
15+
Windows OOBE stands for Windows Out-of-Box Experience. It's the setup process that occurs when you turn on a new Windows device for the first time or after resetting it to its factory settings. During OOBE, you're guided through various steps to personalize and configure your device, such as: connecting to a Wi-Fi network, setting up device preferences like region, keyboard layout, and privacy settings, and signing in with a Microsoft account.
16+
:::
1617

1718
This allows you to optimise a Windows install or gold image by removing all but a specified list of AppX packages from the the local system to prevent new installs of unwanted apps when new users log onto the system.
1819

1920
::: warning
20-
It is not recommended to run this script on existing Windows PCs, as it will likely remove applications that users are actively using.
21+
Validate which packages will be removed before running on an existing Windows PC. Removing applications on an existing desktop may remove applications that users rely on. If required, update the **SafePackageList** parameter to avoid removal of required applications.
2122
:::
2223

2324
### Default Packages
@@ -89,7 +90,7 @@ An optional parameter that specifies a targeted list of AppX package family name
8990
Remove all applications in the current Windows installation except for the default list of applications listed in `-SafePackages`, are non-removable or are package frameworks.
9091

9192
```powershell
92-
PS C:\> .\Remove-AppxApps.ps1
93+
PS C:\> .\Remove-AppxApps.ps1 -Confirm:$false
9394
```
9495

9596
Remove all applications in the current Windows installation except for those applications passed to `-SafePackages`, are non-removable or are package frameworks.
@@ -117,5 +118,5 @@ PS C:\> .\Remove-AppxApps.ps1 -SafePackages $Packages
117118
Remove a set of applications in the current Windows installation listed in `-TargetedPackageList`.
118119

119120
```powershell
120-
PS C:\> .\Remove-AppxApps.ps1 -Targeted
121+
PS C:\> .\Remove-AppxApps.ps1 -Targeted -Confirm:$false
121122
```

docs/download.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
layout: doc
3+
---
4+
# Download the Latest Release
5+
6+
To use the solution in an operating system deployment pipeline, download the zip file (`defaults.zip`) attached to the [latest release](https://github.com/aaronparker/defaults/releases/latest) and import the extracted files into your OS deployment solution (e.g., the Microsoft Deployment Toolkit, Microsoft Intune, Microsoft Configuration Manager, etc.).
7+
8+
The release page also include the solution packaged into a `.intunewin` format ready for import into [Intune](/intune).
9+
10+
![Windows Enterprise Defaults release hosted on GitHub](/assets/img/githubrelease.jpeg)

docs/install.md

Lines changed: 4 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,13 @@ layout: doc
33
---
44
# Installing Defaults
55

6-
## Download the Latest Release
7-
8-
To use the solution in an operating system deployment pipeline, download the zip file (`defaults.zip`) attached to the [latest release](https://github.com/aaronparker/defaults/releases/latest) and import the extracted files into your OS deployment solution (e.g., the Microsoft Deployment Toolkit, Microsoft Intune, Microsoft Configuration Manager, etc.).
9-
10-
![Windows Enterprise Defaults release hosted on GitHub](/assets/img/githubrelease.jpeg)
11-
126
## Install
137

148
Installation of the Windows Enterprise Defaults will depend on where you are running the installation - via the Windows OOBE (1) (with Windows Autopilot or Windows Autopilot device preparation), in an image creation solution, or manually.
15-
{ .annotate }
169

17-
1. Windows OOBE stands for Windows Out-of-Box Experience. It's the setup process that occurs when you turn on a new Windows device for the first time or after resetting it to its factory settings. During OOBE, you're guided through various steps to personalize and configure your device, such as: connecting to a Wi-Fi network, setting up device preferences like region, keyboard layout, and privacy settings, and signing in with a Microsoft account.
10+
::: info
11+
Windows OOBE stands for Windows Out-of-Box Experience. It's the setup process that occurs when you turn on a new Windows device for the first time or after resetting it to its factory settings. During OOBE, you're guided through various steps to personalize and configure your device, such as: connecting to a Wi-Fi network, setting up device preferences like region, keyboard layout, and privacy settings, and signing in with a Microsoft account.
12+
:::
1813

1914
Installation is handled with two scripts:
2015

@@ -30,94 +25,14 @@ C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Remot
3025
If you're deploying the solution via other tools, e.g. ConfigMgr, MDT or in an image pipeline, run both scripts:
3126

3227
```powershell
33-
.\Remove-AppxApps.ps1
28+
.\Remove-AppxApps.ps1 -Confirm:$false
3429
.\Install-Defaults.ps1
3530
```
3631

37-
### Localising Windows
38-
39-
`Install-Defaults.ps1` can configure system-wide language / locale settings, and on Windows 10/11 and Windows Server 2025 install language packs. Here's an example installing the English Australia locale settings and language support:
40-
41-
```powershell
42-
.\Install-Defaults.ps1 -Language "en-AU"
43-
```
44-
45-
Use `Install-Defaults.ps1 -Language "<language code>"` to install a language pack and set local settings for a specified language. This parameter supports the **bcp47** tag of the language to install (e.g., `en-AU`, `en-GB`, `fr-FR`). No locale, regional settings or language packs will be installed unless this parameter is specified.
46-
47-
This uses the [Install-Language](https://learn.microsoft.com/en-au/powershell/module/languagepackmanagement/install-language) module to install the appropriate language pack. This module is only available on current version of Windows 10, Windows 11 and Windows Server 2025.
48-
49-
::: info
50-
Installation of a language pack on Windows 10 requires a reboot.
51-
:::
52-
53-
Additional locale settings can be configured for any version of Windows 10, Windows 11 and Windows Server 2016+ with the `International` PowerShell module. `Install-Defaults.ps1` will also configure culture, locale, and language settings using the language value specified in `-Language`.
54-
55-
Below is a summary of the commands used to configure these settings:
56-
57-
```powershell
58-
[System.Globalization.CultureInfo] $Language = "en-AU"
59-
Import-Module -Name "International"
60-
Set-Culture -CultureInfo $Language
61-
Set-WinSystemLocale -SystemLocale $Language
62-
Set-WinUILanguageOverride -Language $Language
63-
Set-WinUserLanguageList -LanguageList $Language.Name -Force
64-
$RegionInfo = New-Object -TypeName "System.Globalization.RegionInfo" -ArgumentList $Language
65-
Set-WinHomeLocation -GeoId $RegionInfo.GeoId
66-
Set-SystemPreferredUILanguage -Language $Language
67-
```
68-
69-
::: warning
70-
Run `Remove-AppxApps.ps1` before using `Install-Defaults.ps1` to install language packs, otherwise the language pack will be removed.
71-
:::
72-
73-
### Set a Time Zone
74-
75-
For Windows 10 and Windows 11, the solution will enable location settings for physical PCs that will automatically se the time zone in most scenarios. However, `Install-Defaults.ps1` can directly set a time zone when specified on the `-TimeZone` parameter. Use `Install-Defaults.ps1 -TimeZone "Time zone name"` to set the required time zone.
76-
77-
To view the list of valid time zone names to pass to this parameter, use `Get-TimeZone -ListAvailable`, and use the time zone name on the `Id` property. Localising Windows and setting the appropriate time zone would look like this:
78-
79-
```powershell
80-
.\Install-Defaults.ps1 -Language "en-AU" -TimeZone "AUS Eastern Standard Time"
81-
```
82-
8332
## Detection
8433

8534
Once installed, the following registry information can be used to detect that the package is installed:
8635

8736
* Key - `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f38de27b-799e-4c30-8a01-bfdedc622944}`
8837
* Value - `DisplayVersion`
8938
* Data - `2211.29.129` (the version number of the current release)
90-
91-
## Microsoft Intune
92-
93-
The solution is also provided in `.intunewin` format to enable direct import into Microsoft Intune without re-packaging.
94-
95-
Settings for importing the Windows Enterprise Defaults as a Win32 package into Intune are maintained here: [App.json](https://github.com/aaronparker/defaults/blob/main/App.json). This can be used with the [IntuneWin32AppPackager](https://github.com/MSEndpointMgr/IntuneWin32AppPackager) to automate import into Intune.
96-
97-
![Windows Enterprise Defaults as a Win32 application in Microsoft Intune](/assets/img/intuneapp.jpeg)
98-
99-
::: info
100-
To enable support for multiple languages, create multiple Win32 applications with different command lines - one for each required language.
101-
:::
102-
103-
### Enrollment Status Page
104-
105-
To ensure the solution applies to a target machine during Windows Autopilot, add the application package to the list of Blocking Apps in the [Enrollment Status Page](https://learn.microsoft.com/en-us/autopilot/enrollment-status).
106-
107-
![Adding the Windows Enterprise Defaults to an Enrollment Status Page](/assets/img/enrollmentstatuspage.jpeg)
108-
109-
## Quick Install
110-
111-
::: warning
112-
Do not use this method on an existing Windows PC. This script will run `Remove-AppxApps.ps1` which will remove AppX / Store apps except for the list specified in the script.
113-
:::
114-
115-
To simplify download and install during an automated image build pipeline, or to install manually into an image, a [quick install script](https://raw.githubusercontent.com/aaronparker/defaults/main/Install.ps1) is provided that can be executed with the following PowerShell:
116-
117-
```powershell
118-
Set-ExecutionPolicy Bypass -Scope Process -Force;
119-
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
120-
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/aaronparker/defaults/main/Install.ps1"))
121-
```
122-
123-
This will download the latest release in zip format, extract the archive and execute `Install-Defaults.ps1` on the local Windows instance, to install the Windows Enterprise Defaults.

docs/intune.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
layout: doc
3+
---
4+
# Install with Microsoft Intune
5+
6+
## Install as a Win32 App
7+
8+
The solution is also provided in `.intunewin` format to enable direct import into Microsoft Intune without re-packaging.
9+
10+
Settings for importing the Windows Enterprise Defaults as a Win32 package into Intune are maintained here: [App.json](https://github.com/aaronparker/defaults/blob/main/App.json). This can be used with the [IntuneWin32AppPackager](https://github.com/MSEndpointMgr/IntuneWin32AppPackager) to automate import into Intune.
11+
12+
::: info
13+
To enable support for multiple languages, create multiple Win32 applications with different command lines - one for each required language.
14+
:::
15+
16+
![Windows Enterprise Defaults as a Win32 application in Microsoft Intune](/assets/img/intuneapp.jpeg)
17+
18+
### Enrollment Status Page
19+
20+
To ensure the solution applies to a target machine during Windows Autopilot, add the application package to the list of Blocking Apps in the [Enrollment Status Page](https://learn.microsoft.com/autopilot/enrollment-status).
21+
22+
![Adding the Windows Enterprise Defaults to an Enrollment Status Page](/assets/img/enrollmentstatuspage.jpeg)
23+
24+
### Detection
25+
26+
Once installed, the following registry information can be used to detect that the package is installed:
27+
28+
* Key - `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f38de27b-799e-4c30-8a01-bfdedc622944}`
29+
* Value - `DisplayVersion`
30+
* Data - `2211.29.129` (the version number of the current release)
31+
32+
## Platform Script
33+
34+
`Remove-AppxApps.ps1` can be run as a standalone script, seperate from the rest of the solution. This script can be deployed from Intune as a [platform script](https://learn.microsoft.com/intune/intune-service/apps/powershell-scripts); however, you will need to first edit the script to enable it to run.
35+
36+
The `ConfirmImpact` property must be changed from `High` to `Low` - edit this on line 38 in the script:
37+
38+
```powershell
39+
[CmdletBinding(SupportsShouldProcess = $true, DefaultParameterSetName = "Default", ConfirmImpact = "Low")]
40+
```
41+
42+
![Running Remove-AppxApps.ps1 as a platform script](/assets/img/platform-script.jpeg)

docs/localisation.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
layout: doc
3+
---
4+
# Localising Windows
5+
6+
`Install-Defaults.ps1` can configure system-wide language / locale settings, and on Windows 10/11 and Windows Server 2025 install language packs. Here's an example installing the English Australia locale settings and language support:
7+
8+
```powershell
9+
.\Install-Defaults.ps1 -Language "en-AU"
10+
```
11+
12+
Use `Install-Defaults.ps1 -Language "<language code>"` to install a language pack and set local settings for a specified language. This parameter supports the **bcp47** tag of the language to install (e.g., `en-AU`, `en-GB`, `fr-FR`). No locale, regional settings or language packs will be installed unless this parameter is specified.
13+
14+
This uses the [Install-Language](https://learn.microsoft.com/en-au/powershell/module/languagepackmanagement/install-language) module to install the appropriate language pack. This module is only available on current version of Windows 10, Windows 11 and Windows Server 2025.
15+
16+
::: info
17+
Installation of a language pack on Windows 10 requires a reboot.
18+
:::
19+
20+
Additional locale settings can be configured for any version of Windows 10, Windows 11 and Windows Server 2016+ with the `International` PowerShell module. `Install-Defaults.ps1` will also configure culture, locale, and language settings using the language value specified in `-Language`.
21+
22+
Below is a summary of the commands used to configure these settings:
23+
24+
```powershell
25+
[System.Globalization.CultureInfo] $Language = "en-AU"
26+
Import-Module -Name "International"
27+
Set-Culture -CultureInfo $Language
28+
Set-WinSystemLocale -SystemLocale $Language
29+
Set-WinUILanguageOverride -Language $Language
30+
Set-WinUserLanguageList -LanguageList $Language.Name -Force
31+
$RegionInfo = New-Object -TypeName "System.Globalization.RegionInfo" -ArgumentList $Language
32+
Set-WinHomeLocation -GeoId $RegionInfo.GeoId
33+
Set-SystemPreferredUILanguage -Language $Language
34+
```
35+
36+
::: warning
37+
Run `Remove-AppxApps.ps1` before using `Install-Defaults.ps1` to install language packs, otherwise the language pack will be removed.
38+
:::
39+
40+
# Set a Time Zone
41+
42+
For Windows 10 and Windows 11, the solution will enable location settings for physical PCs that will automatically se the time zone in most scenarios. However, `Install-Defaults.ps1` can directly set a time zone when specified on the `-TimeZone` parameter. Use `Install-Defaults.ps1 -TimeZone "Time zone name"` to set the required time zone.
43+
44+
To view the list of valid time zone names to pass to this parameter, use `Get-TimeZone -ListAvailable`, and use the time zone name on the `Id` property. Localising Windows and setting the appropriate time zone would look like this:
45+
46+
```powershell
47+
.\Install-Defaults.ps1 -Language "en-AU" -TimeZone "AUS Eastern Standard Time"
48+
```
66.1 KB
Loading

docs/quick.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
layout: doc
3+
---
4+
# Quick Install
5+
6+
::: warning
7+
Do not use this method on an existing Windows PC. This script will run `Remove-AppxApps.ps1` which will remove AppX / Store apps except for the list specified in the script.
8+
:::
9+
10+
To simplify download and install during an automated image build pipeline, or to install manually into an image, a [quick install script](https://raw.githubusercontent.com/aaronparker/defaults/main/Install.ps1) is provided that can be executed with the following PowerShell:
11+
12+
```powershell
13+
Set-ExecutionPolicy Bypass -Scope Process -Force;
14+
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
15+
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/aaronparker/defaults/main/Install.ps1"))
16+
```
17+
18+
This will download the latest release in zip format, extract the archive and execute `Install-Defaults.ps1` on the local Windows instance, to install the Windows Enterprise Defaults.

0 commit comments

Comments
 (0)