Many has been written about detecting SSD’s through WMI query’s and scripts to perform optimization settings for SSD’s when deploying Windows 7/8 to an SSD Disk.
And although there is no unique identifier to really determine if we are dealing with an SSD or traditional hard drive I believe I may have found something that works better then all the other available options.
For example there is the SSD Drive Script which queries for the ‘ random read rate’ and if it appears to be higher then 8Mb/s it will mark your drive as SSD.
Then there is also the WMI Query:
wmic diskdrive get caption which queries for the disk Caption, and sometimes a vendor has written ‘ SSD’ into the Caption. But that is also to random.
Other alternatives are managing and detecting hard drive product names, but then there is always human intervention required to update the list, because hard drives are being renewed all the time.
Because the value of the SSD Drive Script sometimes outputs not the correct value I have found a better and more reliable tool to determine the hard drive type and speed. The integrated Windows Performance Index that is present within Windows 7/8. Because this performance assessment generates a properly random read/write rate which it looks you have to generate it yourself when your disk is idle at the time the ‘SSD Script’ is being run.
To initiate a Windows Performance Index rating we need our machine during deployment or patching to be rated.
We do this by adding a ‘ run command line’ with the following parameters:
Next the Performance Index will rate the system performance and when ready have the hard drive assessed:
Obviously we cant see the rating when executing a task sequence and the Windows shell being locked, but if we would run a normal WinSAT benchmark this would be the result. And I have noticed that the values of a benchmarked traditional hard drive will not exceed 6.9 while SSD’s exceed 7.0 and more.
No we have something that we can use as a condition to either run or do not run SSD optimalization tasks in a SCCM / MDT task sequence, by using the following condition on a group of optimalization actions:
Because the machine’s hardware has been assessed a performance number has been assigned to the disk. If the disk is not rated the value always responds with zero. In this case we query if the hard drive performance rating is greater then 6.9, if this is the case we execute our SSD optimalization, if it is smaller we skip these steps.
*Alternatively, you can use the same query to execute the WinSAT benchmark for your system if it is allready rated, if it is rated it will skip the benchmark and if a machine is not rated, the benchmark will be executed.
Hope this may help you in your quest to detect and find a reliable condition from which the detection of SSD’s can be queried, and I hope that in the near feature other solutions may be handed to us.