Include Unattend settings in PortValhalla
This commit is contained in:
parent
140071c493
commit
48a1913401
3 changed files with 254 additions and 3 deletions
16
scripts/Windows/OS/InitialBoot.ps1
Normal file
16
scripts/Windows/OS/InitialBoot.ps1
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
|
||||||
|
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'));
|
||||||
|
|
||||||
|
Import-Module $env:ChocolateyInstall/helpers/chocolateyProfile.psm1;
|
||||||
|
|
||||||
|
choco install -y git --params='/WindowsTerminalProfile /DefaultBranchName:main';
|
||||||
|
choco install -y powershell-core --install-arguments='"ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 REGISTER_MANIFEST=1 USE_MU=1 ENABLE_MU=1"';
|
||||||
|
refreshenv;
|
||||||
|
|
||||||
|
if (-not $(Get-Command winget)) {
|
||||||
|
choco install -y winget;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set-Location C:/;
|
||||||
|
git clone https://git.nuth.ch/manuth/PortValhalla.git;
|
||||||
|
Set-Location PortValhalla;
|
|
@ -10,7 +10,7 @@ $unattendedConfig.PreserveWhitespace = $true;
|
||||||
|
|
||||||
$readerSettings = [System.Xml.XmlReaderSettings]::new();
|
$readerSettings = [System.Xml.XmlReaderSettings]::new();
|
||||||
$readerSettings.IgnoreComments = $true;
|
$readerSettings.IgnoreComments = $true;
|
||||||
$reader = [System.Xml.XmlReader]::Create("$drive\Autounattend.template.xml", $readerSettings);
|
$reader = [System.Xml.XmlReader]::Create("$PSScriptRoot/../Resources/Autounattend.template.xml", $readerSettings);
|
||||||
|
|
||||||
$unattendedConfig.Load($reader);
|
$unattendedConfig.Load($reader);
|
||||||
$namespace = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $unattendedConfig.NameTable;
|
$namespace = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $unattendedConfig.NameTable;
|
||||||
|
@ -29,15 +29,27 @@ function Get-PassSettings {
|
||||||
$specializeSettings = Get-PassSettings "specialize";
|
$specializeSettings = Get-PassSettings "specialize";
|
||||||
$specializeSettings.SelectSingleNode("./ua:component[@name='Microsoft-Windows-Shell-Setup']/ua:ComputerName", $namespace).InnerText = "$env:WIN_COMPUTER_NAME";
|
$specializeSettings.SelectSingleNode("./ua:component[@name='Microsoft-Windows-Shell-Setup']/ua:ComputerName", $namespace).InnerText = "$env:WIN_COMPUTER_NAME";
|
||||||
|
|
||||||
|
# Execute corresponding installer script after startup
|
||||||
$oobeSystemSettings = Get-PassSettings "oobeSystem";
|
$oobeSystemSettings = Get-PassSettings "oobeSystem";
|
||||||
$oobeSystemSettings.SelectSingleNode("./ua:component/ua:FirstLogonCommands/ua:SynchronousCommand[last()]/ua:CommandLine", $namespace).InnerText += "; pwsh '$env:SETUP_SCRIPT_NAME';";
|
$installationCommand = $oobeSystemSettings.SelectSingleNode("./ua:component/ua:FirstLogonCommands/ua:SynchronousCommand[last()]/ua:CommandLine", $namespace);
|
||||||
|
$newCommand = $installationCommand.CloneNode($true);
|
||||||
|
|
||||||
|
$newCommand.SelectSingleNode("./ua:CommandLine", $namespace).InnerText = `
|
||||||
|
"powershell -Command " + `
|
||||||
|
$(Get-Content "$PSScriptRoot/InitialBoot.ps1") + `
|
||||||
|
"; pwsh '$env:SETUP_SCRIPT_NAME';";
|
||||||
|
|
||||||
|
$order = [int]$newCommand.SelectSingleNode("./ua:Order", $namespace).InnerText;
|
||||||
|
$newCommand.SelectSingleNode("./ua:Order", $namespace).InnerText = $order++;
|
||||||
|
$newCommand.SelectSingleNode("./ua:Description", $namespace).InnerText = "Install PowerShell Core and git and run setup script";
|
||||||
|
$installationCommand.ParentNode.AppendChild($newCommand);
|
||||||
|
|
||||||
if ($Global:SetupConfigPostprocessor) {
|
if ($Global:SetupConfigPostprocessor) {
|
||||||
$Global:SetupConfigPostprocessor.Invoke($unattendedConfig, $namespace);
|
$Global:SetupConfigPostprocessor.Invoke($unattendedConfig, $namespace);
|
||||||
}
|
}
|
||||||
|
|
||||||
$unattendedConfig.PreserveWhitespace = $true;
|
$unattendedConfig.PreserveWhitespace = $true;
|
||||||
$unattendedConfig.Save("$drive\Autounattend.xml");
|
$unattendedConfig.Save("$drive/Autounattend.xml");
|
||||||
|
|
||||||
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?"
|
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"
|
Read-Host -Prompt "Hit enter to continue or CTRL+C to abort"
|
||||||
|
|
223
scripts/Windows/Resources/Autounattend.template.xml
Normal file
223
scripts/Windows/Resources/Autounattend.template.xml
Normal file
|
@ -0,0 +1,223 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<unattend xmlns="urn:schemas-microsoft-com:unattend">
|
||||||
|
<settings pass="windowsPE">
|
||||||
|
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<SetupUILanguage>
|
||||||
|
<UILanguage>en-US</UILanguage>
|
||||||
|
</SetupUILanguage>
|
||||||
|
<InputLocale>0807:00000807</InputLocale>
|
||||||
|
<SystemLocale>en-US</SystemLocale>
|
||||||
|
<UILanguage>en-US</UILanguage>
|
||||||
|
<UILanguageFallback>en-US</UILanguageFallback>
|
||||||
|
<UserLocale>en-US</UserLocale>
|
||||||
|
</component>
|
||||||
|
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<DiskConfiguration>
|
||||||
|
<Disk wcm:action="add">
|
||||||
|
<DiskID>0</DiskID>
|
||||||
|
<WillWipeDisk>true</WillWipeDisk>
|
||||||
|
<CreatePartitions>
|
||||||
|
<!-- Windows RE Tools partition -->
|
||||||
|
<CreatePartition wcm:action="add">
|
||||||
|
<Order>1</Order>
|
||||||
|
<Type>Primary</Type>
|
||||||
|
<Size>300</Size>
|
||||||
|
</CreatePartition>
|
||||||
|
<!-- System partition (ESP) -->
|
||||||
|
<CreatePartition wcm:action="add">
|
||||||
|
<Order>2</Order>
|
||||||
|
<Type>EFI</Type>
|
||||||
|
<Size>100</Size>
|
||||||
|
</CreatePartition>
|
||||||
|
<!-- Microsoft reserved partition (MSR) -->
|
||||||
|
<CreatePartition wcm:action="add">
|
||||||
|
<Order>3</Order>
|
||||||
|
<Type>MSR</Type>
|
||||||
|
<Size>128</Size>
|
||||||
|
</CreatePartition>
|
||||||
|
<!-- Windows partition -->
|
||||||
|
<CreatePartition wcm:action="add">
|
||||||
|
<Order>4</Order>
|
||||||
|
<Type>Primary</Type>
|
||||||
|
<Extend>true</Extend>
|
||||||
|
</CreatePartition>
|
||||||
|
</CreatePartitions>
|
||||||
|
<ModifyPartitions>
|
||||||
|
<!-- Windows RE Tools partition -->
|
||||||
|
<ModifyPartition wcm:action="add">
|
||||||
|
<Order>1</Order>
|
||||||
|
<PartitionID>1</PartitionID>
|
||||||
|
<Label>WINRE</Label>
|
||||||
|
<Format>NTFS</Format>
|
||||||
|
<TypeID>de94bba4-06d1-4d40-a16a-bfd50179d6ac</TypeID>
|
||||||
|
</ModifyPartition>
|
||||||
|
<!-- System partition (ESP) -->
|
||||||
|
<ModifyPartition wcm:action="add">
|
||||||
|
<Order>2</Order>
|
||||||
|
<PartitionID>2</PartitionID>
|
||||||
|
<Label>System</Label>
|
||||||
|
<Format>FAT32</Format>
|
||||||
|
</ModifyPartition>
|
||||||
|
<!-- MSR partition does not need to be modified -->
|
||||||
|
<ModifyPartition wcm:action="add">
|
||||||
|
<Order>3</Order>
|
||||||
|
<PartitionID>3</PartitionID>
|
||||||
|
</ModifyPartition>
|
||||||
|
<!-- Windows partition -->
|
||||||
|
<ModifyPartition wcm:action="add">
|
||||||
|
<Order>4</Order>
|
||||||
|
<PartitionID>4</PartitionID>
|
||||||
|
<Label>OS</Label>
|
||||||
|
<Letter>C</Letter>
|
||||||
|
<Format>NTFS</Format>
|
||||||
|
</ModifyPartition>
|
||||||
|
</ModifyPartitions>
|
||||||
|
</Disk>
|
||||||
|
<WillShowUI>OnError</WillShowUI>
|
||||||
|
</DiskConfiguration>
|
||||||
|
<ImageInstall>
|
||||||
|
<OSImage>
|
||||||
|
<InstallTo>
|
||||||
|
<DiskID>0</DiskID>
|
||||||
|
<PartitionID>4</PartitionID>
|
||||||
|
</InstallTo>
|
||||||
|
</OSImage>
|
||||||
|
</ImageInstall>
|
||||||
|
<UserData>
|
||||||
|
<ProductKey>
|
||||||
|
<Key>VK7JG-NPHTM-C97JM-9MPGT-3V66T</Key>
|
||||||
|
<WillShowUI>Never</WillShowUI>
|
||||||
|
</ProductKey>
|
||||||
|
<AcceptEula>true</AcceptEula>
|
||||||
|
<FullName>Admin</FullName>
|
||||||
|
<Organization></Organization>
|
||||||
|
</UserData>
|
||||||
|
</component>
|
||||||
|
</settings>
|
||||||
|
<settings pass="offlineServicing">
|
||||||
|
<component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<EnableLUA>false</EnableLUA>
|
||||||
|
</component>
|
||||||
|
</settings>
|
||||||
|
<settings pass="generalize">
|
||||||
|
<component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<SkipRearm>1</SkipRearm>
|
||||||
|
</component>
|
||||||
|
</settings>
|
||||||
|
<settings pass="specialize">
|
||||||
|
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<InputLocale>0807:00000807</InputLocale>
|
||||||
|
<SystemLocale>de-CH</SystemLocale>
|
||||||
|
<UILanguage>en-US</UILanguage>
|
||||||
|
<UILanguageFallback>en-US</UILanguageFallback>
|
||||||
|
<UserLocale>de-CH</UserLocale>
|
||||||
|
</component>
|
||||||
|
<component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<SkipAutoActivation>true</SkipAutoActivation>
|
||||||
|
</component>
|
||||||
|
<component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<CEIPEnabled>0</CEIPEnabled>
|
||||||
|
</component>
|
||||||
|
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<ComputerName></ComputerName>
|
||||||
|
<ProductKey>VK7JG-NPHTM-C97JM-9MPGT-3V66T</ProductKey>
|
||||||
|
</component>
|
||||||
|
</settings>
|
||||||
|
<settings pass="oobeSystem">
|
||||||
|
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64"
|
||||||
|
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
|
||||||
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<AutoLogon>
|
||||||
|
<Password>
|
||||||
|
<Value></Value>
|
||||||
|
<PlainText>true</PlainText>
|
||||||
|
</Password>
|
||||||
|
<Enabled>true</Enabled>
|
||||||
|
<Username>Admin</Username>
|
||||||
|
</AutoLogon>
|
||||||
|
<OOBE>
|
||||||
|
<HideEULAPage>true</HideEULAPage>
|
||||||
|
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
|
||||||
|
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
|
||||||
|
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
|
||||||
|
<NetworkLocation>Home</NetworkLocation>
|
||||||
|
<SkipUserOOBE>true</SkipUserOOBE>
|
||||||
|
<SkipMachineOOBE>true</SkipMachineOOBE>
|
||||||
|
<ProtectYourPC>1</ProtectYourPC>
|
||||||
|
</OOBE>
|
||||||
|
<UserAccounts>
|
||||||
|
<LocalAccounts>
|
||||||
|
<LocalAccount wcm:action="add">
|
||||||
|
<Password>
|
||||||
|
<Value></Value>
|
||||||
|
<PlainText>true</PlainText>
|
||||||
|
</Password>
|
||||||
|
<Description></Description>
|
||||||
|
<DisplayName>Admin</DisplayName>
|
||||||
|
<Group>Administrators</Group>
|
||||||
|
<Name>Admin</Name>
|
||||||
|
</LocalAccount>
|
||||||
|
</LocalAccounts>
|
||||||
|
</UserAccounts>
|
||||||
|
<RegisteredOrganization></RegisteredOrganization>
|
||||||
|
<RegisteredOwner>Admin</RegisteredOwner>
|
||||||
|
<DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet>
|
||||||
|
<FirstLogonCommands>
|
||||||
|
<!-- <SynchronousCommand wcm:action="add">
|
||||||
|
<Description>Control Panel View</Description>
|
||||||
|
<Order>1</Order>
|
||||||
|
<CommandLine>reg add
|
||||||
|
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel"
|
||||||
|
/v StartupPage /t REG_DWORD /d 1 /f</CommandLine>
|
||||||
|
<RequiresUserInput>true</RequiresUserInput>
|
||||||
|
</SynchronousCommand> -->
|
||||||
|
<!-- <SynchronousCommand wcm:action="add">
|
||||||
|
<Order>2</Order>
|
||||||
|
<Description>Control Panel Icon Size</Description>
|
||||||
|
<RequiresUserInput>false</RequiresUserInput>
|
||||||
|
<CommandLine>reg add
|
||||||
|
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel"
|
||||||
|
/v AllItemsIconView /t REG_DWORD /d 0 /f</CommandLine>
|
||||||
|
</SynchronousCommand> -->
|
||||||
|
<SynchronousCommand wcm:action="add">
|
||||||
|
<Order>1</Order>
|
||||||
|
<RequiresUserInput>true</RequiresUserInput>
|
||||||
|
<CommandLine>cmd /C wmic useraccount where name="Admin" set PasswordExpires=false</CommandLine>
|
||||||
|
<Description>Password Never Expires</Description>
|
||||||
|
</SynchronousCommand>
|
||||||
|
<SynchronousCommand wcm:action="add">
|
||||||
|
<Order>2</Order>
|
||||||
|
<RequiresUserInput>false</RequiresUserInput>
|
||||||
|
<CommandLine>powershell -Command "Set-ExecutionPolicy -Force Bypass"</CommandLine>
|
||||||
|
<Description>Allow PowerShell scripts from anywhere.</Description>
|
||||||
|
</SynchronousCommand>
|
||||||
|
</FirstLogonCommands>
|
||||||
|
<TimeZone>W. Europe Standard Time</TimeZone>
|
||||||
|
</component>
|
||||||
|
</settings>
|
||||||
|
</unattend>
|
Loading…
Reference in a new issue