Last active
September 14, 2019 10:30
-
-
Save lediur/6222254ed6e31fc70ff0aedee6a34bf8 to your computer and use it in GitHub Desktop.
First-run Windows setup scripts
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
# Inspired by https://gist.github.com/mivano/2b078f267d3ca1e9996c07085eb59a60 | |
# and personal machine setup scripts | |
###################### | |
# Configure Chocolatey | |
###################### | |
choco config set --name=cacheLocation --value=C:\ChocolateyCache | |
choco feature enable --name=allowGlobalConfirmation | |
choco feature enable --name=useRememberedArgumentsForUpgrades | |
################## | |
# Privacy Settings | |
################## | |
# Privacy: Let apps use my advertising ID: Disable | |
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 (enable): | |
Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Name EnableWebContentEvaluation -Type DWord -Value 1 | |
# WiFi Sense: HotSpot Sharing: Disable | |
# Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting -Name value -Type DWord -Value 0 | |
# WiFi Sense: Shared HotSpot Auto-Connect: Disable | |
Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots -Name value -Type DWord -Value 0 | |
# Disable Telemetry (requires a reboot to take effect) | |
# 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 | |
############################ | |
# Personal Preferences on UI | |
############################ | |
Set-WindowsExplorerOptions ` | |
-EnableShowHiddenFilesFoldersDrives ` | |
-EnableShowFileExtensions ` | |
-DisableOpenFileExplorerToQuickAccess ` | |
-DisableShowRecentFilesInQuickAccess ` | |
-DisableShowFrequentFoldersInQuickAccess | |
Set-TaskbarOptions ` | |
-Dock Bottom ` | |
-Combine Always ` | |
-AlwaysShowIconsOff ` | |
-Size Large | |
Set-TaskbarOptions -Lock | |
Update-ExecutionPolicy RemoteSigned | |
############################### | |
# Windows 10 Metro App Removals | |
# These start commented out so you choose | |
# Just remove the # (comment in PowerShell) on the ones you want to remove | |
############################### | |
# Be gone, heathen! | |
Get-AppxPackage king.com.CandyCrushSaga | Remove-AppxPackage | |
# Bing Weather, News, Sports, and Finance (Money): | |
# Get-AppxPackage Microsoft.BingWeather | Remove-AppxPackage | |
Get-AppxPackage Microsoft.BingNews | Remove-AppxPackage | |
Get-AppxPackage Microsoft.BingSports | Remove-AppxPackage | |
Get-AppxPackage Microsoft.BingFinance | Remove-AppxPackage | |
# Xbox: | |
# Get-AppxPackage Microsoft.XboxApp | Remove-AppxPackage | |
# Windows Phone Companion | |
Get-AppxPackage Microsoft.WindowsPhone | Remove-AppxPackage | |
# Solitaire Collection | |
Get-AppxPackage Microsoft.MicrosoftSolitaireCollection | Remove-AppxPackage | |
# People | |
# Get-AppxPackage Microsoft.People | Remove-AppxPackage | |
# Groove Music | |
# Get-AppxPackage Microsoft.ZuneMusic | Remove-AppxPackage | |
# Movies & TV | |
#Get-AppxPackage Microsoft.ZuneVideo | Remove-AppxPackage | |
# OneNote | |
#Get-AppxPackage Microsoft.Office.OneNote | Remove-AppxPackage | |
# Photos | |
#Get-AppxPackage Microsoft.Windows.Photos | Remove-AppxPackage | |
# Sound Recorder | |
#Get-AppxPackage Microsoft.WindowsSoundRecorder | Remove-AppxPackage | |
# Mail & Calendar | |
#Get-AppxPackage microsoft.windowscommunicationsapps | Remove-AppxPackage | |
# Skype (Metro version) | |
#Get-AppxPackage Microsoft.SkypeApp | Remove-AppxPackage | |
################## | |
# Windows Features | |
################## | |
choco install Microsoft-Hyper-V-All --source windowsfeatures | |
choco install Microsoft-Windows-Subsystem-Linux --source windowsfeatures | |
################# | |
# 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 downlods 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 | |
Install-WindowsUpdate -AcceptEula -GetUpdatesFromMS | |
################## | |
# Install packages | |
################## | |
# Typefaces | |
choco install firacode -y | |
choco install sourcecodepro -y | |
choco install hackfont -y | |
choco install dejavufonts -y | |
choco install inconsolata -y | |
# choco install lato -y # very noisy | |
choco install bitstreamverafonts -y | |
# Tools/Utilities | |
choco install git -y | |
choco install git-credential-winstore -y | |
# choco install gitextensions -y | |
choco install 7zip -y | |
# choco install greenshot -y # better screenshots | |
# choco install carnac -y # http://carnackeys.com/ HUD for keypresses (useful for presentations) | |
choco install sysinternals -y | |
choco install putty.install -y | |
# Languange Runtimes | |
choco install nodejs -y | |
choco install miniconda3 -y | |
choco install jdk8 -y | |
# Permanently set user paths | |
[Environment]::SetEnvironmentVariable( | |
"PATH", | |
$env:PATH + ";C:\ProgramData\Miniconda3;C:\ProgramData\Miniconda3\Scripts", | |
[System.EnvironmentVariableTarget]::User | |
) | |
# Applications | |
choco install firefox -y | |
choco install googlechrome -y | |
choco install intellijidea-community -y | |
choco install visualstudiocode -y | |
# choco install atom -y | |
choco install sublimetext3 -y | |
choco install hyper -y | |
choco install yarn -y | |
# choco install docker-for-windows -y # should install manually for beta bits | |
choco install kubernetes-cli -y | |
# choco install beyondcompare -y | |
choco install ProcExp -y | |
choco install poshgit -y | |
########################### | |
# Set up powershell profile | |
########################### | |
Install-Module z -AllowClobber -Scope CurrentUser | |
Write-Host "Creating custom $profile.CurrentUserAllHosts for Powershell" | |
if (!(test-path $profile.CurrentUserAllHosts)) { | |
New-Item -path $profile.CurrentUserAllHosts -type file -force | |
} | |
Add-Content $profile.CurrentUserAllHosts $(Invoke-RestMethod "https://gist.github.com/lediur/6222254ed6e31fc70ff0aedee6a34bf8/raw/profile.ps1") | |
Add-PoshGitToProfile -AllHosts | |
Write-Host | |
######### | |
# Cleanup | |
######### | |
del C:\eula*.txt | |
del C:\install.* | |
del C:\vcredist.* | |
del C:\vc_red.* | |
del ~\Desktop\* |
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
import-module z | |
Import-Module 'C:\tools\poshgit\dahlbyk-posh-git-a4faccd\src\posh-git.psd1' | |
function prompt { | |
$shortenedPath = (Get-ShortenedPromptPath $((pwd).Path)) | |
$host.UI.RawUI.WindowTitle = ("PS " + $shortenedPath) | |
$colorHostFg = [ConsoleColor]::White | |
$colorLocation = [ConsoleColor]::Cyan | |
if (Test-IsAdmin) { | |
$colorHostBg = [ConsoleColor]::Red | |
$host.UI.RawUI.WindowTitle += " (Admin)" | |
} | |
else { | |
$colorHostBg = [ConsoleColor]::Blue | |
} | |
$realLASTEXITCODE = $LASTEXITCODE | |
# Reset color, which can be messed up by Enable-GitColors | |
# $Host.UI.RawUI.ForegroundColor = $GitPromptSettings.DefaultForegroundColor | |
Write-Host ([net.dns]::GetHostName().ToLower()) -n -f $colorHostFg -b $colorHostBg | |
Write-Host "" $shortenedPath -n -f $colorLocation | |
Write-VcsStatus | |
$global:LASTEXITCODE = $realLASTEXITCODE | |
if ($shortenedPath.length -gt 20) { | |
Write-Host " " | |
} | |
else { | |
Write-Host " " -n | |
} | |
return "> " | |
} | |
function Get-ShortenedPromptPath([string] $path) { | |
$loc = $path.Replace($HOME, '~') | |
return $loc | |
} | |
function Test-IsAdmin { | |
try { | |
$identity = [Security.Principal.WindowsIdentity]::GetCurrent() | |
$principal = New-Object Security.Principal.WindowsPrincipal -ArgumentList $identity | |
return $principal.IsInRole( [Security.Principal.WindowsBuiltInRole]::Administrator ) | |
} | |
catch { | |
throw "Failed to determine if the current user has elevated privileges. The error was: '{0}'." -f $_ | |
} | |
<# | |
.SYNOPSIS | |
Checks if the current Powershell instance is running with elevated privileges or not. | |
.EXAMPLE | |
PS C:\> Test-IsAdmin | |
.OUTPUTS | |
System.Boolean | |
True if the current Powershell is elevated, false if not. | |
#> | |
} | |
function Write-Centered { | |
Param( [string] $message, | |
[string] $fgcolor = "White") | |
$offsetvalue = [Math]::Round(([Console]::WindowWidth / 2) + ($message.Length / 2)) | |
Write-Host ("{0,$offsetvalue}" -f $message) -ForegroundColor $fgcolor | |
} | |
function Show-WelcomeMessage { | |
Write-Centered ([net.dns]::GetHostName().ToUpper() -replace '(.)', '$1 ') -fgcolor "White" | |
$current_date = Get-Date -Format 'D' | |
$current_uptime = (get-date) - ([System.Management.ManagementDateTimeconverter]::ToDateTime((Get-WmiObject win32_operatingsystem).lastbootuptime)) | |
$uptime_string = "Up for " + ("{0:%d}d {1:%h}h {2:%m}m {3:%s}s" -f ($current_uptime, $current_uptime, $current_uptime, $current_uptime)) | |
Write-Centered ($current_date + " | " + $uptime_string) -fgcolor "DarkGray" | |
Write-Host "" | |
} | |
clear | |
Show-WelcomeMessage |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment