This works for tag-based SAN storage policies. I'm not sure if it will work for vSAN, but it's worth a shot...
Get-VM -Name $myVM | Set-SpbmEntityConfiguration -StoragePolicy $myStoragePolicy
$MyHDs = Get-VM -Name $myVM | Get-HardDisk
Set-SpbmEntityConfiguration $MyHDs -StoragePolicy $myStoragePolicy
For some reason this also creates an SDRS override for the VM. I added this code to delete it:
$vmEntry = @()
$storMgr = Get-View StorageResourceManager
$spec = New-Object VMware.Vim.StorageDrsConfigSpec
$dsc = Get-DatastoreCluster $myDatastoreCluster
Get-VM -Datastore $dsc | where {$_.Name -eq $MyVM} | %{
$vmEntry = New-Object VMware.Vim.StorageDrsVmConfigSpec
$vmEntry.Operation = "add"
$vmEntry.Info = New-Object VMware.Vim.StorageDrsVmConfigInfo
$vmEntry.Info.Vm = $_.ExtensionData.MoRef
$spec.vmConfigSpec += $vmEntry
}
$storMgr.ConfigureStorageDrsForPod($dsc.ExtensionData.MoRef,$spec,$true)