New-MBRDisk.ps1

Function New-MBRDisk
{
  <#
      .SYNOPSIS
      Initializes a Disk as MBR
      .DESCRIPTION
      New-GPTDisk Initizalizes a VHD as MBR-Disk and creates all necessary Partitions for MBR-Boot
      .EXAMPLE
      New-MBRDisk -VHD C:\disks\system.vhdx
      Partitions C:\disks\system.vhdx for use as a MBR Datadrive
      .NOTES
      Version: 1.0
      Author: Holger Voges
      Date: 2018-08-17
      www.netz-weise-it.training/weisheiten/
  #>

  param
  (
    # [parameter(mandatory=$true)]
    # [string]$vhdPath,
    
    [Validateset('Dynamic','Fixed')]
    $disktype = 'Dynamic',
    
    [parameter(Mandatory=$true)]
    [Object]
    $vhd
  )
  
  $partitionStyle = 'MBR'
  Initialize-Disk -PartitionStyle $partitionStyle -Number $vhd.Number
  $Partitions = @{}
  $Partitions['Boot'] = $vhd | New-Partition -Size 300MB -MbrType Huge -IsActive | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'System'
  Set-Partition -DiskNumber $vhd.Number -PartitionNumber ( $partitions.Boot | Get-Partition ).PartitionNumber -NewDriveLetter ( Get-Freedrive )
  $partitions.Boot = Get-Volume -UniqueId $Partitions.Boot.UniqueId
  # $Partitions.Boot = $Partitions.Boot | Set-DriveLetter
  $Partitions['Data'] = $vhd | New-Partition -UseMaximumSize -MbrType Huge | Format-Volume -FileSystem NTFS -NewFileSystemLabel 'Data'
  Set-Partition -DiskNumber $vhd.Number -PartitionNumber ( $partitions.Data | Get-Partition ).PartitionNumber -NewDriveLetter ( Get-Freedrive ) 
  $Partitions.Data = Get-Volume -UniqueId $Partitions.Data.UniqueId
  $Partitions  
}