Конфликт командлетов между оснастками PowerShell

Я столкнулся с проблемой при использовании оснасток Vmware PowerCLI и System Center Virtual Machine Manager для PowerShell. Оба они содержат командлеты с одинаковыми именами, например «Get-VM» и «Get-VMHost». Похоже, что последняя загружаемая оснастка выигрывает, поэтому я добавил в свой сценарий логику для загрузки и выгрузки оснастки, когда мне нужно было получить данные VMware или данные Hyper-V. Я хотел бы знать, есть ли способ предотвратить это соперничество или иным образом создать уникальный дескриптор для одного командлета, в то же время позволяя другому загружаться и работать по назначению?


person rob.rfg    schedule 05.08.2010    source источник


Ответы (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