DSCResources/OpticalDiskDrives/OpticalDiskDrives.schema.psm1

configuration OpticalDiskDrives
{
    param
    (
        [Parameter(Mandatory = $true)]
        [hashtable[]]
        $Drives
    )

    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName StorageDsc

    foreach ($drive in $Drives)
    {
        # Remove Case Sensitivity of ordered Dictionary or Hashtables
        $drive = @{} + $drive

        if (-not $drive.ContainsKey('Ensure'))
        {
            $drive.Ensure = 'Present'
        }

        if ($drive.Ensure -eq 'Absent' -and -not $drive.ContainsKey('DriveLetter'))
        {
            $drive.DriveLetter = 'Z'  # unused but required
        }

        (Get-DscSplattedResource -ResourceName OpticalDiskDriveLetter -ExecutionName "optDiskDrive$($drive.DiskId)" -Properties $drive -NoInvoke).Invoke($drive)
    }
}