Can you try the following, it's something like the esxcfg-volume -M you are doing, but the status return from the ResolveMultipleUnresolvedVmfsVolumes method might contain an indication of the reason.
Not sure if that method discovers snapshot LUNs.
And watch out, code not tested in a live environment!
Foreach($esxinGet-VMHost){
Connect-VIServer-Server$esx-User$User-Password$password
$dsSys=Get-View-Id$esx.ExtensionData.ConfigManager.DatastoreSystem
$dsSys.QueryUnresolvedVmfsVolumes() |
Select
foreach ($ubin$UnBound) {
$extPaths= @()
foreach ($exin$ub.Extent) {
$extPaths+=$ex.DevicePath
}
$spec=New-ObjectVMware.Vim.HostUnresolvedVmfsResolutionSpec
$spec.extentDevicePath = @($extPaths)
$spec.uuidResolution ="forceMount"
$storSys=Get-View-Id$esx.ExtensionData.ConfigManager.storageSystem
$storSys.ResolveMultipleUnresolvedVmfsVolumes($spec)
}
Disconnect-VIServer-Server$esx-Confirm:$false
}