diff --git a/scripts/Windows/OS/Setup.ps1 b/scripts/Windows/OS/Setup.ps1
new file mode 100644
index 00000000..9cdd26fe
--- /dev/null
+++ b/scripts/Windows/OS/Setup.ps1
@@ -0,0 +1,27 @@
+$null = $env:WIN_COMPUTER_NAME;
+$null = $env:SETUP_SCRIPT_NAME;
+
+[xml]$unattendedConfig = $(Get-Content "$drive\Autounattend.template.xml");
+
+function Get-PassSettings {
+    [OutputType([xml])]
+    param(
+        [string] $passName
+    )
+
+    return $unattendedConfig.SelectSingleNode("/unattend/settings[@pass='$passName']");
+}
+
+$drives = & wmic volume get "DriveLetter,Label";
+$drive = $($($drives | Select-String -Pattern "winiso") -split "\s+")[0];
+
+# Adjust unattended settings
+$specializeSettings = Get-PassSettings "specialize";
+$specializeSettings.SelectSingleNode("./component[@name='Microsoft-Windows-Shell-Setup']/ComputerName").InnerText = "$env:WIN_COMPUTER_NAME";
+
+$oobeSystemSettings = Get-PassSettings "oobeSystem";
+$oobeSystemSettings.SelectSingleNode("./component/FirstLogonCommands/SynchronousCommand[last()]/CommandLine").InnerText += "`npwsh 'PortValhalla/$env:SETUP_SCRIPT_NAME';";
+
+Write-Warning "Attention: This program will completely wipe your current disk #1 and install Windows on it. Are you sure you want to do this?"
+Read-Host -Prompt "Hit enter to continue or CTRL+C to abort"
+& "$drive\setup.exe";