($vm | Get-VMHardDiskDrive).DiskNumber
Если диск один - возвращается либо цифра либо $null. Цифра преобразовывается к $true, $null к $false, и всё работает правильно.
Если дисков несколько, возвращается массив с несколькими элементами. Массив с одним элементом разворачивается и если в нём $null - всё верно. Но если в нём 2+ элементов (более 1 диска), он не разворачивается, и преобразовывается в $true. Итого неверно.