37 Commits
2.5 ... 2.8

Author SHA1 Message Date
Disassembler
61763b3c63 v2.8, 2017-09-09
- Added "EnableFileDeleteConfirm" (thx @Conder000)
- Added "HideNetworkFromLockScreen"  (thx @Conder000)
- Added "HideShutdownFromLockScreen"
- Added "DisableThumbnails"
- Added "DisableThumbsDB" (thx @johnburnett)
- Added "DisableMapUpdates" (thx @DaNy3LL)
- Added more speedup tweaks for "SetVisualFXPerformance" (thx @johnburnett)
BREAKING CHANGES - update your presets:
- Added "RequireAdmin" for on-demand elevation (allows creation of non-elevated customizations)
- Renamed "RestrictUpdateP2P" to "SetP2PUpdateLocal"
- Renamed "LowerUAC" to "SetUACLow"
- Renamed "ExplorerThisPC" to "SetExplorerThisPC"
2017-09-09 13:35:40 +02:00
Disassembler
58ff7a00d1 Improve support for spaces in paths and preset file name 2017-09-09 12:27:13 +02:00
Disassembler
727bf0d09b Merge branch 'elevate-on-demand' 2017-09-09 10:31:39 +02:00
Disassembler
70033c0a11 Rename and adjust tweak names in accordance with guidelines 2017-09-09 10:20:53 +02:00
Disassembler
ef8e0074c4 Add contribution guidelines to README 2017-09-09 10:18:00 +02:00
Disassembler
2e93e01aa1 Add "DisableMapUpdates" 2017-09-09 09:38:36 +02:00
Disassembler
9da73e107a Add "DisableNoLoginShutdown" 2017-09-09 09:37:12 +02:00
Disassembler
db90cefd5b Add "DisableThumbnails" 2017-09-09 08:12:47 +02:00
Disassembler
303eaf737f Add more speedup tweaks for "SetVisualFXPerformance" based on #24 2017-09-09 08:11:31 +02:00
Disassembler
f5d849a32d Rearrange functions after merging 2017-09-09 08:10:51 +02:00
Disassembler0
8169e550ea Merge pull request #25 from johnburnett/disable-thumbs-db
Added Thumbs.db toggles
2017-09-09 08:06:37 +02:00
Disassembler0
fcae96daa4 Merge pull request #22 from Conder000/hidenetwork
Added HideNetworkFromLockScreen function
2017-09-09 08:06:30 +02:00
Disassembler0
2f20cacfdf Merge pull request #21 from Conder000/confirmfiledelete
Added EnableFileDeleteConfirmation function
2017-09-09 08:06:21 +02:00
John Burnett
4d419b722b Added Thumbs.db toggles 2017-09-07 22:34:20 -07:00
Conder000
4085887741 Grammar fix 2017-09-01 03:20:12 +02:00
Conder000
2fd170080e Added HideNetworkFromLockScreen function
* Added HideNetworkFromLockScreen function
* GPO equivalent: Do not display network selection UI
2017-09-01 02:48:32 +02:00
Conder000
f870886df7 Added EnableFileDeleteConfirmation function
* Added EnableFileDeleteConfirmation function
* GPO equivalent: Display confirmation dialog when deleting files
2017-09-01 02:36:40 +02:00
Disassembler
4167b3b6be v2.7, 2017-08-19
- Added more bloatware for removal (thx @Conder000)
- Added "Disable fast startup" (thx @Conder000)
- Added "Enable hibernation"
- Added "Set visual effects for performance"
- Modified "Disable Update Restart" to disable automatic wake-up from sleep (thx @Conder000)
- Modified "Disable Update Restart" to remove obsolete UxOption tweak used on pre-RS1 builds
- Fix errors while applying revert functions on untweaked systems
2017-08-19 20:50:54 +02:00
Disassembler
a2e9fede9f Fix errors while applying revert functions on untweaked systems (although it's not recommended) 2017-08-19 20:50:00 +02:00
Disassembler
ed1524589b Update FAQ based on #19 2017-08-19 20:02:13 +02:00
Disassembler
8f599210e3 Add "Set visual effects for performance/appearance" 2017-08-19 19:58:34 +02:00
Disassembler
1fe7cad283 Add "Enable hibernation" 2017-08-19 19:57:34 +02:00
Disassembler
90399bdd07 Modify "Disable Update Restart" to remove obsolete UxOption tweak used on pre-RS1 builds 2017-08-19 19:55:08 +02:00
Disassembler
3bc4e67d00 Add removal of "CAF9E577.Plex" 3rd party bloatware 2017-08-19 19:53:11 +02:00
Disassembler0
b31bfe5ee8 Merge pull request #18 from Conder000/winupdate
Added AUPowerManagement
2017-08-19 15:47:31 +02:00
Disassembler0
5cfec604ef Merge pull request #17 from Conder000/faststartup
Added DisableFastStartup function
2017-08-19 15:47:20 +02:00
Disassembler0
56845c817b Merge pull request #16 from Conder000/bloat
Added third party bloatware
2017-08-19 15:47:08 +02:00
Conder000
7934a1ad75 Added AUPowerManagement
* Added registry value AUPowerManagement=0 to DisableUpdateRestart function
* GPO equivalent: Enabling Windows Update Power Management to automatically wake up the system to install scheduled updates
2017-08-16 00:27:56 +02:00
Conder000
770059d362 Added DisableFastStartup function 2017-08-14 20:44:39 +02:00
Conder000
7fa9d1a1e5 Added third party bloatware
* Added some third party bloatware (Win10 v1703)
2017-08-13 01:08:54 +02:00
Disassembler0
4332b46084 Merge pull request #13 from alirobe/patch-1
add write-hosts for third party bloat functions
2017-08-02 07:26:55 +02:00
Ali Robertson
320590c2d5 add write-hosts for third party bloat install 2017-08-02 11:33:45 +10:00
Disassembler
1136c0b390 v2.6, 2017-07-31
- Add "Disable SuperFetch" (thx M. Schilling)
- Add "Disable Indexing" (thx M. Schilling)
- Split "Uninstall Bloatware" to "Uninstall Microsoft Bloatware" and "Uninstall 3rd party Bloatware" (thx @alirobe)
- Ignore warnings while stop/starting services
- Fix few typos and add few clarifications
2017-07-31 15:50:40 +02:00
Disassembler0
d163d09a22 Merge pull request #12 from alirobe/master
split MS bloat and 3rd party bloat
2017-07-31 15:48:21 +02:00
Disassembler
e62abd0cfc Move implicit privilege elevation to function. See #11 for details. 2017-07-29 19:12:31 +02:00
Ali Robertson
12064cd8be split bloat in test suite 2017-07-29 15:56:19 +10:00
Ali Robertson
83cda95ddf split MS bloat and 3rd party bloat 2017-07-29 15:25:00 +10:00
10 changed files with 418 additions and 82 deletions

View File

@@ -1,14 +1,14 @@
## Description
This is a PowerShell script for automation of routine tasks done after fresh installations of Windows 10. This is by no means any complete set of all existing Windows tweaks and neither is it another "antispying" type of script. It's simply a setting which I like to use and which in my opinion make the system less obtrusive.
This is a PowerShell script for automation of routine tasks done after fresh installations of Windows 10 and Windows Server 2016. This is by no means any complete set of all existing Windows tweaks and neither is it another "antispying" type of script. It's simply a setting which I like to use and which in my opinion make the system less obtrusive.
This repository has been originally created as complementary to article https://www.dasm.cz/clanek/jak-z-windows-10-udelat-desktopovy-system (written in Czech) which explains the respective snippets a bit more in detail. The article was last updated on 2016-08-15 and will not be updated further. All development and discussion has been moved here.
This repository has been originally created as complementary to article <https://www.dasm.cz/clanek/jak-z-windows-10-udelat-desktopovy-system> (written in Czech) which explains the respective snippets a bit more in detail. The article was last updated on 2016-08-15 and will not be updated further. All development and discussion has been moved here.
## Usage
If you just want to run the script with default preset, simply right click on the *Win10.ps1* file, choose *Run with PowerShell*, and confirm execution policy change. Make sure your account is a member of *Administrators* group as the script attempts to run with elevated privileges.
### Advanced usage
The script consists of separate functions, each of which contains one tweak. The functions can be grouped to *presets*. Preset is simply a list of function names which should be called. If you don't supply any specific preset, the default preset defined by `$preset` array in the beginning of the script will be applied. Any function which is not present or is commented in a preset will not be called, thus the corresponding tweak will not be applied. If you choose to fork the script and adjust the defaults instead of creating a customized preset file, then all you have to modify is the `$preset` array.
The script consists of separate functions, each of which contains one tweak. The functions can be grouped to *presets*. Preset is simply a list of function names which should be called. If you don't supply any specific preset, the default preset defined by `$tweaks` array in the beginning of the script will be applied. Any function which is not present or is commented in a preset will not be called, thus the corresponding tweak will not be applied. If you choose to fork the script and adjust the defaults instead of creating a customized preset file, then all you have to modify is the `$tweaks` array.
To supply a customized preset, you can either pass the function names directly as parameters.
@@ -66,3 +66,72 @@ Command using the preset file above:
**Q:** For how long are you going to maintain the script?
**A:** As long as I use Windows 10.
**Q:** I really like the script. Is there any way to express gratitude and send donation?
**A:** Feel free to send donations via [PayPal donation link](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=disassembler%40dasm%2ecz&item_name=Disassembler&no_shipping=1). Any amount is appreciated, just be aware that PayPal charges [mediation fees](https://www.paypal.com/selfhelp/article/FAQ690). Also be aware that donations are completely voluntary and I'm not obliged to make any script adjustments in your favor regardless of the donated amount.
## Contribution guidelines
Following is a list of rules which I'm trying to apply in this project. The rules are not binding and I accept pull requests even if they don't adhere to them, as long as their purpose and content are clear. In rare cases, when there are too many rule violations, I might simply redo the whole functionality and reject the PR (while still crediting you). If you'd like to make my work easier, please consider adhering to the following rules too.
### Function naming
Try to give a function a meaningful name up to 25 characters long, which gives away the purpose of the function. Use verbs like `Enable`/`Disable`, `Show`/`Hide`, `Install`/`Uninstall`, `Add`/`Remove` in the beginning of the function name. In case the function doesn't fit any of these verbs, come up with another name, beginning with the verb `Set`, which indicates what the function does, eg. `SetCurrentNetworkPrivate` and `SetCurrentNetworkPublic`.
### Revert functions
Always add a function with opposite name (or equivalent) which reverts the behaviour to default. The default is considered freshly installed Windows 10 or Windows Server 2016 with no adjustments made during or after the installation. If you don't have access to either of these, create the revert function to the best of your knowledge and I will fill in the rest if necessary.
### Function similarities
Check if there isn't already a function with similar purpose as the one you are trying to add. As long as the name and objective of the existing function is unchanged, feel free to add your tweak to that function rather than creating a new one.
### Function grouping
Try to group functions thematically. There are already five major groups (privacy, services, user interface, applications and server-specific), but even within these, some tweaks may be related to each other. In such case, add a new tweak below the existing one and not to the end of the whole group.
### Default settings
Always add a reference to the tweak and its revert function in the `$tweaks` array containing the default settings. Add references to both functions on the same line (mind the quotes and commas) and always comment out the revert function. Whether to comment out also the tweak in the default preset is a matter of personal preference. The rule of thumb is that if the tweak makes the system faster, smoother, more secure and less obtrusive, it should be enabled by default. Usability has preference over performance (that's why e.g. indexing is kept enabled). Also don't forget to add the function references to all test files.
### Repeatability
Unless applied on unsupported system, all functions have to be applicable repeatedly without any errors. When you're creating a registry key, always check first if the key doesn't happen to already exist. When you're deleting registry value, always append `-ErrorAction SilentlyContinue` to prevent errors while deleting already deleted values.
### Input / output hiding
Suppress all output generated by commands and cmdlets using `| Out-Null` or `-ErrorAction SilentlyContinue` where applicable. Whenever an input is needed, use appropriate parameters to suppress the prompt and programmatically provide values for the command to run (eg. using `-Confirm:$false`). The only acceptable output is from the `Write-Host` cmdlets in the beginning of each function and from non-suppressible cmdlets like `Remove-AppxPackage`.
### Registry
Create the registry keys only if they don't exist on fresh installation if Windows 10 or Windows Server 2016. When deleting registry, delete only registry values, not the whole keys. When you're setting registry values, always use `Set-ItemProperty` instead of `New-ItemProperty`. When you're removing registry values, choose either `Set-ItemProperty` or `Remove-ItemProperty` to reinstate the same situation as it was on the clean installation. Again, if you don't know what the original state was, let me know in PR description and I will fill in th gaps. When you need to use `HKEY_USERS` registry hive, always add following snippet before the registry modification to ensure portability.
```powershell
If (!(Test-Path "HKU:")) {
New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS | Out-Null
}
```
### Force usage
Star Wars jokes aside, don't use `-Force` parameter unless absolutely necessary. The only permitted case is when you're creating a new registry key (not a value) and you need to ensure that all parent keys will be created as well. In such case always check first if the key doesn't already exist, otherwise you will delete all its existing values.
### Comments
Always add a simple comment above the function briefly describing what the function does, especially if it has an ambiguous name or if there is some logic hidden under the hood. If you know that the tweak doesn't work on some editions of Windows 10 or on Windows Server, state it in the comment too. Add a `Write-Host` cmdlet with the short description of action also to the first line of the function body, so the user can see what is being executed and which function is the problematic one whenever an error occurs. The comment is written in present simple tense, the `Write-Host` in present continuous with ellipsis (resp. three dots) at the end.
### Coding style
Indent using tabs, enclose all string values in double quotes (`"`) and strictly use `PascalCase` wherever possible. Put opening curly bracket on the same line as the function name or condition, but leave the closing bracket on a separate line for readability.
### Examples
**Naming example**: Consider function `EnableFastMenu`. What does it do? Which menu? How fast is *fast*? A better name might be `EnableFastMenuFlyout`, so it's a bit clearer that we're talking about the menu flyouts delays. But the counterpart function would be `DisableFastMenuFlyouts` which is not entirely true. We're not *disabling* anything, we're just making it slow again. So even better might be to name them `SetFastMenuFlyouts` and `SetSlowMenuFlyouts`. Or better yet, just add the functionality to already existing `SetVisualFXPerformance`/`SetVisualFXAppearance`. Even though the names are not 100% match, they aim to tweak similar aspects and operate within the same registry keys.
**Coding example:** The following code applies most of the rules mentioned above (naming, output hiding, repeatability, force usage, comments and coding style).
```powershell
# Enable some feature
Function EnableSomeFeature {
Write-Host "Enabling some feature..."
If (!(Test-Path "HKLM:\Some\Registry\Key")) {
New-Item -Path "HKLM:\Some\Registry\Key" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\Some\Registry\Key" -Name "SomeValueName" -Type String -Value "SomeValue"
}
# Disable some feature
Function DisableSomeFeature {
Write-Host "Disabling some feature..."
Remove-ItemProperty -Path "HKLM:\Some\Registry\Key" -Name "SomeValueName" -ErrorAction SilentlyContinue
}
```

329
Win10.ps1
View File

@@ -1,12 +1,15 @@
##########
# Win10 / WinServer2016 Initial Setup Script
# Author: Disassembler <disassembler@dasm.cz>
# Version: 2.5, 2017-06-13
# Version: v2.8, 2017-09-09
# Source: https://github.com/Disassembler0/Win10-Initial-Setup-Script
##########
# Default preset
$tweaks = @(
### Require administrator privileges ###
"RequireAdmin",
### Privacy Settings ###
"DisableTelemetry", # "EnableTelemetry",
"DisableWiFiSense", # "EnableWiFiSense",
@@ -14,17 +17,18 @@ $tweaks = @(
"DisableWebSearch", # "EnableWebSearch",
"DisableStartSuggestions", # "EnableStartSuggestions",
"DisableLocationTracking", # "EnableLocationTracking",
"DisableMapUpdates", # "EnableMapUpdates",
"DisableFeedback", # "EnableFeedback",
"DisableAdvertisingID", # "EnableAdvertisingID",
"DisableCortana", # "EnableCortana",
"DisableErrorReporting", # "EnableErrorReporting",
"RestrictUpdateP2P", # "UnrestrictUpdateP2P",
"SetP2PUpdateLocal", # "SetP2PUpdateInternet",
"DisableAutoLogger", # "EnableAutoLogger",
"DisableDiagTrack", # "EnableDiagTrack",
"DisableWAPPush", # "EnableWAPPush",
### Service Tweaks ###
# "LowerUAC", # "RaiseUAC",
# "SetUACLow", # "SetUACHigh",
# "EnableSharingMappedDrives", # "DisableSharingMappedDrives",
"DisableAdminShares", # "EnableAdminShares",
"DisableSMB1", # "EnableSMB1",
@@ -41,15 +45,22 @@ $tweaks = @(
"DisableAutoplay", # "EnableAutoplay",
"DisableAutorun", # "EnableAutorun",
# "DisableDefragmentation", # "EnableDefragmentation",
# "DisableSuperfetch", # "EnableSuperfetch",
# "DisableIndexing", # "EnableIndexing",
# "SetBIOSTimeUTC", # "SetBIOSTimeLocal",
# "EnableHibernation", # "DisableHibernation",
# "DisableFastStartup", # "EnableFastStartup",
### UI Tweaks ###
"DisableActionCenter", # "EnableActionCenter",
"DisableLockScreen", # "EnableLockScreen",
# "DisableLockScreenRS1", # "EnableLockScreenRS1",
"HideNetworkFromLockScreen", # "ShowNetworkOnLockScreen",
"HideShutdownFromLockScreen", # "ShowShutdownOnLockScreen",
"DisableStickyKeys", # "EnableStickyKeys",
"ShowTaskManagerDetails" # "HideTaskManagerDetails",
"ShowFileOperationsDetails", # "HideFileOperationsDetails",
# "EnableFileDeleteConfirm", # "DisableFileDeleteConfirm",
"HideTaskbarSearchBox", # "ShowTaskbarSearchBox",
"HideTaskView", # "ShowTaskView",
"ShowSmallTaskbarIcons", # "ShowLargeTaskbarIcons",
@@ -60,7 +71,7 @@ $tweaks = @(
"ShowHiddenFiles", # "HideHiddenFiles",
"HideSyncNotifications" # "ShowSyncNotifications",
"HideRecentShortcuts", # "ShowRecentShortcuts",
"ExplorerThisPC", # "ExplorerQuickAccess",
"SetExplorerThisPC", # "SetExplorerQuickAccess",
"ShowThisPCOnDesktop", # "HideThisPCFromDesktop",
"HideDesktopFromThisPC", # "ShowDesktopInThisPC",
"HideDocumentsFromThisPC", # "ShowDocumentsInThisPC",
@@ -68,13 +79,17 @@ $tweaks = @(
"HideMusicFromThisPC", # "ShowMusicInThisPC",
"HidePicturesFromThisPC", # "ShowPicturesInThisPC",
"HideVideosFromThisPC", # "ShowVideosInThisPC",
"SetVisualFXPerformance", # "SetVisualFXAppearance",
# "DisableThumbnails", # "EnableThumbnails",
"DisableThumbsDB", # "EnableThumbsDB",
# "AddENKeyboard", # "RemoveENKeyboard",
# "EnableNumlock", # "DisableNumlock",
### Application Tweaks ###
"DisableOneDrive", # "EnableOneDrive",
"UninstallOneDrive", # "InstallOneDrive",
"UninstallBloatware", # "InstallBloatware",
"UninstallMsftBloat", # "InstallMsftBloat",
"UninstallThirdPartyBloat", # "InstallThirdPartyBloat",
# "UninstallWindowsStore", # "InstallWindowsStore",
"DisableConsumerApps", # "EnableConsumerApps",
"DisableXboxFeatures", # "EnableXboxFeatures",
@@ -87,7 +102,7 @@ $tweaks = @(
"DisableSearchAppInStore", # "EnableSearchAppInStore",
"DisableNewAppPrompt", # "EnableNewAppPrompt",
"EnableF8BootMenu", # "DisableF8BootMenu",
# "SetDEPOptOut", # "SetDEPOptIn",
"SetDEPOptOut", # "SetDEPOptIn",
### Server Specific Tweaks ###
# "HideServerManagerOnLogin", # "ShowServerManagerOnLogin",
@@ -136,6 +151,9 @@ Function DisableWiFiSense {
# Enable Wi-Fi Sense
Function EnableWiFiSense {
Write-Host "Enabling Wi-Fi Sense..."
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting")) {
New-Item -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting" -Name "Value" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots" -Name "Value" -Type DWord -Value 1
}
@@ -208,6 +226,18 @@ Function EnableLocationTracking {
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\lfsvc\Service\Configuration" -Name "Status" -Type DWord -Value 1
}
# Disable automatic Maps updates
Function DisableMapUpdates {
Write-Host "Disabling automatic Maps updates..."
Set-ItemProperty -Path "HKLM:\SYSTEM\Maps" -Name "AutoUpdateEnabled" -Type DWord -Value 0
}
# Enable automatic Maps updates
Function EnableMapUpdates {
Write-Host "Enable automatic Maps updates..."
Remove-ItemProperty -Path "HKLM:\SYSTEM\Maps" -Name "AutoUpdateEnabled" -ErrorAction SilentlyContinue
}
# Disable Feedback
Function DisableFeedback {
Write-Host "Disabling Feedback..."
@@ -264,6 +294,9 @@ Function DisableCortana {
Function EnableCortana {
Write-Host "Enabling Cortana..."
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Personalization\Settings" -Name "AcceptedPrivacyPolicy" -ErrorAction SilentlyContinue
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore")) {
New-Item -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization" -Name "RestrictImplicitTextCollection" -Type DWord -Value 0
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization" -Name "RestrictImplicitInkCollection" -Type DWord -Value 0
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" -Name "HarvestContacts" -ErrorAction SilentlyContinue
@@ -283,7 +316,7 @@ Function EnableErrorReporting {
}
# Restrict Windows Update P2P only to local network
Function RestrictUpdateP2P {
Function SetP2PUpdateLocal {
Write-Host "Restricting Windows Update P2P only to local network..."
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config")) {
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" | Out-Null
@@ -296,7 +329,7 @@ Function RestrictUpdateP2P {
}
# Unrestrict Windows Update P2P
Function UnrestrictUpdateP2P {
Function SetP2PUpdateInternet {
Write-Host "Unrestricting Windows Update P2P to internet..."
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Name "DODownloadMode" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization" -Name "SystemSettingsDownloadMode" -ErrorAction SilentlyContinue
@@ -322,7 +355,7 @@ Function EnableAutoLogger {
# Stop and disable Diagnostics Tracking Service
Function DisableDiagTrack {
Write-Host "Stopping and disabling Diagnostics Tracking Service..."
Stop-Service "DiagTrack"
Stop-Service "DiagTrack" -WarningAction SilentlyContinue
Set-Service "DiagTrack" -StartupType Disabled
}
@@ -330,13 +363,13 @@ Function DisableDiagTrack {
Function EnableDiagTrack {
Write-Host "Enabling and starting Diagnostics Tracking Service..."
Set-Service "DiagTrack" -StartupType Automatic
Start-Service "DiagTrack"
Start-Service "DiagTrack" -WarningAction SilentlyContinue
}
# Stop and disable WAP Push Service
Function DisableWAPPush {
Write-Host "Stopping and disabling WAP Push Service..."
Stop-Service "dmwappushservice"
Stop-Service "dmwappushservice" -WarningAction SilentlyContinue
Set-Service "dmwappushservice" -StartupType Disabled
}
@@ -344,7 +377,7 @@ Function DisableWAPPush {
Function EnableWAPPush {
Write-Host "Enabling and starting WAP Push Service..."
Set-Service "dmwappushservice" -StartupType Automatic
Start-Service "dmwappushservice"
Start-Service "dmwappushservice" -WarningAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\dmwappushservice" -Name "DelayedAutoStart" -Type DWord -Value 1
}
@@ -354,15 +387,15 @@ Function EnableWAPPush {
# Service Tweaks
##########
# Lower UAC level
Function LowerUAC {
# Lower UAC level (disabling it completely would break apps)
Function SetUACLow {
Write-Host "Lowering UAC level..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorAdmin" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "PromptOnSecureDesktop" -Type DWord -Value 0
}
# Raise UAC level
Function RaiseUAC {
Function SetUACHigh {
Write-Host "Raising UAC level..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorAdmin" -Type DWord -Value 5
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "PromptOnSecureDesktop" -Type DWord -Value 1
@@ -498,26 +531,26 @@ Function EnableUpdateDriver {
# Disable Windows Update automatic restart
Function DisableUpdateRestart {
Write-Host "Disabling Windows Update automatic restart..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "UxOption" -Type DWord -Value 1
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoRebootWithLoggedOnUsers" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUPowerManagement" -Type DWord -Value 0
}
# Enable Windows Update automatic restart
Function EnableUpdateRestart {
Write-Host "Enabling Windows Update automatic restart..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "UxOption" -Type DWord -Value 0
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoRebootWithLoggedOnUsers" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUPowerManagement" -ErrorAction SilentlyContinue
}
# Stop and disable Home Groups services - Not applicable to Server
Function DisableHomeGroups {
Write-Host "Stopping and disabling Home Groups services..."
Stop-Service "HomeGroupListener"
Stop-Service "HomeGroupListener" -WarningAction SilentlyContinue
Set-Service "HomeGroupListener" -StartupType Disabled
Stop-Service "HomeGroupProvider"
Stop-Service "HomeGroupProvider" -WarningAction SilentlyContinue
Set-Service "HomeGroupProvider" -StartupType Disabled
}
@@ -526,7 +559,7 @@ Function EnableHomeGroups {
Write-Host "Starting and enabling Home Groups services..."
Set-Service "HomeGroupListener" -StartupType Manual
Set-Service "HomeGroupProvider" -StartupType Manual
Start-Service "HomeGroupProvider"
Start-Service "HomeGroupProvider" -WarningAction SilentlyContinue
}
# Disable Remote Assistance - Not applicable to Server (unless Remote Assistance is explicitly installed)
@@ -582,18 +615,47 @@ Function EnableAutorun {
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "NoDriveTypeAutoRun" -ErrorAction SilentlyContinue
}
# Disable scheduled defragmentation
# Disable scheduled defragmentation task
Function DisableDefragmentation {
Write-Host "Disabling scheduled defragmentation..."
Disable-ScheduledTask -TaskName "\Microsoft\Windows\Defrag\ScheduledDefrag" | Out-Null
}
# Enable scheduled defragmentation
# Enable scheduled defragmentation task
Function EnableDefragmentation {
Write-Host "Enabling scheduled defragmentation..."
Enable-ScheduledTask -TaskName "\Microsoft\Windows\Defrag\ScheduledDefrag" | Out-Null
}
# Stop and disable Superfetch service - Not applicable to Server
Function DisableSuperfetch {
Write-Host "Stopping and disabling Superfetch service..."
Stop-Service "SysMain" -WarningAction SilentlyContinue
Set-Service "SysMain" -StartupType Disabled
}
# Start and enable Superfetch service - Not applicable to Server
Function EnableSuperfetch {
Write-Host "Starting and enabling Superfetch service..."
Set-Service "SysMain" -StartupType Automatic
Start-Service "SysMain" -WarningAction SilentlyContinue
}
# Stop and disable Windows Search indexing service
Function DisableIndexing {
Write-Host "Stopping and disabling Windows Search indexing service..."
Stop-Service "WSearch" -WarningAction SilentlyContinue
Set-Service "WSearch" -StartupType Disabled
}
# Start and enable Windows Search indexing service
Function EnableIndexing {
Write-Host "Starting and enabling Windows Search indexing service..."
Set-Service "WSearch" -StartupType Automatic
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WSearch" -Name "DelayedAutoStart" -Type DWord -Value 1
Start-Service "WSearch" -WarningAction SilentlyContinue
}
# Set BIOS time to UTC
Function SetBIOSTimeUTC {
Write-Host "Setting BIOS time to UTC..."
@@ -606,6 +668,38 @@ Function SetBIOSTimeLocal {
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" -Name "RealTimeIsUniversal" -ErrorAction SilentlyContinue
}
# Enable Hibernation - Do not use on Server with automatically started Hyper-V hvboot service as it may lead to BSODs (Win10 with Hyper-V is fine)
Function EnableHibernation {
Write-Host "Enabling Hibernation..."
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Session Manager\Power" -Name "HibernteEnabled" -Type Dword -Value 1
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FlyoutMenuSettings")) {
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FlyoutMenuSettings" | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FlyoutMenuSettings" -Name "ShowHibernateOption" -Type Dword -Value 1
}
# Disable Hibernation
Function DisableHibernation {
Write-Host "Disabling Hibernation..."
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Session Manager\Power" -Name "HibernteEnabled" -Type Dword -Value 0
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FlyoutMenuSettings")) {
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FlyoutMenuSettings" | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FlyoutMenuSettings" -Name "ShowHibernateOption" -Type Dword -Value 0
}
# Disable Fast Startup
Function DisableFastStartup {
Write-Host "Disabling Fast Startup..."
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power" -Name "HiberbootEnabled" -Type DWord -Value 0
}
# Enable Fast Startup
Function EnableFastStartup {
Write-Host "Enabling Fast Startup..."
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power" -Name "HiberbootEnabled" -Type DWord -Value 1
}
##########
@@ -666,6 +760,30 @@ Function EnableLockScreenRS1 {
Unregister-ScheduledTask -TaskName "Disable LockScreen" -Confirm:$false -ErrorAction SilentlyContinue
}
# Hide network options from Lock Screen
Function HideNetworkFromLockScreen {
Write-Host "Hiding network options from Lock Screen..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "DontDisplayNetworkSelectionUI" -Type DWord -Value 1
}
# Show network options on lock screen
Function ShowNetworkOnLockScreen {
Write-Host "Showing network options on Lock Screen..."
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "DontDisplayNetworkSelectionUI" -ErrorAction SilentlyContinue
}
# Hide shutdown options from Lock Screen
Function HideShutdownFromLockScreen {
Write-Host "Hiding shutdown options from Lock Screen..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ShutdownWithoutLogon" -Type DWord -Value 0
}
# Show shutdown options on lock screen
Function ShowShutdownOnLockScreen {
Write-Host "Showing shutdown options on Lock Screen..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ShutdownWithoutLogon" -Type DWord -Value 1
}
# Disable Sticky keys prompt
Function DisableStickyKeys {
Write-Host "Disabling Sticky keys prompt..."
@@ -722,6 +840,21 @@ Function HideFileOperationsDetails {
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager" -Name "EnthusiastMode" -ErrorAction SilentlyContinue
}
# Enable file delete confirmation dialog
Function EnableFileDeleteConfirm {
Write-Host "Enabling file delete confirmation dialog..."
If (!(Test-Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer")) {
New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" | Out-Null
}
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "ConfirmFileDelete" -Type DWord -Value 1
}
# Disable file delete confirmation dialog
Function DisableFileDeleteConfirm {
Write-Host "Disabling file delete confirmation dialog..."
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "ConfirmFileDelete" -ErrorAction SilentlyContinue
}
# Hide Taskbar Search button / box
Function HideTaskbarSearchBox {
Write-Host "Hiding Taskbar Search box / button..."
@@ -848,13 +981,13 @@ Function ShowRecentShortcuts {
}
# Change default Explorer view to This PC
Function ExplorerThisPC {
Function SetExplorerThisPC {
Write-Host "Changing default Explorer view to This PC..."
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -Type DWord -Value 1
}
# Change default Explorer view to Quick Access
Function ExplorerQuickAccess {
Function SetExplorerQuickAccess {
Write-Host "Changing default Explorer view to Quick Access..."
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -ErrorAction SilentlyContinue
}
@@ -963,6 +1096,62 @@ Function ShowVideosInThisPC {
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{35286a68-3c57-41a1-bbb1-0eae73d76c95}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Show"
}
# Adjusts visual effects for performance - Disables animations, transparency etc. but leaves font smoothing and miniatures enabled
Function SetVisualFXPerformance {
Write-Host "Adjusting visual effects for performance..."
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "DragFullWindows" -Type String -Value 0
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "MenuShowDelay" -Type String -Value 0
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Type Binary -Value ([byte[]](0x90,0x12,0x03,0x80,0x10,0x00,0x00,0x00))
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop\WindowMetrics" -Name "MinAnimate" -Type String -Value 0
Set-ItemProperty -Path "HKCU:\Control Panel\Keyboard" -Name "KeyboardDelay" -Type DWord -Value 0
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewAlphaSelect" -Type DWord -Value 0
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewShadow" -Type DWord -Value 0
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarAnimations" -Type DWord -Value 0
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -Type DWord -Value 3
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\DWM" -Name "EnableAeroPeek" -Type DWord -Value 0
}
# Adjusts visual effects for appearance
Function SetVisualFXAppearance {
Write-Host "Adjusting visual effects for appearance..."
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "DragFullWindows" -Type String -Value 1
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "MenuShowDelay" -Type String -Value 400
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Type Binary -Value ([byte[]](0x9E,0x1E,0x07,0x80,0x12,0x00,0x00,0x00))
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop\WindowMetrics" -Name "MinAnimate" -Type String -Value 1
Set-ItemProperty -Path "HKCU:\Control Panel\Keyboard" -Name "KeyboardDelay" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewAlphaSelect" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewShadow" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarAnimations" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -Type DWord -Value 3
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\DWM" -Name "EnableAeroPeek" -Type DWord -Value 1
}
# Disable thumbnails, show only file extension icons
Function DisableThumbnails {
Write-Host "Disabling thumbnails..."
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "IconsOnly" -Type DWord -Value 1
}
# Enable thumbnails
Function EnableThumbnails {
Write-Host "Enabling thumbnails..."
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "IconsOnly" -Type DWord -Value 0
}
# Disable creation of Thumbs.db thumbnail cache files
Function DisableThumbsDB {
Write-Host "Disabling creation of Thumbs.db..."
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "DisableThumbnailCache" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "DisableThumbsDBOnNetworkFolders" -Type DWord -Value 1
}
# Enable creation of Thumbs.db thumbnail cache files
Function EnableThumbsDB {
Write-Host "Enable creation of Thumbs.db..."
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "DisableThumbnailCache" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "DisableThumbsDBOnNetworkFolders" -ErrorAction SilentlyContinue
}
# Add secondary en-US keyboard
Function AddENKeyboard {
Write-Host "Adding secondary en-US keyboard..."
@@ -1062,7 +1251,7 @@ Function InstallOneDrive {
}
# Uninstall default Microsoft applications
Function UninstallBloatware {
Function UninstallMsftBloat {
Write-Host "Uninstalling default Microsoft applications..."
Get-AppxPackage "Microsoft.3DBuilder" | Remove-AppxPackage
Get-AppxPackage "Microsoft.BingFinance" | Remove-AppxPackage
@@ -1089,23 +1278,10 @@ Function UninstallBloatware {
Get-AppxPackage "Microsoft.Office.Sway" | Remove-AppxPackage
Get-AppxPackage "Microsoft.Messaging" | Remove-AppxPackage
Get-AppxPackage "Microsoft.CommsPhone" | Remove-AppxPackage
Get-AppxPackage "9E2F88E3.Twitter" | Remove-AppxPackage
Get-AppxPackage "king.com.CandyCrushSodaSaga" | Remove-AppxPackage
Get-AppxPackage "4DF9E0F8.Netflix" | Remove-AppxPackage
Get-AppxPackage "Drawboard.DrawboardPDF" | Remove-AppxPackage
Get-AppxPackage "Microsoft.MicrosoftStickyNotes" | Remove-AppxPackage
Get-AppxPackage "Microsoft.OneConnect" | Remove-AppxPackage
Get-AppxPackage "D52A8D61.FarmVille2CountryEscape" | Remove-AppxPackage
Get-AppxPackage "GAMELOFTSA.Asphalt8Airborne" | Remove-AppxPackage
Get-AppxPackage "Microsoft.WindowsFeedbackHub" | Remove-AppxPackage
Get-AppxPackage "Microsoft.MinecraftUWP" | Remove-AppxPackage
Get-AppxPackage "flaregamesGmbH.RoyalRevolt2" | Remove-AppxPackage
Get-AppxPackage "AdobeSystemsIncorporated.AdobePhotoshopExpress" | Remove-AppxPackage
Get-AppxPackage "ActiproSoftwareLLC.562882FEEB491" | Remove-AppxPackage
Get-AppxPackage "D5EA27B7.Duolingo-LearnLanguagesforFree" | Remove-AppxPackage
Get-AppxPackage "Facebook.Facebook" | Remove-AppxPackage
Get-AppxPackage "46928bounde.EclipseManager" | Remove-AppxPackage
Get-AppxPackage "A278AB0D.MarchofEmpires" | Remove-AppxPackage
Get-AppxPackage "Microsoft.MicrosoftPowerBIForWindows" | Remove-AppxPackage
Get-AppxPackage "Microsoft.NetworkSpeedTest" | Remove-AppxPackage
Get-AppxPackage "Microsoft.MSPaint" | Remove-AppxPackage
@@ -1114,7 +1290,7 @@ Function UninstallBloatware {
}
# Install default Microsoft applications
Function InstallBloatware {
Function InstallMsftBloat {
Write-Host "Installing default Microsoft applications..."
Get-AppxPackage -AllUsers "Microsoft.3DBuilder" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.BingFinance" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
@@ -1141,23 +1317,10 @@ Function InstallBloatware {
Get-AppxPackage -AllUsers "Microsoft.Office.Sway" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.Messaging" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.CommsPhone" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "9E2F88E3.Twitter" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "king.com.CandyCrushSodaSaga" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "4DF9E0F8.Netflix" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Drawboard.DrawboardPDF" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.MicrosoftStickyNotes" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.OneConnect" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "D52A8D61.FarmVille2CountryEscape" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "GAMELOFTSA.Asphalt8Airborne" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.WindowsFeedbackHub" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.MinecraftUWP" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "flaregamesGmbH.RoyalRevolt2" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "AdobeSystemsIncorporated.AdobePhotoshopExpress" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "ActiproSoftwareLLC.562882FEEB491" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "D5EA27B7.Duolingo-LearnLanguagesforFree" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Facebook.Facebook" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "46928bounde.EclipseManager" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "A278AB0D.MarchofEmpires" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.MicrosoftPowerBIForWindows" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.NetworkSpeedTest" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Microsoft.MSPaint" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
@@ -1171,6 +1334,50 @@ Function InstallBloatware {
# dism /Unmount-Image /Discard /MountDir:C:\Mnt
# Remove-Item -Path C:\Mnt -Recurse
# Uninstall default third party applications
function UninstallThirdPartyBloat {
Write-Host "Uninstalling default third party applications..."
Get-AppxPackage "9E2F88E3.Twitter" | Remove-AppxPackage
Get-AppxPackage "king.com.CandyCrushSodaSaga" | Remove-AppxPackage
Get-AppxPackage "4DF9E0F8.Netflix" | Remove-AppxPackage
Get-AppxPackage "Drawboard.DrawboardPDF" | Remove-AppxPackage
Get-AppxPackage "D52A8D61.FarmVille2CountryEscape" | Remove-AppxPackage
Get-AppxPackage "GAMELOFTSA.Asphalt8Airborne" | Remove-AppxPackage
Get-AppxPackage "flaregamesGmbH.RoyalRevolt2" | Remove-AppxPackage
Get-AppxPackage "AdobeSystemsIncorporated.AdobePhotoshopExpress" | Remove-AppxPackage
Get-AppxPackage "ActiproSoftwareLLC.562882FEEB491" | Remove-AppxPackage
Get-AppxPackage "D5EA27B7.Duolingo-LearnLanguagesforFree" | Remove-AppxPackage
Get-AppxPackage "Facebook.Facebook" | Remove-AppxPackage
Get-AppxPackage "46928bounde.EclipseManager" | Remove-AppxPackage
Get-AppxPackage "A278AB0D.MarchofEmpires" | Remove-AppxPackage
Get-AppxPackage "KeeperSecurityInc.Keeper" | Remove-AppxPackage
Get-AppxPackage "king.com.BubbleWitch3Saga" | Remove-AppxPackage
Get-AppxPackage "89006A2E.AutodeskSketchBook" | Remove-AppxPackage
Get-AppxPackage "CAF9E577.Plex" | Remove-AppxPackage
}
# Install default third party applications
Function InstallThirdPartyBloat {
Write-Host "Installing default third party applications..."
Get-AppxPackage -AllUsers "9E2F88E3.Twitter" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "king.com.CandyCrushSodaSaga" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "4DF9E0F8.Netflix" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Drawboard.DrawboardPDF" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "D52A8D61.FarmVille2CountryEscape" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "GAMELOFTSA.Asphalt8Airborne" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "flaregamesGmbH.RoyalRevolt2" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "AdobeSystemsIncorporated.AdobePhotoshopExpress" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "ActiproSoftwareLLC.562882FEEB491" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "D5EA27B7.Duolingo-LearnLanguagesforFree" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "Facebook.Facebook" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "46928bounde.EclipseManager" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "A278AB0D.MarchofEmpires" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "KeeperSecurityInc.Keeper" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "king.com.BubbleWitch3Saga" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "89006A2E.AutodeskSketchBook" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Get-AppxPackage -AllUsers "CAF9E577.Plex" | ForEach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
}
# Uninstall Windows Store
Function UninstallWindowsStore {
Write-Host "Uninstalling Windows Store..."
@@ -1478,12 +1685,22 @@ Function EnableIEEnhancedSecurity {
# Auxiliary Functions
##########
# Relaunch the script with administrator privileges
Function RequireAdmin {
If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")) {
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" $args" -WorkingDirectory $pwd -Verb RunAs
Exit
}
}
# Wait for key press
Function WaitForKey {
Write-Host
Write-Host "Press any key to continue..." -ForegroundColor Black -BackgroundColor White
[Console]::ReadKey($true) | Out-Null
}
# Restart computer
Function Restart {
Write-Host "Restarting..."
Restart-Computer
@@ -1495,17 +1712,11 @@ Function Restart {
# Parse parameters and apply tweaks
##########
# Ask for elevated privileges if required
If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")) {
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" $args" -WorkingDirectory $pwd -Verb RunAs
Exit
}
# Load function names from command line arguments or a preset file
If ($args) {
$tweaks = $args
If ($args[0].ToLower() -eq "-preset") {
$tweaks = Get-Content $args[1] -ErrorAction Stop | ForEach { $_.Trim() } | Where { $_ -ne "" -and $_[0] -ne "#" }
$tweaks = Get-Content "$($args | Select-Object -Skip 1)" -ErrorAction Stop | ForEach { $_.Trim() } | Where { $_ -ne "" -and $_[0] -ne "#" }
}
}

View File

@@ -1,3 +1,3 @@
@ECHO OFF
powershell.exe -NoProfile -ExecutionPolicy Bypass -File %~dp0..\Win10.ps1 -preset "%~dp0Win10-ApplyAll.preset"
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0..\Win10.ps1" -preset "%~dp0Win10-ApplyAll.preset"

View File

@@ -1,21 +1,24 @@
# Windows 10 - Apply all
RequireAdmin
DisableTelemetry
DisableWiFiSense
DisableSmartScreen
DisableWebSearch
DisableStartSuggestions
DisableLocationTracking
DisableMapUpdates
DisableFeedback
DisableAdvertisingID
DisableCortana
DisableErrorReporting
RestrictUpdateP2P
SetP2PUpdateLocal
DisableAutoLogger
DisableDiagTrack
DisableWAPPush
LowerUAC
SetUACLow
EnableSharingMappedDrives
DisableAdminShares
DisableSMB1
@@ -32,14 +35,21 @@ EnableRemoteDesktop
DisableAutoplay
DisableAutorun
DisableDefragmentation
DisableSuperfetch
DisableIndexing
SetBIOSTimeUTC
EnableHibernation
DisableFastStartup
DisableActionCenter
DisableLockScreen
DisableLockScreenRS1
HideNetworkFromLockScreen
HideShutdownFromLockScreen
DisableStickyKeys
ShowTaskManagerDetails
ShowFileOperationsDetails
EnableFileDeleteConfirm
HideTaskbarSearchBox
HideTaskView
ShowSmallTaskbarIcons
@@ -50,7 +60,7 @@ ShowKnownExtensions
ShowHiddenFiles
HideSyncNotifications
HideRecentShortcuts
ExplorerThisPC
SetExplorerThisPC
ShowThisPCOnDesktop
HideDesktopFromThisPC
HideDocumentsFromThisPC
@@ -58,12 +68,16 @@ HideDownloadsFromThisPC
HideMusicFromThisPC
HidePicturesFromThisPC
HideVideosFromThisPC
SetVisualFXPerformance
DisableThumbnails
DisableThumbsDB
AddENKeyboard
EnableNumlock
DisableOneDrive
UninstallOneDrive
UninstallBloatware
UninstallMsftBloat
UninstallThirdPartyBloat
UninstallWindowsStore
DisableConsumerApps
DisableXboxFeatures

View File

@@ -1,3 +1,3 @@
@ECHO OFF
powershell.exe -NoProfile -ExecutionPolicy Bypass -File %~dp0..\Win10.ps1 -preset "%~dp0Win10-RestoreAll.preset"
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0..\Win10.ps1" -preset "%~dp0Win10-RestoreAll.preset"

View File

@@ -1,21 +1,24 @@
# Windows 10 - Restore all
RequireAdmin
EnableTelemetry
EnableWiFiSense
EnableSmartScreen
EnableWebSearch
EnableStartSuggestions
EnableLocationTracking
EnableMapUpdates
EnableFeedback
EnableAdvertisingID
EnableCortana
EnableErrorReporting
UnrestrictUpdateP2P
SetP2PUpdateInternet
EnableAutoLogger
EnableDiagTrack
EnableWAPPush
RaiseUAC
SetUACHigh
DisableSharingMappedDrives
EnableAdminShares
EnableSMB1
@@ -32,14 +35,21 @@ DisableRemoteDesktop
EnableAutoplay
EnableAutorun
EnableDefragmentation
EnableSuperfetch
EnableIndexing
SetBIOSTimeLocal
DisableHibernation
EnableFastStartup
EnableActionCenter
EnableLockScreen
EnableLockScreenRS1
ShowNetworkOnLockScreen
ShowShutdownOnLockScreen
EnableStickyKeys
HideTaskManagerDetails
HideFileOperationsDetails
DisableFileDeleteConfirm
ShowTaskbarSearchBox
ShowTaskView
ShowLargeTaskbarIcons
@@ -50,7 +60,7 @@ HideKnownExtensions
HideHiddenFiles
ShowSyncNotifications
ShowRecentShortcuts
ExplorerQuickAccess
SetExplorerQuickAccess
HideThisPCFromDesktop
ShowDesktopInThisPC
ShowDocumentsInThisPC
@@ -58,12 +68,16 @@ ShowDownloadsInThisPC
ShowMusicInThisPC
ShowPicturesInThisPC
ShowVideosInThisPC
SetVisualFXAppearance
EnableThumbnails
EnableThumbsDB
RemoveENKeyboard
DisableNumlock
EnableOneDrive
InstallOneDrive
InstallBloatware
InstallMsftBloat
InstallThirdPartyBloat
InstallWindowsStore
EnableConsumerApps
EnableXboxFeatures

View File

@@ -1,3 +1,3 @@
@ECHO OFF
powershell.exe -NoProfile -ExecutionPolicy Bypass -File %~dp0..\Win10.ps1 -preset "%~dp0WinServer2016-ApplyAll.preset"
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0..\Win10.ps1" -preset "%~dp0WinServer2016-ApplyAll.preset"

View File

@@ -1,21 +1,24 @@
# Windows Server 2016 - Apply all
RequireAdmin
DisableTelemetry
DisableWiFiSense
DisableSmartScreen
DisableWebSearch
DisableStartSuggestions
DisableLocationTracking
DisableMapUpdates
DisableFeedback
DisableAdvertisingID
DisableCortana
DisableErrorReporting
RestrictUpdateP2P
SetP2PUpdateLocal
DisableAutoLogger
DisableDiagTrack
DisableWAPPush
LowerUAC
SetUACHigh
EnableSharingMappedDrives
DisableAdminShares
DisableSMB1
@@ -32,14 +35,21 @@ EnableRemoteDesktop
DisableAutoplay
DisableAutorun
DisableDefragmentation
# DisableSuperfetch
DisableIndexing
SetBIOSTimeUTC
EnableHibernation
DisableFastStartup
DisableActionCenter
DisableLockScreen
DisableLockScreenRS1
HideNetworkFromLockScreen
HideShutdownFromLockScreen
DisableStickyKeys
ShowTaskManagerDetails
ShowFileOperationsDetails
EnableFileDeleteConfirm
HideTaskbarSearchBox
HideTaskView
ShowSmallTaskbarIcons
@@ -50,7 +60,7 @@ ShowKnownExtensions
ShowHiddenFiles
HideSyncNotifications
HideRecentShortcuts
ExplorerThisPC
SetExplorerThisPC
ShowThisPCOnDesktop
HideDesktopFromThisPC
HideDocumentsFromThisPC
@@ -58,12 +68,16 @@ HideDownloadsFromThisPC
HideMusicFromThisPC
HidePicturesFromThisPC
HideVideosFromThisPC
SetVisualFXPerformance
DisableThumbnails
DisableThumbsDB
AddENKeyboard
EnableNumlock
DisableOneDrive
# UninstallOneDrive
UninstallBloatware
UninstallMsftBloat
UninstallThirdPartyBloat
UninstallWindowsStore
DisableConsumerApps
DisableXboxFeatures

View File

@@ -1,3 +1,3 @@
@ECHO OFF
powershell.exe -NoProfile -ExecutionPolicy Bypass -File %~dp0..\Win10.ps1 -preset "%~dp0WinServer2016-RestoreAll.preset"
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0..\Win10.ps1" -preset "%~dp0WinServer2016-RestoreAll.preset"

View File

@@ -1,21 +1,24 @@
# Windows Server 2016 - Restore all
RequireAdmin
EnableTelemetry
EnableWiFiSense
EnableSmartScreen
EnableWebSearch
EnableStartSuggestions
EnableLocationTracking
EnableMapUpdates
EnableFeedback
EnableAdvertisingID
EnableCortana
EnableErrorReporting
UnrestrictUpdateP2P
SetP2PUpdateInternet
EnableAutoLogger
EnableDiagTrack
EnableWAPPush
RaiseUAC
SetUACHigh
DisableSharingMappedDrives
EnableAdminShares
EnableSMB1
@@ -32,14 +35,21 @@ DisableRemoteDesktop
EnableAutoplay
EnableAutorun
EnableDefragmentation
# EnableSuperfetch
EnableIndexing
SetBIOSTimeLocal
DisableHibernation
EnableFastStartup
EnableActionCenter
EnableLockScreen
EnableLockScreenRS1
ShowNetworkOnLockScreen
ShowShutdownOnLockScreen
EnableStickyKeys
HideTaskManagerDetails
HideFileOperationsDetails
DisableFileDeleteConfirm
ShowTaskbarSearchBox
ShowTaskView
ShowLargeTaskbarIcons
@@ -50,7 +60,7 @@ HideKnownExtensions
HideHiddenFiles
ShowSyncNotifications
ShowRecentShortcuts
ExplorerQuickAccess
SetExplorerQuickAccess
HideThisPCFromDesktop
ShowDesktopInThisPC
ShowDocumentsInThisPC
@@ -58,12 +68,16 @@ ShowDownloadsInThisPC
ShowMusicInThisPC
ShowPicturesInThisPC
ShowVideosInThisPC
SetVisualFXAppearance
EnableThumbnails
EnableThumbsDB
RemoveENKeyboard
DisableNumlock
EnableOneDrive
# InstallOneDrive
InstallBloatware
InstallMsftBloat
InstallThirdPartyBloat
InstallWindowsStore
EnableConsumerApps
EnableXboxFeatures