diff --git a/.gitignore b/.gitignore index 77dde13..2e195ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store -desktop.ini \ No newline at end of file +desktop.ini +._* \ No newline at end of file diff --git a/Autounattend/Custom-Scripts.txt b/Autounattend/Custom-Scripts.txt new file mode 100644 index 0000000..281860f --- /dev/null +++ b/Autounattend/Custom-Scripts.txt @@ -0,0 +1,13 @@ +# Add These Commands Under "Custom Scripts, Scripts to Run When First User Logs On" + +# 1. CMD +curl -L https://gitea.tcse.us/tricounty/tcse-deploy/archive/main.zip --output C:\Scripts.zip + +# 2. PS1 +Expand-Archive -Path 'C:\Scripts.zip' -DestinationPath 'C:\Scripts' +Remove-Item -Path 'C:\Scripts.zip' +Move-Item -Path 'C:\Scripts\tcse-deploy\*' -Destination 'C:\Scripts' +Remove-Item -Path 'C:\Scripts\tcse-deploy\' + +# 3. CMD +C:\Scripts\TCSE-Computer-Deploy.bat \ No newline at end of file diff --git a/Autounattend/Desktop/autounattend.xml b/Autounattend/Desktop/autounattend.xml new file mode 100644 index 0000000..3c93f3c --- /dev/null +++ b/Autounattend/Desktop/autounattend.xml @@ -0,0 +1,683 @@ + + + + + + + + en-US + + 0409:00000409 + en-US + en-US + en-US + + + + + + 0 + 3 + + + + + + 8PTT6-RNW4C-6V7J2-C2D3X-MHBPB + + true + + false + + + 1 + cmd.exe /c ">>"X:\diskpart.txt" (echo SELECT DISK=0&echo CLEAN&echo CONVERT GPT&echo CREATE PARTITION EFI SIZE=600&echo FORMAT QUICK FS=FAT32 LABEL="System"&echo CREATE PARTITION MSR SIZE=16)" + + + 2 + cmd.exe /c ">>"X:\diskpart.txt" (echo CREATE PARTITION PRIMARY&echo SHRINK MINIMUM=1500&echo FORMAT QUICK FS=NTFS LABEL="Windows"&echo CREATE PARTITION PRIMARY&echo FORMAT QUICK FS=NTFS LABEL="Recovery")" + + + 3 + cmd.exe /c ">>"X:\diskpart.txt" (echo SET ID="de94bba4-06d1-4d40-a16a-bfd50179d6ac"&echo GPT ATTRIBUTES=0x8000000000000001)" + + + 4 + cmd.exe /c "diskpart.exe /s "X:\diskpart.txt" >>"X:\diskpart.log" || ( type "X:\diskpart.log" & echo diskpart encountered an error. & pause & exit /b 1 )" + + + 5 + reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f + + + 6 + reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f + + + 7 + reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f + + + + + + + + + + 1 + powershell.exe -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;" + + + 2 + powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\Specialize.ps1' -Raw | Invoke-Expression;" + + + 3 + reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT" + + + 4 + powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\DefaultUser.ps1' -Raw | Invoke-Expression;" + + + 5 + reg.exe unload "HKU\DefaultUser" + + + + + Central Standard Time + + + + + + + 0409:00000409 + en-US + en-US + en-US + + + + + + Tech + Administrators + + SandlotSlickBoat25! + true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + </UserAccounts> + <AutoLogon> + <Username>Tech</Username> + <Enabled>true</Enabled> + <LogonCount>1</LogonCount> + <Password> + <Value>SandlotSlickBoat25!</Value> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <OOBE> + <ProtectYourPC>3</ProtectYourPC> + <HideEULAPage>true</HideEULAPage> + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> + <HideOnlineAccountScreens>false</HideOnlineAccountScreens> + </OOBE> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\FirstLogon.ps1' -Raw | Invoke-Expression;"</CommandLine> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> + <Extensions xmlns="https://schneegans.de/windows/unattend-generator/"> + <ExtractScript> +param( + [xml] $Document +); + +foreach( $file in $Document.unattend.Extensions.File ) { + $path = [System.Environment]::ExpandEnvironmentVariables( + $file.GetAttribute( 'path' ) + ); + mkdir -Path( $path | Split-Path -Parent ) -ErrorAction 'SilentlyContinue'; + $content = $file.InnerText.Trim(); + if( $file.GetAttribute( 'transformation' ) -ieq 'Base64' ) { + [System.IO.File]::WriteAllBytes( $path, [System.Convert]::FromBase64String( $content ) ); + } else { + $encoding = switch( [System.IO.Path]::GetExtension( $path ) ) { + { $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8; } + { $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new( $false, $true ); } + default { [System.Text.Encoding]::Default; } + }; + [System.IO.File]::WriteAllBytes( $path, ( $encoding.GetPreamble() + $encoding.GetBytes( $content ) ) ); + } +} + </ExtractScript> + <File path="C:\Windows\Setup\Scripts\RemovePackages.ps1" transformation="Text"> +$selectors = @( + 'Microsoft.Microsoft3DViewer'; + 'Microsoft.BingSearch'; + 'Microsoft.WindowsCalculator'; + 'Microsoft.WindowsCamera'; + 'Clipchamp.Clipchamp'; + 'Microsoft.WindowsAlarms'; + 'Microsoft.549981C3F5F10'; + 'Microsoft.Windows.DevHome'; + 'MicrosoftCorporationII.MicrosoftFamily'; + 'Microsoft.WindowsFeedbackHub'; + 'Microsoft.GetHelp'; + 'Microsoft.Getstarted'; + 'microsoft.windowscommunicationsapps'; + 'Microsoft.WindowsMaps'; + 'Microsoft.MixedReality.Portal'; + 'Microsoft.BingNews'; + 'Microsoft.MicrosoftOfficeHub'; + 'Microsoft.Office.OneNote'; + 'Microsoft.OutlookForWindows'; + 'Microsoft.Paint'; + 'Microsoft.MSPaint'; + 'Microsoft.People'; + 'Microsoft.Windows.Photos'; + 'Microsoft.PowerAutomateDesktop'; + 'MicrosoftCorporationII.QuickAssist'; + 'Microsoft.SkypeApp'; + 'Microsoft.MicrosoftSolitaireCollection'; + 'Microsoft.MicrosoftStickyNotes'; + 'MicrosoftTeams'; + 'MSTeams'; + 'Microsoft.Todos'; + 'Microsoft.WindowsSoundRecorder'; + 'Microsoft.Wallet'; + 'Microsoft.BingWeather'; + 'Microsoft.Xbox.TCUI'; + 'Microsoft.XboxApp'; + 'Microsoft.XboxGameOverlay'; + 'Microsoft.XboxGamingOverlay'; + 'Microsoft.XboxIdentityProvider'; + 'Microsoft.XboxSpeechToTextOverlay'; + 'Microsoft.GamingApp'; + 'Microsoft.YourPhone'; + 'Microsoft.ZuneMusic'; + 'Microsoft.ZuneVideo'; +); +$getCommand = { + Get-AppxProvisionedPackage -Online; +}; +$filterCommand = { + $_.DisplayName -eq $selector; +}; +$removeCommand = { + [CmdletBinding()] + param( + [Parameter( Mandatory, ValueFromPipeline )] + $InputObject + ); + process { + $InputObject | Remove-AppxProvisionedPackage -AllUsers -Online -ErrorAction 'Continue'; + } +}; +$type = 'Package'; +$logfile = 'C:\Windows\Setup\Scripts\RemovePackages.log'; +&amp; { + $installed = &amp; $getCommand; + foreach( $selector in $selectors ) { + $result = [ordered] @{ + Selector = $selector; + }; + $found = $installed | Where-Object -FilterScript $filterCommand; + if( $found ) { + $result.Output = $found | &amp; $removeCommand; + if( $? ) { + $result.Message = "$type removed."; + } else { + $result.Message = "$type not removed."; + $result.Error = $Error[0]; + } + } else { + $result.Message = "$type not installed."; + } + $result | ConvertTo-Json -Depth 3 -Compress; + } +} *&gt;&amp;1 &gt;&gt; $logfile; + </File> + <File path="C:\Windows\Setup\Scripts\RemoveCapabilities.ps1" transformation="Text"> +$selectors = @( + 'Print.Fax.Scan'; + 'Language.Handwriting'; + 'Browser.InternetExplorer'; + 'MathRecognizer'; + 'OneCoreUAP.OneSync'; + 'OpenSSH.Client'; + 'Microsoft.Windows.MSPaint'; + 'Microsoft.Windows.PowerShell.ISE'; + 'App.Support.QuickAssist'; + 'Language.Speech'; + 'Language.TextToSpeech'; + 'App.StepsRecorder'; + 'Hello.Face.18967'; + 'Hello.Face.Migration.18967'; + 'Hello.Face.20134'; + 'Media.WindowsMediaPlayer'; + 'Microsoft.Windows.WordPad'; +); +$getCommand = { + Get-WindowsCapability -Online | Where-Object -Property 'State' -NotIn -Value @( + 'NotPresent'; + 'Removed'; + ); +}; +$filterCommand = { + ($_.Name -split '~')[0] -eq $selector; +}; +$removeCommand = { + [CmdletBinding()] + param( + [Parameter( Mandatory, ValueFromPipeline )] + $InputObject + ); + process { + $InputObject | Remove-WindowsCapability -Online -ErrorAction 'Continue'; + } +}; +$type = 'Capability'; +$logfile = 'C:\Windows\Setup\Scripts\RemoveCapabilities.log'; +&amp; { + $installed = &amp; $getCommand; + foreach( $selector in $selectors ) { + $result = [ordered] @{ + Selector = $selector; + }; + $found = $installed | Where-Object -FilterScript $filterCommand; + if( $found ) { + $result.Output = $found | &amp; $removeCommand; + if( $? ) { + $result.Message = "$type removed."; + } else { + $result.Message = "$type not removed."; + $result.Error = $Error[0]; + } + } else { + $result.Message = "$type not installed."; + } + $result | ConvertTo-Json -Depth 3 -Compress; + } +} *&gt;&amp;1 &gt;&gt; $logfile; + </File> + <File path="C:\Windows\Setup\Scripts\RemoveFeatures.ps1" transformation="Text"> +$selectors = @( + 'MediaPlayback'; + 'MicrosoftWindowsPowerShellV2Root'; + 'Microsoft-RemoteDesktopConnection'; + 'Recall'; +); +$getCommand = { + Get-WindowsOptionalFeature -Online | Where-Object -Property 'State' -NotIn -Value @( + 'Disabled'; + 'DisabledWithPayloadRemoved'; + ); +}; +$filterCommand = { + $_.FeatureName -eq $selector; +}; +$removeCommand = { + [CmdletBinding()] + param( + [Parameter( Mandatory, ValueFromPipeline )] + $InputObject + ); + process { + $InputObject | Disable-WindowsOptionalFeature -Online -Remove -NoRestart -ErrorAction 'Continue'; + } +}; +$type = 'Feature'; +$logfile = 'C:\Windows\Setup\Scripts\RemoveFeatures.log'; +&amp; { + $installed = &amp; $getCommand; + foreach( $selector in $selectors ) { + $result = [ordered] @{ + Selector = $selector; + }; + $found = $installed | Where-Object -FilterScript $filterCommand; + if( $found ) { + $result.Output = $found | &amp; $removeCommand; + if( $? ) { + $result.Message = "$type removed."; + } else { + $result.Message = "$type not removed."; + $result.Error = $Error[0]; + } + } else { + $result.Message = "$type not installed."; + } + $result | ConvertTo-Json -Depth 3 -Compress; + } +} *&gt;&amp;1 &gt;&gt; $logfile; + </File> + <File path="C:\Windows\Setup\Scripts\TaskbarIcons.ps1" transformation="Text"> +Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband' -Name '*'; + </File> + <File path="C:\Windows\Setup\Scripts\SetStartPins.ps1" transformation="Text"> +$json = '{"pinnedList":[]}'; +if( [System.Environment]::OSVersion.Version.Build -lt 20000 ) { + return; +} +$key = 'Registry::HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start'; +New-Item -Path $key -ItemType 'Directory' -ErrorAction 'SilentlyContinue'; +Set-ItemProperty -LiteralPath $key -Name 'ConfigureStartPins' -Value $json -Type 'String'; + </File> + <File path="C:\Windows\Setup\Scripts\SetColorTheme.ps1" transformation="Text"> +$lightThemeSystem = 1; +$lightThemeApps = 1; +$accentColorOnStart = 0; +$enableTransparency = 0; +$htmlAccentColor = '#0078D4'; +&amp; { + $params = @{ + LiteralPath = 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize'; + Force = $true; + Type = 'DWord'; + }; + Set-ItemProperty @params -Name 'SystemUsesLightTheme' -Value $lightThemeSystem; + Set-ItemProperty @params -Name 'AppsUseLightTheme' -Value $lightThemeApps; + Set-ItemProperty @params -Name 'ColorPrevalence' -Value $accentColorOnStart; + Set-ItemProperty @params -Name 'EnableTransparency' -Value $enableTransparency; +}; +&amp; { + Add-Type -AssemblyName 'System.Drawing'; + $accentColor = [System.Drawing.ColorTranslator]::FromHtml( $htmlAccentColor ); + + function ConvertTo-DWord { + param( + [System.Drawing.Color] + $Color + ); + + [byte[]] $bytes = @( + $Color.R; + $Color.G; + $Color.B; + $Color.A; + ); + return [System.BitConverter]::ToUInt32( $bytes, 0); + } + + $startColor = [System.Drawing.Color]::FromArgb( 0xD2, $accentColor ); + Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Accent' -Name 'StartColorMenu' -Value( ConvertTo-DWord -Color $accentColor ) -Type 'DWord' -Force; + Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Accent' -Name 'AccentColorMenu' -Value( ConvertTo-DWord -Color $accentColor ) -Type 'DWord' -Force; + Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\DWM' -Name 'AccentColor' -Value( ConvertTo-DWord -Color $accentColor ) -Type 'DWord' -Force; + $params = @{ + LiteralPath = 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Accent'; + Name = 'AccentPalette'; + }; + $palette = Get-ItemPropertyValue @params; + $index = 20; + $palette[ $index++ ] = $accentColor.R; + $palette[ $index++ ] = $accentColor.G; + $palette[ $index++ ] = $accentColor.B; + $palette[ $index++ ] = $accentColor.A; + Set-ItemProperty @params -Value $palette -Type 'Binary' -Force; +}; + </File> + <File path="C:\Windows\Setup\Scripts\SetWallpaper.ps1" transformation="Text"> +Add-Type -TypeDefinition ' + using System.Drawing; + using System.Runtime.InteropServices; + + public static class WallpaperSetter { + [DllImport("user32.dll")] + private static extern bool SetSysColors( + int cElements, + int[] lpaElements, + int[] lpaRgbValues + ); + + [DllImport("user32.dll")] + private static extern bool SystemParametersInfo( + uint uiAction, + uint uiParam, + string pvParam, + uint fWinIni + ); + + public static void SetDesktopBackground(Color color) { + SystemParametersInfo(20, 0, "", 0); + SetSysColors(1, new int[] { 1 }, new int[] { ColorTranslator.ToWin32(color) }); + } + + public static void SetDesktopImage(string file) { + SystemParametersInfo(20, 0, file, 0); + } + } +' -ReferencedAssemblies 'System.Drawing'; + +function Set-WallpaperColor { + param( + [string] + $HtmlColor + ); + + $color = [System.Drawing.ColorTranslator]::FromHtml( $HtmlColor ); + [WallpaperSetter]::SetDesktopBackground( $color ); + Set-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers' -Name 'BackgroundType' -Type 'DWord' -Value 1 -Force; + Set-ItemProperty -Path 'Registry::HKCU\Control Panel\Desktop' -Name 'WallPaper' -Type 'String' -Value '' -Force; + Set-ItemProperty -Path 'Registry::HKCU\Control Panel\Colors' -Name 'Background' -Type 'String' -Value "$($color.R) $($color.G) $($color.B)" -Force; +} + +function Set-WallpaperImage { + param( + [string] + $LiteralPath + ); + + [WallpaperSetter]::SetDesktopImage( $LiteralPath ); + Set-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers' -Name 'BackgroundType' -Type 'DWord' -Value 0 -Force; + Set-ItemProperty -Path 'Registry::HKCU\Control Panel\Desktop' -Name 'WallPaper' -Type 'String' -Value $LiteralPath -Force; +} +Set-WallpaperColor -HtmlColor '#0978D3'; + </File> + <File path="C:\Windows\Setup\Scripts\unattend-01.cmd" transformation="Text"> +curl -L https://gitea.tcse.us/tricounty/tcse-deploy/archive/main.zip --output C:\Scripts.zip + </File> + <File path="C:\Windows\Setup\Scripts\unattend-02.ps1" transformation="Text"> +Expand-Archive -Path 'C:\Scripts.zip' -DestinationPath 'C:\Scripts' +Remove-Item -Path 'C:\Scripts.zip' +Move-Item -Path 'C:\Scripts\tcse-deploy\*' -Destination 'C:\Scripts' +Remove-Item -Path 'C:\Scripts\tcse-deploy\' + </File> + <File path="C:\Windows\Setup\Scripts\unattend-03.cmd" transformation="Text"> +C:\Scripts\TCSE-Computer-Deploy.bat + </File> + <File path="C:\Windows\Setup\Scripts\Specialize.ps1" transformation="Text"> +$scripts = @( + { + reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f; + }; + { + reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f; + }; + { + Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate' -Force -ErrorAction 'SilentlyContinue'; + }; + { + Remove-Item -LiteralPath 'C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk', 'C:\Windows\System32\OneDriveSetup.exe', 'C:\Windows\SysWOW64\OneDriveSetup.exe' -ErrorAction 'Continue'; + }; + { + Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\OutlookUpdate' -Force -ErrorAction 'SilentlyContinue'; + }; + { + reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v ConfigureChatAutoInstall /t REG_DWORD /d 0 /f; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemovePackages.ps1' -Raw | Invoke-Expression; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveCapabilities.ps1' -Raw | Invoke-Expression; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveFeatures.ps1' -Raw | Invoke-Expression; + }; + { + net.exe accounts /maxpwage:UNLIMITED; + }; + { + Set-ExecutionPolicy -Scope 'LocalMachine' -ExecutionPolicy 'RemoteSigned' -Force; + }; + { + reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Dsh" /v AllowNewsAndInterests /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\BitLocker" /v "PreventDeviceEncryption" /t REG_DWORD /d 1 /f; + }; + { + reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v HideFirstRunExperience /t REG_DWORD /d 1 /f; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetStartPins.ps1' -Raw | Invoke-Expression; + }; +); + +&amp; { + [float] $complete = 0; + [float] $increment = 100 / $scripts.Count; + foreach( $script in $scripts ) { + Write-Progress -Activity 'Running scripts to customize your Windows installation. Do not close this window.' -PercentComplete $complete; + &amp; $script; + $complete += $increment; + } +} *&gt;&amp;1 &gt;&gt; "C:\Windows\Setup\Scripts\Specialize.log"; + </File> + <File path="C:\Windows\Setup\Scripts\UserOnce.ps1" transformation="Text"> +$scripts = @( + { + Get-AppxPackage -Name 'Microsoft.Windows.Ai.Copilot.Provider' | Remove-AppxPackage; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\TaskbarIcons.ps1' -Raw | Invoke-Expression; + }; + { + Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Search' -Name 'SearchboxTaskbarMode' -Type 'DWord' -Value 1; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetColorTheme.ps1' -Raw | Invoke-Expression; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetWallpaper.ps1' -Raw | Invoke-Expression; + }; + { + Get-Process -Name 'explorer' -ErrorAction 'SilentlyContinue' | Where-Object -FilterScript { + $_.SessionId -eq ( Get-Process -Id $PID ).SessionId; + } | Stop-Process -Force; + }; +); + +&amp; { + [float] $complete = 0; + [float] $increment = 100 / $scripts.Count; + foreach( $script in $scripts ) { + Write-Progress -Activity 'Running scripts to configure this user account. Do not close this window.' -PercentComplete $complete; + &amp; $script; + $complete += $increment; + } +} *&gt;&amp;1 &gt;&gt; "$env:TEMP\UserOnce.log"; + </File> + <File path="C:\Windows\Setup\Scripts\DefaultUser.ps1" transformation="Text"> +$scripts = @( + { + reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f; + }; + { + Remove-ItemProperty -LiteralPath 'Registry::HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'OneDriveSetup' -Force -ErrorAction 'Continue'; + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowTaskViewButton /t REG_DWORD /d 0 /f; + }; + { + $names = @( + 'ContentDeliveryAllowed'; + 'FeatureManagementEnabled'; + 'OEMPreInstalledAppsEnabled'; + 'PreInstalledAppsEnabled'; + 'PreInstalledAppsEverEnabled'; + 'SilentInstalledAppsEnabled'; + 'SoftLandingEnabled'; + 'SubscribedContentEnabled'; + 'SubscribedContent-310093Enabled'; + 'SubscribedContent-338387Enabled'; + 'SubscribedContent-338388Enabled'; + 'SubscribedContent-338389Enabled'; + 'SubscribedContent-338393Enabled'; + 'SubscribedContent-353698Enabled'; + 'SystemPaneSuggestionsEnabled'; + ); + + foreach( $name in $names ) { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v $name /t REG_DWORD /d 0 /f; + } + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v TaskbarAl /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\Explorer" /v DisableSearchBoxSuggestions /t REG_DWORD /d 1 /f; + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\DWM" /v ColorPrevalence /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "UnattendedSetup" /t REG_SZ /d "powershell.exe -NoProfile -Command \""Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\UserOnce.ps1' -Raw | Invoke-Expression;\""" /f; + }; +); + +&amp; { + [float] $complete = 0; + [float] $increment = 100 / $scripts.Count; + foreach( $script in $scripts ) { + Write-Progress -Activity 'Running scripts to modify the default user&#x2019;&#x2019;s registry hive. Do not close this window.' -PercentComplete $complete; + &amp; $script; + $complete += $increment; + } +} *&gt;&amp;1 &gt;&gt; "C:\Windows\Setup\Scripts\DefaultUser.log"; + </File> + <File path="C:\Windows\Setup\Scripts\FirstLogon.ps1" transformation="Text"> +$scripts = @( + { + Set-ItemProperty -LiteralPath 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name 'AutoLogonCount' -Type 'DWord' -Force -Value 0; + }; + { + cmd.exe /c "rmdir C:\Windows.old"; + }; + { + C:\Windows\Setup\Scripts\unattend-01.cmd; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\unattend-02.ps1' -Raw | Invoke-Expression; + }; + { + C:\Windows\Setup\Scripts\unattend-03.cmd; + }; +); + +&amp; { + [float] $complete = 0; + [float] $increment = 100 / $scripts.Count; + foreach( $script in $scripts ) { + Write-Progress -Activity 'Running scripts to finalize your Windows installation. Do not close this window.' -PercentComplete $complete; + &amp; $script; + $complete += $increment; + } +} *&gt;&amp;1 &gt;&gt; "C:\Windows\Setup\Scripts\FirstLogon.log"; + </File> + </Extensions> +</unattend> \ No newline at end of file diff --git a/Autounattend/Laptop/autounattend.xml b/Autounattend/Laptop/autounattend.xml new file mode 100644 index 0000000..5b37392 --- /dev/null +++ b/Autounattend/Laptop/autounattend.xml @@ -0,0 +1,716 @@ +<?xml version="1.0" encoding="utf-8"?> +<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> + <!--https://schneegans.de/windows/unattend-generator/?LanguageMode=Unattended&UILanguage=en-US&Locale=en-US&Keyboard=00000409&GeoLocation=244&ProcessorArchitecture=amd64&BypassRequirementsCheck=true&BypassNetworkCheck=true&ComputerNameMode=Random&CompactOsMode=Default&TimeZoneMode=Explicit&TimeZone=Central+Standard+Time&PartitionMode=Unattended&PartitionLayout=GPT&EspSize=600&RecoveryMode=Partition&RecoverySize=1500&WindowsEditionMode=Unattended&WindowsEdition=pro_education&UserAccountMode=Unattended&AccountName0=Tech&AccountPassword0=SandlotSlickBoat25%21&AccountGroup0=Administrators&AccountName1=&AccountName2=&AccountName3=&AccountName4=&AutoLogonMode=Own&PasswordExpirationMode=Unlimited&LockoutMode=Default&HideFiles=Hidden&TaskbarSearch=Icon&ShowFileExtensions=true&DisableWidgets=true&LeftTaskbar=true&DeleteTaskbarIcons=true&HideTaskViewButton=true&DisableBingResults=true&AllowPowerShellScripts=true&DisableAppSuggestions=true&PreventDeviceEncryption=true&HideEdgeFre=true&WifiMode=Unattended&WifiName=Tricounty&WifiAuthentication=WPA2PSK&WifiPassword=TCSEwifi19%21&ExpressSettings=DisableAll&KeysMode=Skip&ColorMode=Custom&SystemColorTheme=Light&AppsColorTheme=Light&AccentColor=%230078d4&WallpaperMode=Solid&WallpaperColor=%230978d3&Remove3DViewer=true&RemoveBingSearch=true&RemoveCalculator=true&RemoveCamera=true&RemoveClipchamp=true&RemoveClock=true&RemoveCopilot=true&RemoveCortana=true&RemoveDevHome=true&RemoveFamily=true&RemoveFeedbackHub=true&RemoveGetHelp=true&RemoveHandwriting=true&RemoveInternetExplorer=true&RemoveMailCalendar=true&RemoveMaps=true&RemoveMathInputPanel=true&RemoveMediaFeatures=true&RemoveMixedReality=true&RemoveZuneVideo=true&RemoveNews=true&RemoveOffice365=true&RemoveOneDrive=true&RemoveOneNote=true&RemoveOneSync=true&RemoveOpenSSHClient=true&RemoveOutlook=true&RemovePaint=true&RemovePaint3D=true&RemovePeople=true&RemovePhotos=true&RemovePowerAutomate=true&RemovePowerShell2=true&RemovePowerShellISE=true&RemoveQuickAssist=true&RemoveRecall=true&RemoveRdpClient=true&RemoveSkype=true&RemoveSolitaire=true&RemoveSpeech=true&RemoveStepsRecorder=true&RemoveStickyNotes=true&RemoveTeams=true&RemoveGetStarted=true&RemoveToDo=true&RemoveVoiceRecorder=true&RemoveWallet=true&RemoveWeather=true&RemoveFaxAndScan=true&RemoveWindowsHello=true&RemoveWindowsMediaPlayer=true&RemoveZuneMusic=true&RemoveWordPad=true&RemoveXboxApps=true&RemoveYourPhone=true&StartTilesMode=Default&StartPinsMode=Empty&FirstLogonScript0=curl+-L+https%3A%2F%2Fgitea.tcse.us%2Ftricounty%2Ftcse-deploy%2Farchive%2Fmain.zip+%2D%2Doutput+C%3A%5CScripts.zip&FirstLogonScriptType0=Cmd&FirstLogonScript1=Expand-Archive+-Path+%27C%3A%5CScripts.zip%27+-DestinationPath+%27C%3A%5CScripts%27%0D%0ARemove-Item+-Path+%27C%3A%5CScripts.zip%27%0D%0AMove-Item+-Path+%27C%3A%5CScripts%5Ctcse-deploy%5C*%27+-Destination+%27C%3A%5CScripts%27%0D%0ARemove-Item+-Path+%27C%3A%5CScripts%5Ctcse-deploy%5C%27&FirstLogonScriptType1=Ps1&FirstLogonScript2=C%3A%5CScripts%5CTCSE-Computer-Deploy.bat&FirstLogonScriptType2=Cmd&WdacMode=Skip--> + <settings pass="offlineServicing"></settings> + <settings pass="windowsPE"> + <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <SetupUILanguage> + <UILanguage>en-US</UILanguage> + </SetupUILanguage> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <ImageInstall> + <OSImage> + <InstallTo> + <DiskID>0</DiskID> + <PartitionID>3</PartitionID> + </InstallTo> + </OSImage> + </ImageInstall> + <UserData> + <ProductKey> + <Key>8PTT6-RNW4C-6V7J2-C2D3X-MHBPB</Key> + </ProductKey> + <AcceptEula>true</AcceptEula> + </UserData> + <UseConfigurationSet>false</UseConfigurationSet> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>cmd.exe /c "&gt;&gt;"X:\diskpart.txt" (echo SELECT DISK=0&amp;echo CLEAN&amp;echo CONVERT GPT&amp;echo CREATE PARTITION EFI SIZE=600&amp;echo FORMAT QUICK FS=FAT32 LABEL="System"&amp;echo CREATE PARTITION MSR SIZE=16)"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>cmd.exe /c "&gt;&gt;"X:\diskpart.txt" (echo CREATE PARTITION PRIMARY&amp;echo SHRINK MINIMUM=1500&amp;echo FORMAT QUICK FS=NTFS LABEL="Windows"&amp;echo CREATE PARTITION PRIMARY&amp;echo FORMAT QUICK FS=NTFS LABEL="Recovery")"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>cmd.exe /c "&gt;&gt;"X:\diskpart.txt" (echo SET ID="de94bba4-06d1-4d40-a16a-bfd50179d6ac"&amp;echo GPT ATTRIBUTES=0x8000000000000001)"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>cmd.exe /c "diskpart.exe /s "X:\diskpart.txt" &gt;&gt;"X:\diskpart.log" || ( type "X:\diskpart.log" &amp; echo diskpart encountered an error. &amp; pause &amp; exit /b 1 )"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>6</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>7</Order> + <Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path> + </RunSynchronousCommand> + </RunSynchronous> + </component> + </settings> + <settings pass="generalize"></settings> + <settings pass="specialize"> + <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <RunSynchronous> + <RunSynchronousCommand wcm:action="add"> + <Order>1</Order> + <Path>powershell.exe -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>2</Order> + <Path>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\Specialize.ps1' -Raw | Invoke-Expression;"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>3</Order> + <Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>4</Order> + <Path>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\DefaultUser.ps1' -Raw | Invoke-Expression;"</Path> + </RunSynchronousCommand> + <RunSynchronousCommand wcm:action="add"> + <Order>5</Order> + <Path>reg.exe unload "HKU\DefaultUser"</Path> + </RunSynchronousCommand> + </RunSynchronous> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <TimeZone>Central Standard Time</TimeZone> + </component> + </settings> + <settings pass="auditSystem"></settings> + <settings pass="auditUser"></settings> + <settings pass="oobeSystem"> + <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <InputLocale>0409:00000409</InputLocale> + <SystemLocale>en-US</SystemLocale> + <UILanguage>en-US</UILanguage> + <UserLocale>en-US</UserLocale> + </component> + <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> + <UserAccounts> + <LocalAccounts> + <LocalAccount wcm:action="add"> + <Name>Tech</Name> + <Group>Administrators</Group> + <Password> + <Value>SandlotSlickBoat25!</Value> + <PlainText>true</PlainText> + </Password> + </LocalAccount> + </LocalAccounts> + </UserAccounts> + <AutoLogon> + <Username>Tech</Username> + <Enabled>true</Enabled> + <LogonCount>1</LogonCount> + <Password> + <Value>SandlotSlickBoat25!</Value> + <PlainText>true</PlainText> + </Password> + </AutoLogon> + <OOBE> + <ProtectYourPC>3</ProtectYourPC> + <HideEULAPage>true</HideEULAPage> + <HideOnlineAccountScreens>false</HideOnlineAccountScreens> + </OOBE> + <FirstLogonCommands> + <SynchronousCommand wcm:action="add"> + <Order>1</Order> + <CommandLine>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\FirstLogon.ps1' -Raw | Invoke-Expression;"</CommandLine> + </SynchronousCommand> + </FirstLogonCommands> + </component> + </settings> + <Extensions xmlns="https://schneegans.de/windows/unattend-generator/"> + <ExtractScript> +param( + [xml] $Document +); + +foreach( $file in $Document.unattend.Extensions.File ) { + $path = [System.Environment]::ExpandEnvironmentVariables( + $file.GetAttribute( 'path' ) + ); + mkdir -Path( $path | Split-Path -Parent ) -ErrorAction 'SilentlyContinue'; + $content = $file.InnerText.Trim(); + if( $file.GetAttribute( 'transformation' ) -ieq 'Base64' ) { + [System.IO.File]::WriteAllBytes( $path, [System.Convert]::FromBase64String( $content ) ); + } else { + $encoding = switch( [System.IO.Path]::GetExtension( $path ) ) { + { $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8; } + { $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new( $false, $true ); } + default { [System.Text.Encoding]::Default; } + }; + [System.IO.File]::WriteAllBytes( $path, ( $encoding.GetPreamble() + $encoding.GetBytes( $content ) ) ); + } +} + </ExtractScript> + <File path="C:\Windows\Setup\Scripts\RemovePackages.ps1" transformation="Text"> +$selectors = @( + 'Microsoft.Microsoft3DViewer'; + 'Microsoft.BingSearch'; + 'Microsoft.WindowsCalculator'; + 'Microsoft.WindowsCamera'; + 'Clipchamp.Clipchamp'; + 'Microsoft.WindowsAlarms'; + 'Microsoft.549981C3F5F10'; + 'Microsoft.Windows.DevHome'; + 'MicrosoftCorporationII.MicrosoftFamily'; + 'Microsoft.WindowsFeedbackHub'; + 'Microsoft.GetHelp'; + 'Microsoft.Getstarted'; + 'microsoft.windowscommunicationsapps'; + 'Microsoft.WindowsMaps'; + 'Microsoft.MixedReality.Portal'; + 'Microsoft.BingNews'; + 'Microsoft.MicrosoftOfficeHub'; + 'Microsoft.Office.OneNote'; + 'Microsoft.OutlookForWindows'; + 'Microsoft.Paint'; + 'Microsoft.MSPaint'; + 'Microsoft.People'; + 'Microsoft.Windows.Photos'; + 'Microsoft.PowerAutomateDesktop'; + 'MicrosoftCorporationII.QuickAssist'; + 'Microsoft.SkypeApp'; + 'Microsoft.MicrosoftSolitaireCollection'; + 'Microsoft.MicrosoftStickyNotes'; + 'MicrosoftTeams'; + 'MSTeams'; + 'Microsoft.Todos'; + 'Microsoft.WindowsSoundRecorder'; + 'Microsoft.Wallet'; + 'Microsoft.BingWeather'; + 'Microsoft.Xbox.TCUI'; + 'Microsoft.XboxApp'; + 'Microsoft.XboxGameOverlay'; + 'Microsoft.XboxGamingOverlay'; + 'Microsoft.XboxIdentityProvider'; + 'Microsoft.XboxSpeechToTextOverlay'; + 'Microsoft.GamingApp'; + 'Microsoft.YourPhone'; + 'Microsoft.ZuneMusic'; + 'Microsoft.ZuneVideo'; +); +$getCommand = { + Get-AppxProvisionedPackage -Online; +}; +$filterCommand = { + $_.DisplayName -eq $selector; +}; +$removeCommand = { + [CmdletBinding()] + param( + [Parameter( Mandatory, ValueFromPipeline )] + $InputObject + ); + process { + $InputObject | Remove-AppxProvisionedPackage -AllUsers -Online -ErrorAction 'Continue'; + } +}; +$type = 'Package'; +$logfile = 'C:\Windows\Setup\Scripts\RemovePackages.log'; +&amp; { + $installed = &amp; $getCommand; + foreach( $selector in $selectors ) { + $result = [ordered] @{ + Selector = $selector; + }; + $found = $installed | Where-Object -FilterScript $filterCommand; + if( $found ) { + $result.Output = $found | &amp; $removeCommand; + if( $? ) { + $result.Message = "$type removed."; + } else { + $result.Message = "$type not removed."; + $result.Error = $Error[0]; + } + } else { + $result.Message = "$type not installed."; + } + $result | ConvertTo-Json -Depth 3 -Compress; + } +} *&gt;&amp;1 &gt;&gt; $logfile; + </File> + <File path="C:\Windows\Setup\Scripts\RemoveCapabilities.ps1" transformation="Text"> +$selectors = @( + 'Print.Fax.Scan'; + 'Language.Handwriting'; + 'Browser.InternetExplorer'; + 'MathRecognizer'; + 'OneCoreUAP.OneSync'; + 'OpenSSH.Client'; + 'Microsoft.Windows.MSPaint'; + 'Microsoft.Windows.PowerShell.ISE'; + 'App.Support.QuickAssist'; + 'Language.Speech'; + 'Language.TextToSpeech'; + 'App.StepsRecorder'; + 'Hello.Face.18967'; + 'Hello.Face.Migration.18967'; + 'Hello.Face.20134'; + 'Media.WindowsMediaPlayer'; + 'Microsoft.Windows.WordPad'; +); +$getCommand = { + Get-WindowsCapability -Online | Where-Object -Property 'State' -NotIn -Value @( + 'NotPresent'; + 'Removed'; + ); +}; +$filterCommand = { + ($_.Name -split '~')[0] -eq $selector; +}; +$removeCommand = { + [CmdletBinding()] + param( + [Parameter( Mandatory, ValueFromPipeline )] + $InputObject + ); + process { + $InputObject | Remove-WindowsCapability -Online -ErrorAction 'Continue'; + } +}; +$type = 'Capability'; +$logfile = 'C:\Windows\Setup\Scripts\RemoveCapabilities.log'; +&amp; { + $installed = &amp; $getCommand; + foreach( $selector in $selectors ) { + $result = [ordered] @{ + Selector = $selector; + }; + $found = $installed | Where-Object -FilterScript $filterCommand; + if( $found ) { + $result.Output = $found | &amp; $removeCommand; + if( $? ) { + $result.Message = "$type removed."; + } else { + $result.Message = "$type not removed."; + $result.Error = $Error[0]; + } + } else { + $result.Message = "$type not installed."; + } + $result | ConvertTo-Json -Depth 3 -Compress; + } +} *&gt;&amp;1 &gt;&gt; $logfile; + </File> + <File path="C:\Windows\Setup\Scripts\RemoveFeatures.ps1" transformation="Text"> +$selectors = @( + 'MediaPlayback'; + 'MicrosoftWindowsPowerShellV2Root'; + 'Microsoft-RemoteDesktopConnection'; + 'Recall'; +); +$getCommand = { + Get-WindowsOptionalFeature -Online | Where-Object -Property 'State' -NotIn -Value @( + 'Disabled'; + 'DisabledWithPayloadRemoved'; + ); +}; +$filterCommand = { + $_.FeatureName -eq $selector; +}; +$removeCommand = { + [CmdletBinding()] + param( + [Parameter( Mandatory, ValueFromPipeline )] + $InputObject + ); + process { + $InputObject | Disable-WindowsOptionalFeature -Online -Remove -NoRestart -ErrorAction 'Continue'; + } +}; +$type = 'Feature'; +$logfile = 'C:\Windows\Setup\Scripts\RemoveFeatures.log'; +&amp; { + $installed = &amp; $getCommand; + foreach( $selector in $selectors ) { + $result = [ordered] @{ + Selector = $selector; + }; + $found = $installed | Where-Object -FilterScript $filterCommand; + if( $found ) { + $result.Output = $found | &amp; $removeCommand; + if( $? ) { + $result.Message = "$type removed."; + } else { + $result.Message = "$type not removed."; + $result.Error = $Error[0]; + } + } else { + $result.Message = "$type not installed."; + } + $result | ConvertTo-Json -Depth 3 -Compress; + } +} *&gt;&amp;1 &gt;&gt; $logfile; + </File> + <File path="C:\Windows\Setup\Scripts\Wifi.xml" transformation="Text"> +&lt;WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"&gt; + &lt;name&gt;Tricounty&lt;/name&gt; + &lt;SSIDConfig&gt; + &lt;SSID&gt; + &lt;hex&gt;547269636F756E7479&lt;/hex&gt; + &lt;name&gt;Tricounty&lt;/name&gt; + &lt;/SSID&gt; + &lt;/SSIDConfig&gt; + &lt;connectionType&gt;ESS&lt;/connectionType&gt; + &lt;connectionMode&gt;auto&lt;/connectionMode&gt; + &lt;MSM&gt; + &lt;security&gt; + &lt;authEncryption&gt; + &lt;authentication&gt;WPA2PSK&lt;/authentication&gt; + &lt;encryption&gt;AES&lt;/encryption&gt; + &lt;useOneX&gt;false&lt;/useOneX&gt; + &lt;/authEncryption&gt; + &lt;sharedKey&gt; + &lt;keyType&gt;passPhrase&lt;/keyType&gt; + &lt;protected&gt;false&lt;/protected&gt; + &lt;keyMaterial&gt;TCSEwifi19!&lt;/keyMaterial&gt; + &lt;/sharedKey&gt; + &lt;/security&gt; + &lt;/MSM&gt; +&lt;/WLANProfile&gt; + </File> + <File path="C:\Windows\Setup\Scripts\TaskbarIcons.ps1" transformation="Text"> +Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband' -Name '*'; + </File> + <File path="C:\Windows\Setup\Scripts\SetStartPins.ps1" transformation="Text"> +$json = '{"pinnedList":[]}'; +if( [System.Environment]::OSVersion.Version.Build -lt 20000 ) { + return; +} +$key = 'Registry::HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start'; +New-Item -Path $key -ItemType 'Directory' -ErrorAction 'SilentlyContinue'; +Set-ItemProperty -LiteralPath $key -Name 'ConfigureStartPins' -Value $json -Type 'String'; + </File> + <File path="C:\Windows\Setup\Scripts\SetColorTheme.ps1" transformation="Text"> +$lightThemeSystem = 1; +$lightThemeApps = 1; +$accentColorOnStart = 0; +$enableTransparency = 0; +$htmlAccentColor = '#0078D4'; +&amp; { + $params = @{ + LiteralPath = 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize'; + Force = $true; + Type = 'DWord'; + }; + Set-ItemProperty @params -Name 'SystemUsesLightTheme' -Value $lightThemeSystem; + Set-ItemProperty @params -Name 'AppsUseLightTheme' -Value $lightThemeApps; + Set-ItemProperty @params -Name 'ColorPrevalence' -Value $accentColorOnStart; + Set-ItemProperty @params -Name 'EnableTransparency' -Value $enableTransparency; +}; +&amp; { + Add-Type -AssemblyName 'System.Drawing'; + $accentColor = [System.Drawing.ColorTranslator]::FromHtml( $htmlAccentColor ); + + function ConvertTo-DWord { + param( + [System.Drawing.Color] + $Color + ); + + [byte[]] $bytes = @( + $Color.R; + $Color.G; + $Color.B; + $Color.A; + ); + return [System.BitConverter]::ToUInt32( $bytes, 0); + } + + $startColor = [System.Drawing.Color]::FromArgb( 0xD2, $accentColor ); + Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Accent' -Name 'StartColorMenu' -Value( ConvertTo-DWord -Color $accentColor ) -Type 'DWord' -Force; + Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Accent' -Name 'AccentColorMenu' -Value( ConvertTo-DWord -Color $accentColor ) -Type 'DWord' -Force; + Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\DWM' -Name 'AccentColor' -Value( ConvertTo-DWord -Color $accentColor ) -Type 'DWord' -Force; + $params = @{ + LiteralPath = 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Accent'; + Name = 'AccentPalette'; + }; + $palette = Get-ItemPropertyValue @params; + $index = 20; + $palette[ $index++ ] = $accentColor.R; + $palette[ $index++ ] = $accentColor.G; + $palette[ $index++ ] = $accentColor.B; + $palette[ $index++ ] = $accentColor.A; + Set-ItemProperty @params -Value $palette -Type 'Binary' -Force; +}; + </File> + <File path="C:\Windows\Setup\Scripts\SetWallpaper.ps1" transformation="Text"> +Add-Type -TypeDefinition ' + using System.Drawing; + using System.Runtime.InteropServices; + + public static class WallpaperSetter { + [DllImport("user32.dll")] + private static extern bool SetSysColors( + int cElements, + int[] lpaElements, + int[] lpaRgbValues + ); + + [DllImport("user32.dll")] + private static extern bool SystemParametersInfo( + uint uiAction, + uint uiParam, + string pvParam, + uint fWinIni + ); + + public static void SetDesktopBackground(Color color) { + SystemParametersInfo(20, 0, "", 0); + SetSysColors(1, new int[] { 1 }, new int[] { ColorTranslator.ToWin32(color) }); + } + + public static void SetDesktopImage(string file) { + SystemParametersInfo(20, 0, file, 0); + } + } +' -ReferencedAssemblies 'System.Drawing'; + +function Set-WallpaperColor { + param( + [string] + $HtmlColor + ); + + $color = [System.Drawing.ColorTranslator]::FromHtml( $HtmlColor ); + [WallpaperSetter]::SetDesktopBackground( $color ); + Set-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers' -Name 'BackgroundType' -Type 'DWord' -Value 1 -Force; + Set-ItemProperty -Path 'Registry::HKCU\Control Panel\Desktop' -Name 'WallPaper' -Type 'String' -Value '' -Force; + Set-ItemProperty -Path 'Registry::HKCU\Control Panel\Colors' -Name 'Background' -Type 'String' -Value "$($color.R) $($color.G) $($color.B)" -Force; +} + +function Set-WallpaperImage { + param( + [string] + $LiteralPath + ); + + [WallpaperSetter]::SetDesktopImage( $LiteralPath ); + Set-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers' -Name 'BackgroundType' -Type 'DWord' -Value 0 -Force; + Set-ItemProperty -Path 'Registry::HKCU\Control Panel\Desktop' -Name 'WallPaper' -Type 'String' -Value $LiteralPath -Force; +} +Set-WallpaperColor -HtmlColor '#0978D3'; + </File> + <File path="C:\Windows\Setup\Scripts\unattend-01.cmd" transformation="Text"> +curl -L https://gitea.tcse.us/tricounty/tcse-deploy/archive/main.zip --output C:\Scripts.zip + </File> + <File path="C:\Windows\Setup\Scripts\unattend-02.ps1" transformation="Text"> +Expand-Archive -Path 'C:\Scripts.zip' -DestinationPath 'C:\Scripts' +Remove-Item -Path 'C:\Scripts.zip' +Move-Item -Path 'C:\Scripts\tcse-deploy\*' -Destination 'C:\Scripts' +Remove-Item -Path 'C:\Scripts\tcse-deploy\' + </File> + <File path="C:\Windows\Setup\Scripts\unattend-03.cmd" transformation="Text"> +C:\Scripts\TCSE-Computer-Deploy.bat + </File> + <File path="C:\Windows\Setup\Scripts\Specialize.ps1" transformation="Text"> +$scripts = @( + { + reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f; + }; + { + reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f; + }; + { + Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate' -Force -ErrorAction 'SilentlyContinue'; + }; + { + Remove-Item -LiteralPath 'C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk', 'C:\Windows\System32\OneDriveSetup.exe', 'C:\Windows\SysWOW64\OneDriveSetup.exe' -ErrorAction 'Continue'; + }; + { + Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\OutlookUpdate' -Force -ErrorAction 'SilentlyContinue'; + }; + { + reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v ConfigureChatAutoInstall /t REG_DWORD /d 0 /f; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemovePackages.ps1' -Raw | Invoke-Expression; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveCapabilities.ps1' -Raw | Invoke-Expression; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveFeatures.ps1' -Raw | Invoke-Expression; + }; + { + netsh.exe wlan add profile filename="C:\Windows\Setup\Scripts\Wifi.xml" user=all; + Remove-Item -LiteralPath 'C:\Windows\Setup\Scripts\Wifi.xml'; + }; + { + netsh.exe wlan connect name="Tricounty" ssid="Tricounty"; + }; + { + net.exe accounts /maxpwage:UNLIMITED; + }; + { + Set-ExecutionPolicy -Scope 'LocalMachine' -ExecutionPolicy 'RemoteSigned' -Force; + }; + { + reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Dsh" /v AllowNewsAndInterests /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\BitLocker" /v "PreventDeviceEncryption" /t REG_DWORD /d 1 /f; + }; + { + reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v HideFirstRunExperience /t REG_DWORD /d 1 /f; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetStartPins.ps1' -Raw | Invoke-Expression; + }; +); + +&amp; { + [float] $complete = 0; + [float] $increment = 100 / $scripts.Count; + foreach( $script in $scripts ) { + Write-Progress -Activity 'Running scripts to customize your Windows installation. Do not close this window.' -PercentComplete $complete; + &amp; $script; + $complete += $increment; + } +} *&gt;&amp;1 &gt;&gt; "C:\Windows\Setup\Scripts\Specialize.log"; + </File> + <File path="C:\Windows\Setup\Scripts\UserOnce.ps1" transformation="Text"> +$scripts = @( + { + Get-AppxPackage -Name 'Microsoft.Windows.Ai.Copilot.Provider' | Remove-AppxPackage; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\TaskbarIcons.ps1' -Raw | Invoke-Expression; + }; + { + Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Search' -Name 'SearchboxTaskbarMode' -Type 'DWord' -Value 1; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetColorTheme.ps1' -Raw | Invoke-Expression; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetWallpaper.ps1' -Raw | Invoke-Expression; + }; + { + Get-Process -Name 'explorer' -ErrorAction 'SilentlyContinue' | Where-Object -FilterScript { + $_.SessionId -eq ( Get-Process -Id $PID ).SessionId; + } | Stop-Process -Force; + }; +); + +&amp; { + [float] $complete = 0; + [float] $increment = 100 / $scripts.Count; + foreach( $script in $scripts ) { + Write-Progress -Activity 'Running scripts to configure this user account. Do not close this window.' -PercentComplete $complete; + &amp; $script; + $complete += $increment; + } +} *&gt;&amp;1 &gt;&gt; "$env:TEMP\UserOnce.log"; + </File> + <File path="C:\Windows\Setup\Scripts\DefaultUser.ps1" transformation="Text"> +$scripts = @( + { + reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f; + }; + { + Remove-ItemProperty -LiteralPath 'Registry::HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'OneDriveSetup' -Force -ErrorAction 'Continue'; + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowTaskViewButton /t REG_DWORD /d 0 /f; + }; + { + $names = @( + 'ContentDeliveryAllowed'; + 'FeatureManagementEnabled'; + 'OEMPreInstalledAppsEnabled'; + 'PreInstalledAppsEnabled'; + 'PreInstalledAppsEverEnabled'; + 'SilentInstalledAppsEnabled'; + 'SoftLandingEnabled'; + 'SubscribedContentEnabled'; + 'SubscribedContent-310093Enabled'; + 'SubscribedContent-338387Enabled'; + 'SubscribedContent-338388Enabled'; + 'SubscribedContent-338389Enabled'; + 'SubscribedContent-338393Enabled'; + 'SubscribedContent-353698Enabled'; + 'SystemPaneSuggestionsEnabled'; + ); + + foreach( $name in $names ) { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v $name /t REG_DWORD /d 0 /f; + } + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v TaskbarAl /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\Explorer" /v DisableSearchBoxSuggestions /t REG_DWORD /d 1 /f; + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\DWM" /v ColorPrevalence /t REG_DWORD /d 0 /f; + }; + { + reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "UnattendedSetup" /t REG_SZ /d "powershell.exe -NoProfile -Command \""Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\UserOnce.ps1' -Raw | Invoke-Expression;\""" /f; + }; +); + +&amp; { + [float] $complete = 0; + [float] $increment = 100 / $scripts.Count; + foreach( $script in $scripts ) { + Write-Progress -Activity 'Running scripts to modify the default user&#x2019;&#x2019;s registry hive. Do not close this window.' -PercentComplete $complete; + &amp; $script; + $complete += $increment; + } +} *&gt;&amp;1 &gt;&gt; "C:\Windows\Setup\Scripts\DefaultUser.log"; + </File> + <File path="C:\Windows\Setup\Scripts\FirstLogon.ps1" transformation="Text"> +$scripts = @( + { + Set-ItemProperty -LiteralPath 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name 'AutoLogonCount' -Type 'DWord' -Force -Value 0; + }; + { + cmd.exe /c "rmdir C:\Windows.old"; + }; + { + C:\Windows\Setup\Scripts\unattend-01.cmd; + }; + { + Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\unattend-02.ps1' -Raw | Invoke-Expression; + }; + { + C:\Windows\Setup\Scripts\unattend-03.cmd; + }; +); + +&amp; { + [float] $complete = 0; + [float] $increment = 100 / $scripts.Count; + foreach( $script in $scripts ) { + Write-Progress -Activity 'Running scripts to finalize your Windows installation. Do not close this window.' -PercentComplete $complete; + &amp; $script; + $complete += $increment; + } +} *&gt;&amp;1 &gt;&gt; "C:\Windows\Setup\Scripts\FirstLogon.log"; + </File> + </Extensions> +</unattend> \ No newline at end of file diff --git a/GCPW/First-Boot-Force-Restart.ps1 b/GCPW/First-Boot-Force-Restart.ps1 new file mode 100644 index 0000000..3a489bb --- /dev/null +++ b/GCPW/First-Boot-Force-Restart.ps1 @@ -0,0 +1,2 @@ +Start-Sleep -Seconds 1 # Adjust the delay as needed +Restart-Computer -Force \ No newline at end of file diff --git a/GCPW/First-Boot-Restart-Task.ps1 b/GCPW/First-Boot-Restart-Task.ps1 new file mode 100644 index 0000000..372a051 --- /dev/null +++ b/GCPW/First-Boot-Restart-Task.ps1 @@ -0,0 +1,6 @@ +# Create a Scheduled Task to Run at System Startup +$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File C:\Scripts\GCPW\First-Boot-Force-Restart.ps1" + +$trigger = New-ScheduledTaskTrigger -AtStartup + +Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "ForceRestartAfterNextBoot" -RunLevel Highest \ No newline at end of file diff --git a/GCPW/Run-Google-Updater.ps1 b/GCPW/Run-Google-Updater.ps1 new file mode 100644 index 0000000..bbaaaf5 --- /dev/null +++ b/GCPW/Run-Google-Updater.ps1 @@ -0,0 +1,25 @@ +# Get the Google Update folder path +$googleUpdateFolder = "C:\Program Files (x86)\Google\GoogleUpdater" + +# Get all subfolders and extract version numbers +$subfolders = Get-ChildItem $googleUpdateFolder | Where-Object { $_.PSIsContainer -and $_.BaseName -match '\d+\.\d+\.\d+\.\d+' } | ForEach-Object { + [version]$_.BaseName +} + +# Find the subfolder with the highest version number +$latestSubfolder = $subfolders | Sort-Object -Descending | Select-Object -First 1 + +if ($latestSubfolder) { + # Construct the full path to the updater.exe, ensuring proper quoting + $updaterPath = Join-Path $googleUpdateFolder $latestSubfolder + $updaterPath += "\updater.exe" + $quotedUpdaterPath = '"' + $updaterPath + '"' + + # Create a new task with the updated path and a startup trigger + $newTaskName = "Update_Chrome_" + (Get-Date -Format "yyyyMMddHHmmss") + Register-ScheduledTask -TaskName $newTaskName -Action (New-ScheduledTaskAction -Execute $quotedUpdaterPath -Argument "--wake --system") -Trigger (New-JobTrigger -AtStartup) -Principal (New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest) + + Write-Host "New task '$newTaskName' created with startup trigger and updated path: $quotedUpdaterPath" +} else { + Write-Host "Google Update folder or updater.exe not found." +} \ No newline at end of file diff --git a/Software/._gcpwstandaloneenterprise64.exe b/Software/._gcpwstandaloneenterprise64.exe deleted file mode 100755 index 447d1f4..0000000 Binary files a/Software/._gcpwstandaloneenterprise64.exe and /dev/null differ diff --git a/Software/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle b/Software/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle deleted file mode 100644 index 3d71721..0000000 Binary files a/Software/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle and /dev/null differ diff --git a/TCSE-Computer-Deploy.bat b/TCSE-Computer-Deploy.bat index 81ce018..308a164 100644 --- a/TCSE-Computer-Deploy.bat +++ b/TCSE-Computer-Deploy.bat @@ -1,34 +1,47 @@ @echo off -:: Install Winget Package Manager -C:\Scripts\Software\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle - -:: Install Chocolatey Package Manager -timeout /t 30 -echo Installing Chocolatey... -C:\Users\Tech\AppData\Local\Microsoft\WindowsApps\winget.exe install --id chocolatey.chocolatey --source winget - -:: Install Chocolatey Software -echo Installing Chocolatey Software... -C:\ProgramData\Chocolatey\choco.exe upgrade adobereader -y --ignore-checksums -C:\ProgramData\Chocolatey\choco.exe install googlechrome -y --ignore-checksums -C:\ProgramData\Chocolatey\choco.exe install google-drive-file-stream -y --ignore-checksums +:: Install Office 2016 +echo Installing Office 2016... +C:\Scripts\Software\Office2016\setup.exe /adminfile C:\Scripts\Software\Office2016\TCSE.MSP +echo Office 2016 Installed... :: Install Printers powershell -ExecutionPolicy Bypass -File "C:\Scripts\Printers\01-Printer-Scripts\01-PrinterInstall-AllPrinters.ps1" powershell -ExecutionPolicy Bypass -File "C:\Scripts\Printers\01-Printer-Scripts\02.2-PrinterProperties-Import.ps1" -:: Install Additional Software -echo Installing Additional Software... -echo Installing GCPW... +:: Install Chocolatey Package Manager +echo Installing Chocolatey... +C:\Users\Tech\AppData\Local\Microsoft\WindowsApps\winget.exe install --id chocolatey.chocolatey --source winget + +:: Install Adobe Reader +echo Installing Adobe Reader... +C:\Users\Tech\AppData\Local\Microsoft\WindowsApps\winget.exe install Adobe.Acrobat.Reader.64-bit -h -s winget + +:: Install Google Chrome Enterprise +echo Installing Google Chrome... +C:\Users\Tech\AppData\Local\Microsoft\WindowsApps\winget.exe install Google.Chrome -h -s winget + +:: Install Google Drive +echo Installing Google Drive... +C:\Users\Tech\AppData\Local\Microsoft\WindowsApps\winget.exe install Google.GoogleDrive -h -s winget + +:: Install VLC Media Player +echo Installing VLC Media Player... +C:\Users\Tech\AppData\Local\Microsoft\WindowsApps\winget.exe install VideoLAN.VLC -h -s winget + +:: Install Zoom +echo Installing Zoom... +C:\Users\Tech\AppData\Local\Microsoft\WindowsApps\winget.exe install Zoom.Zoom -h -s winget + +:: Install Google Cloud Provider for Windows +echo Installing Google Cloud Provider for Windows... C:\Scripts\Software\gcpwstandaloneenterprise64.exe /silent /fullinstall -echo GCPW Installed... -echo Installing MeshCentral... +echo Google Cloud Provider for Windows Installed... + +:: Install TCSE Remote MeshCentral +echo Installing TCSE Remote MeshCentral... C:\Scripts\Software\RemoteAgent64-TCSE.exe -fullinstall -echo MeshCentral Installed... -echo Installing Office 2016... -C:\Scripts\Software\Office2016\setup.exe /adminfile C:\Scripts\Software\Office2016\TCSE.MSP -echo Office 2016 Installed... +echo TCSE Remote MeshCentral Installed... :: Run Debloat Script powershell -ExecutionPolicy Bypass -File "C:\Scripts\Software\Win11Debloat\Win11Debloat.ps1" -Silent -Sysprep -RemoveApps -RemoveCommApps -RemoveW11Outlook -RemoveDevApps -RemoveGamingApps -DisableDVR -ClearStartAllUsers -DisableTelemetry -DisableBing -DisableSuggestions -DisableLockscreenTips -ShowKnownFileExt -TaskbarAlignLeft -ShowSearchIconTb -HideTaskview -HideChat -DisableWidgets -DisableCopilot -DisableRecall @@ -67,9 +80,26 @@ for %%F in ("%PUBLIC_DESKTOP%\*.lnk") do ( :: Display results echo Deleted !deleted_count! shortcut(s) from the Public Desktop. +:: Install Google Cloud Provider for Windows - Second Time +echo Installing Google Cloud Provider for Windows Second Time... +C:\Scripts\Software\gcpwstandaloneenterprise64.exe /silent /fullinstall +echo Google Cloud Provider for Windows Installed Second Time... + +:: Add Scheduled Tasks to Force GCPW Update +echo Run Google Updater... +powershell -ExecutionPolicy Bypass -File "C:\Scripts\GCPW\Run-Google-Updater.ps1" +echo Run Create First Boot Restart Task... +powershell -ExecutionPolicy Bypass -File "C:\Scripts\GCPW\First-Boot-Restart-Task.ps1" + +:: Install Google Cloud Provider for Windows - Third Time +echo Installing Google Cloud Provider for Windows Second Time... +C:\Scripts\Software\gcpwstandaloneenterprise64.exe /silent /fullinstall +echo Google Cloud Provider for Windows Installed Third Time... + :: Copy Login Scripts to User Startup echo Copying Login Scripts to All Users... powershell Copy-Item 'C:\Scripts\TCSE-Login.vbs' 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup' +echo Successfully Copied Login Scripts... :: Restart System echo Restarting system in 5 minutes...