diff --git a/scripts/Windows/OS/Setup.ps1 b/scripts/Windows/OS/Setup.ps1 index 8bba1c8d..373cffa9 100644 --- a/scripts/Windows/OS/Setup.ps1 +++ b/scripts/Windows/OS/Setup.ps1 @@ -186,6 +186,20 @@ function Start-Setup { Move-PartitionRange -Disk $Disk -1 -1 ($To + 1) } + function Add-StartupCommand { + param( + [string] $Script, + [string] $Description + ) + + $installationCommand = $oobeSettings.SelectSingleNode("./ua:FirstLogonCommands/ua:SynchronousCommand[last()]", $namespace); + $newCommand = $installationCommand.ParentNode.AppendChild($installationCommand.CloneNode($true)); + $newCommand.SelectSingleNode("./ua:CommandLine", $namespace).InnerText = $Script; + $orderElement = $newCommand.SelectSingleNode("./ua:Order", $namespace); + $orderElement.InnerText = ([int]($orderElement.InnerText) + 1); + $newCommand.SelectSingleNode("./ua:Description", $namespace).InnerText = $Description; + } + # Collect necessary variables $winpePass = Get-PassSettings "windowsPE"; $setupConfig = Get-Component $winpePass "Microsoft-Windows-Setup"; @@ -213,19 +227,14 @@ function Start-Setup { $oobeSettings.SelectSingleNode($xpath, $namespace).InnerText = $valhallaConfig.setupUser; } - $installationCommand = $oobeSettings.SelectSingleNode("./ua:FirstLogonCommands/ua:SynchronousCommand[last()]", $namespace); - $newCommand = $installationCommand.ParentNode.AppendChild($installationCommand.CloneNode($true)); - - $newCommand.SelectSingleNode("./ua:CommandLine", $namespace).InnerText = ` - "powershell -Command " + ` - "`$env:PWSH_PATH = $(Get-PathInjection $env:PWSH_PATH);" + ` - "`$env:INSTALLER_SCRIPT = $(Get-ScriptPathInjection $env:SETUP_SCRIPT_NAME);" + ` - "`$env:CONFIG_MODULE = $(Get-ScriptPathInjection $env:CONFIG_MODULE);" + ` - "& (Join-Path `$env:PWSH_PATH pwsh) `$env:INSTALLER_SCRIPT;"; - - $orderElement = $newCommand.SelectSingleNode("./ua:Order", $namespace); - $orderElement.InnerText = ([int]($orderElement.InnerText) + 1); - $newCommand.SelectSingleNode("./ua:Description", $namespace).InnerText = "Install PowerShell Core and git and run setup script"; + Add-StartupCommand ` + -Script ( + "powershell -Command " + + "`$env:PWSH_PATH = $(Get-PathInjection $env:PWSH_PATH);" + + "`$env:INSTALLER_SCRIPT = $(Get-ScriptPathInjection $env:SETUP_SCRIPT_NAME);" + + "`$env:CONFIG_MODULE = $(Get-ScriptPathInjection $env:CONFIG_MODULE);" + + "& (Join-Path `$env:PWSH_PATH pwsh) `$env:INSTALLER_SCRIPT;") ` + -Description "Install PowerShell Core and git and run setup script"; if ($valhallaConfig.dualboot.enable) { $diskSize = [long](ConvertFrom-Csv (wmic diskdrive where "Index=$(Get-InstallDisk)" get Size | ForEach-Object { "$_".Trim(); })).Size;