I have setup a Windows Server 2012 Essentials guest to run on a Hyper-V host (Windows Server 2012).
A physical HDD (spinning rust) is setup as pass-through to the guest, but it's incorrectly identified as a SSD on the guest (as seen in the drive optimization dialog).
How can I correct this so Windows optimizes its settings for spinning disks?
Try mounting the physical disk on the host as a volume and confirm that the host sees the physical disk as a hard disk drive. If not, this may be an issue with the firmware on the disk and you should contact the manufacturer. Some physical disks use a combination of a small SSD cache + spinning HDD platter for capacity and the firmware incorrectly reports that they are SSD disks.
Note that in Windows Server 2012 R2 editions, "media type" is exposed as a parameter on the Set-PhysicalDisk PowerShell cmdlet so that you can override. However, this is not exposed on Windows Server 2012 editions.
You can get more details on this cmdlet at: http://blogs.technet.com/b/keithmayer/archive/2013/09/13/step-by-step-build-an-automated-storage-tiers-lab-with-windows-server-2012-r2-and-powershell.aspx
Hope this helps!