Как можно что-то вроде Get-HardDisk -VM "myVM" работать на всех? В конце концов, «myVM» - это строка, а не VirtualMachine, так что это не должно произойти?
Причина этого в том, что VI Toolkit использует функцию PowerShell, которая позволяет преобразовывать аргументы, которые вы получаете в командной строке. Это основа того, что мы называем «Object By Name» на VI Toolkit: если вы укажете строку, где должен быть объект, VI Toolkit работает за кулисами, чтобы заменить эту строку объектом, который представляет строка.
Неизбежно этот поиск имеет стоимость, вопрос в том, сколько это стоит? Это приводит нас к довольно неудачному свойству VI Toolkit, который заключается в том, что когда вы получаете виртуальную машину, вся фильтрация выполняется на стороне клиента. С одной стороны это хорошо, потому что это позволяет нам поддерживать подстановочные знаки и нечувствительность к регистру. Однако есть одно очень неудачное последствие, которое заключается в том, что для загрузки одной виртуальной машины требуется столько же времени, сколько требуется, чтобы загрузить все из них (подробнее о том, как мы улучшаем это ниже). Это основная причина того, что второй пример является настолько медленным: каждый раз, когда вызывается Get-HardDisk, VI Toolkit просматривает один машинный объект за кулисами.
для загрузки виртуальных машин один раз, а затем цикл по $ виртуальных машин, чтобы добавить аннотацию.
Почему, по вашему мнению, хэш-таблица была бы релевантной? – vonPryz
Не уверен, только что получил некоторые документы, говорит, что хеш-таблица работает лучше. – rpr
Довольно уверен, что хэш-таблица не ускорит что-либо. Задержка здесь, вероятно, будет связана с временем, которое требуется, чтобы Get-VM извлекала список виртуальных машин с удаленных серверов. – Asnivor