I don't immediatly see a reason why the wrong account would be picked.
But I would start by changing this
...foreach ($vm in $myVMs)$snapshots = Get-Snapshot -VM $vmforeach ($snapShot in $snapShots){$VM = $snapShot.VM.....
You seem to overwriting the loop variable inside the loop.
Although this is technically allowed, and could be useful in some situations, I would suggest to change 1 of the 2 variables to another name.
Just to avoid potential problems with the $vm variable