Private/Set-USBPartiton.ps1

function Set-USBPartiton {
    [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')]
    param (
        [Parameter()]
        [int]$partCount,

        [Parameter()]
        [ImageUSBClass]$usbImage,

        [Parameter()]
        [int]$diskNum
    )
    try {
        Stop-Service -Name ShellHWDetection
        Write-Host "`nClearing Disk: $diskNum" -ForegroundColor Cyan
        if ((Get-Disk $diskNum).PartitionStyle -eq "RAW") {
            Get-Disk $diskNum | Initialize-Disk -ErrorAction SilentlyContinue -Confirm:$false
        }
        else {
            Get-Disk $diskNum | Clear-Disk -RemoveData -Confirm:$false
            Get-Disk $diskNum | Initialize-Disk -ErrorAction SilentlyContinue -Confirm:$false
        }
        Start-Sleep -Seconds 3
        switch ($partCount) {
            1 {
                Write-Host "Creating New Partions" -ForegroundColor Cyan
                $usbImage.drive = (New-Partition -DiskNumber $diskNum -UseMaximumSize -MbrType 'FAT32' -AssignDriveLetter | Format-Volume -FileSystem FAT32 -NewFileSystemLabel BOOTME).DriveLetter
            }
            2 {
                Write-Host "Creating New Partions" -ForegroundColor Cyan
                $usbImage.drive = (New-Partition -DiskNumber $diskNum -Size 2GB -AssignDriveLetter | Format-Volume -FileSystem FAT32 -NewFileSystemLabel WINPE -Confirm:$false -Force).DriveLetter
                $usbImage.drive2 = (New-Partition -DiskNumber $diskNum -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -NewFileSystemLabel Images -Confirm:$false -Force).DriveLetter
            }
            default {
                throw "Exiting due to un-recognized partition count received"
            }
        }
        $usbImage
    }
    catch {
        write-warning $_.Exception.Message
        exit(1)
    }
    finally {
        Start-Service -Name ShellHWDetection
    }
}