Есть много проблем с вашим кодом, и он может просто работать в вашем редакторе из-за некоторых переменных и т. Д., Установленных в пространстве выполнения вашего редактора, которых нет в коде.И даже когда это предположительно работает в редакторе, это может быть не то, что вы хотели, или то, что вы ожидали.
Например, $usb
не определено где-либо в вашем коде.Таким образом, в основном $usbDevice
выйдет пустым, и в следующей команде вы обязательно получите несоответствие типов.
Другие исправления / предложения:
$vm = 0
- Вам не нужно«объявить» переменные.Powershell - это динамический язык.
foreach ($vm in $vpc.VirtualMachines){}
- в чем смысл этой строки?Наконец, в итоге у $vm
будет последняя виртуальная машина из $vpc.VirtualMachines
Почему вы хотите, чтобы они были в одной строке?Вы можете скопировать строки и вставить в консоль, если хотите.Или вы можете поместить их в скрипт и запустить скрипт.