New-GPTDisk.ps1
function New-GPTDisk { <# .SYNOPSIS Initializes a Disk as GPT .DESCRIPTION New-GPTDisk Initizalizes a VHD as GPT and creates all necessary Partitions for UEFI-Boot .EXAMPLE New-GPTDisk -VHD C:\disks\system.vhdx Partitions C:\disks\system.vhdx for use as a GPT Datadrive .NOTES Version: 1.0 Author: Holger Voges Date: 2018-08-17 www.netz-weise-it.training/weisheiten/ #> param ( [Validateset('Dynamic','Fixed')] $disktype = 'Dynamic', [parameter(Mandatory=$true)] [object] $vhd ) $partitionStyle = 'GPT' Initialize-Disk -PartitionStyle $partitionStyle -Number $vhd.Number $Partitions = @{} $Partitions['Boot'] = $vhd | New-Partition -Size 100MB | Format-Volume -FileSystem FAT32 -NewFileSystemLabel 'System' -Confirm:$false Set-Partition -DiskNumber $vhd.Number -PartitionNumber ( $partitions.Boot | Get-Partition ).PartitionNumber -NewDriveLetter ( Get-FreeDrive ) # Refresh Drive-Letter Property $partitions.Boot = Get-Volume -UniqueId $Partitions.Boot.UniqueId # $null = $vhd | New-Partition -GptType $PartitionType.MSR -Size 128MB $Partitions['Data'] = $vhd | New-Partition -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'Data' -Confirm:$false Set-Partition -DiskNumber $vhd.Number -PartitionNumber ( $partitions.Data | Get-Partition ).PartitionNumber -NewDriveLetter ( Get-FreeDrive ) $Partitions.Data = Get-Volume -UniqueId $Partitions.Data.UniqueId $Null = Get-PSDrive $Partitions } |