Last active
February 17, 2019 20:05
-
-
Save jasamour/9f77f234dfa827726921566aee0c9529 to your computer and use it in GitHub Desktop.
Win10 Pro WSL WebDev Boxstarter Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Description: Windows 10 Pro / WSL Modern Web Development Boxstarter Script | |
# Author: JASM. Credit goes to many gist.github.com sources especially (jessfraz, NickCraver, and Microsoft) | |
# | |
############################ | |
# Instructions | |
############################ | |
# 1: Install Boxstarter from the web using PowerShell v3 or higher | |
# . { iwr -useb https://boxstarter.org/bootstrapper.ps1 } | iex; get-boxstarter -Force | |
# | |
# 2: Set the PowerShell execution policy to runs scripts that are downloaded from the Internet and not signed | |
# Set-ExecutionPolicy RemoteSigned | |
# | |
# 3: Install the Boxstarter package | |
# Install-BoxstarterPackage -PackageName <URL-TO-RAW-GIST> -DisableReboots | |
# | |
# Learn more: http://boxstarter.org/Learn/WebLauncher | |
Disable-UAC | |
############################ | |
# Developer Mode | |
############################ | |
#--- Enable developer mode on the system --- | |
Set-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\AppModelUnlock -Name AllowDevelopmentWithoutDevLicense -Value 1 | |
############################ | |
# Configuring File Explorer | |
############################ | |
# Show hidden files, Show protected OS files, Show file extensions | |
Set-WindowsExplorerOptions -EnableShowHiddenFilesFoldersDrives -EnableShowProtectedOSFiles -EnableShowFileExtensions | |
# Expand explorer to the actual folder you're in | |
Set-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name NavPaneExpandToCurrentFolder -Value 1 | |
# Adds things back in your left pane like recycle bin | |
Set-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name NavPaneShowAllFolders -Value 1 | |
# Change Explorer home screen back to "This PC" | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name LaunchTo -Type DWord -Value 1 | |
# Change it back to "Quick Access" (Windows 10 default) | |
#Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name LaunchTo -Type DWord -Value 2 | |
# These make "Quick Access" behave much closer to the old "Favorites" | |
# Disable Quick Access: Recent Files | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name ShowRecent -Type DWord -Value 0 | |
# Disable Quick Access: Frequent Folders | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name ShowFrequent -Type DWord -Value 0 | |
# To Restore: | |
#Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name ShowRecent -Type DWord -Value 1 | |
#Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name ShowFrequent -Type DWord -Value 1 | |
############################ | |
# Personal Preferences on UI | |
############################ | |
# Set PC name | |
$computername = "JASM-PC" | |
if ($env:computername -ne $computername) { | |
Rename-Computer -NewName $computername | |
} | |
# Disable the Lock Screen (the one before password prompt - to prevent dropping the first character) | |
If (-Not (Test-Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization)) { | |
New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows -Name Personalization | Out-Null | |
} | |
Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization -Name NoLockScreen -Type DWord -Value 1 | |
# To Restore: | |
#Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization -Name NoLockScreen -Type DWord -Value 1 | |
# Use the Windows 7-8.1 Style Volume Mixer | |
If (-Not (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MTCUVC")) { | |
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name MTCUVC | Out-Null | |
} | |
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MTCUVC" -Name EnableMtcUvc -Type DWord -Value 0 | |
# To Restore (Windows 10 Style Volume Control): | |
#Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MTCUVC" -Name EnableMtcUvc -Type DWord -Value 1 | |
# Dark Theme for Windows (commenting out by default because this one's probbly a minority want) | |
# Note: the title bar text and such is still black with low contrast, and needs additional tweaks (it'll probably be better in a future build) | |
If (-Not (Test-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize)) { | |
New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes -Name Personalize | Out-Null | |
} | |
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Type DWord -Value 0 | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Type DWord -Value 0 | |
# To Restore (Light Theme): | |
#Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Type DWord -Value 1 | |
#Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Type DWord -Value 1 | |
# Remove 3D Objects from This PC | |
Remove-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}" | |
Remove-Item "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}" | |
################## | |
# Privacy Settings | |
################## | |
# Privacy: Let apps use my advertising ID: Disable | |
If (-Not (Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo")) { | |
New-Item -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo | Out-Null | |
} | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Name Enabled -Type DWord -Value 0 | |
# To Restore: | |
#Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Name Enabled -Type DWord -Value 1 | |
# Privacy: SmartScreen Filter for Store Apps: Disable | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Name EnableWebContentEvaluation -Type DWord -Value 0 | |
# To Restore: | |
#Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Name EnableWebContentEvaluation -Type DWord -Value 1 | |
# WiFi Sense: HotSpot Sharing: Disable | |
If (-Not (Test-Path "HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting")) { | |
New-Item -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting | Out-Null | |
} | |
Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting -Name value -Type DWord -Value 0 | |
# To Restore: | |
# Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting -Name value -Type DWord -Value 1 | |
# WiFi Sense: Shared HotSpot Auto-Connect: Disable | |
Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots -Name value -Type DWord -Value 0 | |
# Start Menu: Disable Bing Search Results | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search -Name BingSearchEnabled -Type DWord -Value 0 | |
# To Restore (Enabled): | |
# Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search -Name BingSearchEnabled -Type DWord -Value 1 | |
# Start Menu: Disable Cortana | |
If (-Not (Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search")) { | |
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows" -Name "Windows Search" | |
} | |
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name AllowCortana -Type DWord -Value 0 | |
# To Restore (Enabled): | |
# Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name AllowCortana -Type DWord -Value 1 | |
# Disable Telemetry (requires a reboot to take effect) | |
# Note this may break Insider builds for your organization | |
# Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection -Name AllowTelemetry -Type DWord -Value 0 | |
# Get-Service DiagTrack,Dmwappushservice | Stop-Service | Set-Service -StartupType Disabled | |
# Software: Disable Xbox Gamebar | |
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\GameDVR" -Name AppCaptureEnabled -Type DWord -Value 0 | |
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name GameDVR_Enabled -Type DWord -Value 0 | |
# To Restore: | |
# Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\GameDVR" -Name AppCaptureEnabled -Type DWord -Value 1 | |
# Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name GameDVR_Enabled -Type DWord -Value 1 | |
# Taskbar: Turn off People in Taskbar | |
If (-Not (Test-Path "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People")) { | |
New-Item -Path HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People | Out-Null | |
} | |
Set-ItemProperty -Path "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" -Name PeopleBand -Type DWord -Value 0 | |
# To Restore: | |
# Set-ItemProperty -Path "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" -Name PeopleBand -Type DWord -Value 1 | |
################# | |
# Windows Updates | |
################# | |
# Change Windows Updates to "Notify to schedule restart" | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name UxOption -Type DWord -Value 1 | |
# To Restore (Automatic): | |
#Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name UxOption -Type DWord -Value 0 | |
# Disable P2P Update downloads outside of local network | |
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config -Name DODownloadMode -Type DWord -Value 1 | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization -Name SystemSettingsDownloadMode -Type DWord -Value 3 | |
# To restore (PCs on my local network and PCs on the internet) | |
#Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config -Name DODownloadMode -Type DWord -Value 3 | |
#Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization -Name SystemSettingsDownloadMode -Type DWord -Value 1 | |
# To disable P2P update downloads completely: | |
#Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config -Name DODownloadMode -Type DWord -Value 0 | |
################### | |
# Windows Bloatware | |
################### | |
#--- Uninstall unecessary applications that come with Windows out of the box --- | |
Write-Host "Uninstall some applications that come with Windows out of the box" -ForegroundColor "Yellow" | |
function removeApp { | |
Param ([string]$appName) | |
Write-Output "Trying to remove $appName" | |
Get-AppxPackage $appName -AllUsers | Remove-AppxPackage | |
Get-AppXProvisionedPackage -Online | Where DisplayNam -like $appName | Remove-AppxProvisionedPackage -Online | |
} | |
$applicationList = @( | |
"Microsoft.BingNews" | |
"Microsoft.BingWeather" | |
"Microsoft.3DBuilder" | |
"Microsoft.BingFinance" | |
"Microsoft.BingSports" | |
"Microsoft.CommsPhone" | |
"Microsoft.GetHelp" | |
"Microsoft.Getstarted" | |
"Microsoft.Messaging" | |
"Microsoft.Microsoft3DViewer" | |
"Microsoft.Office.OneNote" | |
"Microsoft.Print3D" | |
"Microsoft.WindowsMaps" | |
"Microsoft.WindowsPhone" | |
"Microsoft.Office.Sway" | |
"Microsoft.NetworkSpeedTest" | |
"Microsoft.FreshPaint" | |
"Microsoft.XboxApp" | |
"Microsoft.XboxIdentityProvider" | |
"Microsoft.YourPhone" | |
"Microsoft.ZuneMusic" | |
"Microsoft.ZuneVideo" | |
"*Minecraft*" | |
"*MarchofEmpires*" | |
"*Autodesk*" | |
"*BubbleWitch*" | |
"king.com*" | |
"G5*" | |
"*Dell*" | |
"*Facebook*" | |
"*Fitbit*" | |
"*Keeper*" | |
"*Netflix*" | |
"*Twitter*" | |
"*Plex*" | |
"*NORDCURRENT*" | |
"*ThumbmunkeysLtd*" | |
"*.Duolingo-LearnLanguagesforFree" | |
"*.EclipseManager" | |
"ActiproSoftwareLLC.562882FEEB491" # Code Writer | |
"*.AdobePhotoshopExpress" | |
); | |
foreach ($app in $applicationList) { | |
removeApp $app | |
} | |
# Uninstall McAfee Security App | |
$mcafee = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -match "McAfee Security" } | select UninstallString | |
if ($mcafee) { | |
$mcafee = $mcafee.UninstallString -Replace "C:\Program Files\McAfee\MSC\mcuihost.exe","" | |
Write "Uninstalling McAfee..." | |
start-process "C:\Program Files\McAfee\MSC\mcuihost.exe" -arg "$mcafee" -Wait | |
} | |
##################### | |
# Web Developer Tools | |
##################### | |
# Windows Development Tools | |
choco install -y sysinternals | |
choco install -y firacode | |
choco install -y inconsolata | |
choco install -y postman | |
choco install -y vscode | |
#--- VS Code Extensions --- | |
code --install-extension msjsdiag.debugger-for-chrome | |
code --install-extension msjsdiag.debugger-for-edge | |
code --install-extension akamud.vscode-theme-onedark | |
code --install-extension azemoh.one-monokai | |
code --install-extension christian-kohler.npm-intellisense | |
code --install-extension DigitalBrainstem.javascript-ejs-support | |
code --install-extension eg2.vscode-npm-script | |
code --install-extension esbenp.prettier-vscode | |
code --install-extension leizongmin.node-module-intellisense | |
code --install-extension PKief.material-icon-theme | |
code --install-extension robertohuertasm.vscode-icons | |
code --install-extension vthiery.prettify-selected-json | |
code --install-extension whizkydee.material-palenight-theme | |
code --install-extension xabikos.JavaScriptSnippets | |
#--- Hyper-V --- | |
choco install -y Microsoft-Hyper-V-All --source="'windowsFeatures'" | |
#--- Docker --- | |
Enable-WindowsOptionalFeature -Online -FeatureName containers -All | |
RefreshEnv | |
choco install -y docker-for-windows | |
choco install -y vscode-docker | |
#--- Browsers --- | |
choco install -y googlechrome.dev | |
choco install -y firefox | |
############################ | |
# Windows Software and Apps | |
############################ | |
#--- Software --- | |
choco install -y 7zip.install | |
choco install -y discord | |
choco install -y spotify | |
choco install -y dropbox | |
choco install -y playnite | |
choco install -y stretchly | |
choco install -y vlc | |
############################# | |
# Windows Subsystem for Linux | |
############################# | |
#--- WSL --- | |
choco install -y Microsoft-Windows-Subsystem-Linux --source="'windowsfeatures'" | |
#--- Ubuntu --- | |
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile ~/Ubuntu.appx -UseBasicParsing | |
Add-AppxPackage -Path ~/Ubuntu.appx | |
# Install the distribuiton with no user and leave the default user set to root with no password | |
RefreshEnv | |
Ubuntu1804 install --root | |
Ubuntu1804 run apt update | |
Ubuntu1804 run apt upgrade -y | |
#--- Configuring the WSL environment --- | |
write-host "Installing tools inside the WSL distro..." | |
Ubuntu1804 run apt install git -y | |
Ubuntu1804 run apt install build-essential -y | |
Ubuntu1804 run apt install curl wget unzip zip tmux -y | |
Ubuntu1804 run apt install python3 -y | |
Ubuntu1804 run curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash | |
Ubuntu1804 run source ~/.bashrc | |
Ubuntu1804 run nvm install --lts -y | |
write-host "Finished installing tools inside the WSL distro" | |
Enable-UAC | |
Enable-MicrosoftUpdate | |
Install-WindowsUpdate -acceptEula |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment