【问题标题】:Cmdlet Contention between PowerShell SnapInsPowerShell 管理单元之间的 Cmdlet 争用
【发布时间】:2010-08-05 03:03:59
【问题描述】:
我在同时使用适用于 PowerShell 的 Vmware PowerCLI 和 System Center Virtual Machine Manager 管理单元时遇到了问题。它们都包含名称相似的 cmdlet,例如“Get-VM”和“Get-VMHost”。似乎最后一个加载的管理单元获胜,所以我在脚本中添加了逻辑,以便在需要获取 VMware 数据或 Hyper-V 数据时加载和卸载管理单元。我想知道是否有任何方法可以防止这种争用,或者以其他方式为一个 cmdlet 创建一些唯一句柄,同时仍然允许另一个 cmdlet 按预期加载和操作?
【问题讨论】:
标签:
powershell
powercli
pssnapin
【解决方案1】:
使用管理单元的最佳方法是使用管理单元名称完全限定 cmdlet 名称。例如,如果 PowerCLI 的管理单元名称是 PowerCLI,则使用:
PowerCLI\Get-VM
对于 SCVMM 管理单元,使用它的名称作为前缀。要查看管理单元名称,请执行:
Get-PSSnapin -Registered
【解决方案2】:
对于任何搜索 VMware 的 vSphere PowerCLI 管理单元 cmdlet 的实际命名空间/前缀的人来说,它是:
VMWare.VimAutomation.Core
因此上例的真正前缀是:
VMware.VimAutomation.Core\Get-VM