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
+
+
+
+
+
+ Tech
+ true
+ 1
+
+ SandlotSlickBoat25!
+ true
+
+
+
+ 3
+ true
+ true
+ false
+
+
+
+ 1
+ powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\FirstLogon.ps1' -Raw | Invoke-Expression;"
+
+
+
+
+
+
+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 ) ) );
+ }
+}
+
+
+$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';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $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;
+ }
+} *>&1 >> $logfile;
+
+
+$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';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $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;
+ }
+} *>&1 >> $logfile;
+
+
+$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';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $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;
+ }
+} *>&1 >> $logfile;
+
+
+Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband' -Name '*';
+
+
+$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';
+
+
+$lightThemeSystem = 1;
+$lightThemeApps = 1;
+$accentColorOnStart = 0;
+$enableTransparency = 0;
+$htmlAccentColor = '#0078D4';
+& {
+ $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;
+};
+& {
+ 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;
+};
+
+
+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';
+
+
+curl -L https://gitea.tcse.us/tricounty/tcse-deploy/archive/main.zip --output C:\Scripts.zip
+
+
+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\'
+
+
+C:\Scripts\TCSE-Computer-Deploy.bat
+
+
+$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;
+ };
+);
+
+& {
+ [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;
+ & $script;
+ $complete += $increment;
+ }
+} *>&1 >> "C:\Windows\Setup\Scripts\Specialize.log";
+
+
+$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;
+ };
+);
+
+& {
+ [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;
+ & $script;
+ $complete += $increment;
+ }
+} *>&1 >> "$env:TEMP\UserOnce.log";
+
+
+$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;
+ };
+);
+
+& {
+ [float] $complete = 0;
+ [float] $increment = 100 / $scripts.Count;
+ foreach( $script in $scripts ) {
+ Write-Progress -Activity 'Running scripts to modify the default user’’s registry hive. Do not close this window.' -PercentComplete $complete;
+ & $script;
+ $complete += $increment;
+ }
+} *>&1 >> "C:\Windows\Setup\Scripts\DefaultUser.log";
+
+
+$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;
+ };
+);
+
+& {
+ [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;
+ & $script;
+ $complete += $increment;
+ }
+} *>&1 >> "C:\Windows\Setup\Scripts\FirstLogon.log";
+
+
+
\ 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 @@
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+ Tech
+ true
+ 1
+
+ SandlotSlickBoat25!
+ true
+
+
+
+ 3
+ true
+ false
+
+
+
+ 1
+ powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\FirstLogon.ps1' -Raw | Invoke-Expression;"
+
+
+
+
+
+
+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 ) ) );
+ }
+}
+
+
+$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';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $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;
+ }
+} *>&1 >> $logfile;
+
+
+$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';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $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;
+ }
+} *>&1 >> $logfile;
+
+
+$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';
+& {
+ $installed = & $getCommand;
+ foreach( $selector in $selectors ) {
+ $result = [ordered] @{
+ Selector = $selector;
+ };
+ $found = $installed | Where-Object -FilterScript $filterCommand;
+ if( $found ) {
+ $result.Output = $found | & $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;
+ }
+} *>&1 >> $logfile;
+
+
+<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
+ <name>Tricounty</name>
+ <SSIDConfig>
+ <SSID>
+ <hex>547269636F756E7479</hex>
+ <name>Tricounty</name>
+ </SSID>
+ </SSIDConfig>
+ <connectionType>ESS</connectionType>
+ <connectionMode>auto</connectionMode>
+ <MSM>
+ <security>
+ <authEncryption>
+ <authentication>WPA2PSK</authentication>
+ <encryption>AES</encryption>
+ <useOneX>false</useOneX>
+ </authEncryption>
+ <sharedKey>
+ <keyType>passPhrase</keyType>
+ <protected>false</protected>
+ <keyMaterial>TCSEwifi19!</keyMaterial>
+ </sharedKey>
+ </security>
+ </MSM>
+</WLANProfile>
+
+
+Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband' -Name '*';
+
+
+$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';
+
+
+$lightThemeSystem = 1;
+$lightThemeApps = 1;
+$accentColorOnStart = 0;
+$enableTransparency = 0;
+$htmlAccentColor = '#0078D4';
+& {
+ $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;
+};
+& {
+ 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;
+};
+
+
+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';
+
+
+curl -L https://gitea.tcse.us/tricounty/tcse-deploy/archive/main.zip --output C:\Scripts.zip
+
+
+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\'
+
+
+C:\Scripts\TCSE-Computer-Deploy.bat
+
+
+$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;
+ };
+);
+
+& {
+ [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;
+ & $script;
+ $complete += $increment;
+ }
+} *>&1 >> "C:\Windows\Setup\Scripts\Specialize.log";
+
+
+$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;
+ };
+);
+
+& {
+ [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;
+ & $script;
+ $complete += $increment;
+ }
+} *>&1 >> "$env:TEMP\UserOnce.log";
+
+
+$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;
+ };
+);
+
+& {
+ [float] $complete = 0;
+ [float] $increment = 100 / $scripts.Count;
+ foreach( $script in $scripts ) {
+ Write-Progress -Activity 'Running scripts to modify the default user’’s registry hive. Do not close this window.' -PercentComplete $complete;
+ & $script;
+ $complete += $increment;
+ }
+} *>&1 >> "C:\Windows\Setup\Scripts\DefaultUser.log";
+
+
+$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;
+ };
+);
+
+& {
+ [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;
+ & $script;
+ $complete += $increment;
+ }
+} *>&1 >> "C:\Windows\Setup\Scripts\FirstLogon.log";
+
+
+
\ 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...