Hello @Manickam ,
AFAIK, the outcome you described is expected since the deny effect prevents the 'create' request from ever getting to Compute Resource Provider.
I recommend using the DeployIfNotExist effect for your scenario. This effect will not block the creation but flag it as non-compliant and queues it up for remediation. Also, DeployIfNotExist allows you to enable the appropriate recovery/backyup setting once the newly created VM is marked as non complaint.
Below is a sample DINE policy that evaluates a SQL Server databases to determine if transparentDataEncryption is enabled. If not, then a deployment to enable is executed..
use this as a sample to build your VM policy. Ping if you have any followup questions.