Я столкнулся с проблемой при использовании оснасток Vmware PowerCLI и System Center Virtual Machine Manager для PowerShell. Оба они содержат командлеты с одинаковыми именами, например «Get-VM» и «Get-VMHost». Похоже, что последняя загружаемая оснастка выигрывает, поэтому я добавил в свой сценарий логику для загрузки и выгрузки оснастки, когда мне нужно было получить данные VMware или данные Hyper-V. Я хотел бы знать, есть ли способ предотвратить это соперничество или иным образом создать уникальный дескриптор для одного командлета, в то же время позволяя другому загружаться и работать по назначению?
Конфликт командлетов между оснастками PowerShell
Ответы (2)
Наилучший подход при использовании оснастки — полностью указать имя командлета с именем оснастки. Например, если имя оснастки для PowerCLI — PowerCLI, используйте:
PowerCLI\Get-VM
Для оснастки SCVMM используйте ее имя в качестве префикса. Чтобы увидеть имена оснасток, выполните:
Get-PSSnapin -Registered
person
Keith Hill
schedule
05.08.2010
И для тех, кто ищет фактическое пространство имен/префикс для командлетов оснастки VMware vSphere PowerCLI, это:
VMWare.VimAutomation.Core
Следовательно, реальный префикс для приведенного выше примера:
VMware.VimAutomation.Core\Get-VM
person
Dave
schedule
26.05.2011