Relocate windows installation partition
This commit is contained in:
parent
e8a6492566
commit
12500b1993
2 changed files with 42 additions and 0 deletions
|
@ -1,3 +1,41 @@
|
|||
$env:WIN_COMPUTER_NAME = "DerGeret";
|
||||
$env:SETUP_SCRIPT_NAME = [System.IO.Path]::GetRelativePath("$PSScriptRoot/../../..", "$PSScriptRoot/Restore.ps1");
|
||||
. "$PSScriptRoot/../../../scripts/Windows/OS/Setup.ps1";
|
||||
|
||||
$Global:SetupConfigPostprocessor = {
|
||||
param([xml] $config, [System.Xml.XmlNamespaceManager] $namespace)
|
||||
|
||||
$diskConfig = $config.SelectSingleNode(
|
||||
"/ua:unattend/ua:settings[@pass='windowsPE']/ua:component[@name='Microsoft-Windows-Setup']/ua:DiskConfiguration/ua:Disk",
|
||||
$namespace);
|
||||
|
||||
$newIndex = 4;
|
||||
$partitionCreations = $diskConfig.SelectSingleNode("./ua:CreatePartitions");
|
||||
$newPartition = $partitionCreations.FirstChild.CloneNode($true);
|
||||
$newPartition.SelectSingleNode("./ua:Order").InnerText = "$newIndex";
|
||||
$newPartition.SelectSingleNode("./ua:Size").InnerText = "65536"; # For testing purposes
|
||||
|
||||
for ($i = 0; $i -lt $partitionCreations.ChildNodes.Count; $i++) {
|
||||
$partition = $partitionCreations.ChildNodes[$i];
|
||||
$order = [int]$partition.SelectSingleNode("./ua:Order").InnerText;
|
||||
|
||||
if ($order -ge $newIndex) {
|
||||
$partition.SelectSingleNode("./ua:Order").InnerText = "$($order + 1)";
|
||||
}
|
||||
}
|
||||
|
||||
$partitionModifications = $diskConfig.SelectSingleNode("./ua:ModifyPartitions");
|
||||
$newModification = $diskConfig.ChildNodes[2].CloneNode($true);
|
||||
$newModification.SelectSingleNode("./ua:Order").InnerText = "$newIndex";
|
||||
$newModification.SelectSingleNode("./ua:PartitionID").InnerText = "$newIndex";
|
||||
|
||||
for ($i = 0; $i -lt $partitionModifications.ChildNodes.Count; $i++) {
|
||||
$partition = $partitionModifications.ChildNodes[$i];
|
||||
$partitionID = [int]$partition.SelectSingleNode("./ua:PartitionID").InnerText;
|
||||
|
||||
if ($partitionID -ge $newIndex) {
|
||||
$partition.SelectSingleNode("./ua:PartitionID").InnerText = "$($partitionID + 1)";
|
||||
$partition.SelectSingleNode("./ua:Order").InnerText = "$($partitionID + 1)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,10 @@ $specializeSettings.SelectSingleNode("./ua:component[@name='Microsoft-Windows-Sh
|
|||
$oobeSystemSettings = Get-PassSettings "oobeSystem";
|
||||
$oobeSystemSettings.SelectSingleNode("./ua:component/ua:FirstLogonCommands/ua:SynchronousCommand[last()]/ua:CommandLine", $namespace).InnerText += "`npwsh '$env:SETUP_SCRIPT_NAME';";
|
||||
|
||||
if ($Global:SetupConfigPostprocessor) {
|
||||
$Global:SetupConfigPostprocessorpartitionCreations.Invoke($unattendedConfig, $namespace);
|
||||
}
|
||||
|
||||
$unattendedConfig.PreserveWhitespace = $true;
|
||||
$unattendedConfig.Save("$drive\Autounattend.xml");
|
||||
|
||||
|
|
Loading…
Reference in a new issue