使用PowerShell获取VM的vCenter信息

时间:2014-10-24 14:19:16

标签: powershell vmware vcenter

我需要获取虚拟机的vCenter信息,或至少只获取vCenter名称

我已经在线查看了vmware帮助,他们所拥有的只是连接到vCenter以获取VM信息,与我正在尝试实现的完全相反。它甚至可能吗?我有机器fqdn和ipaddress吗?

由于

1 个答案:

答案 0 :(得分:1)

vCenter名称位于每个对象的Uid中。对于VM,您可以尝试以下代码段:

$vm.Uid.Substring($vm.Uid.IndexOf('@')+1).Split(":")[0]

或者:

Get-VM | % {
  [PSCustomObject] @{
    Name = $_.Name
    vCenter = $_.Uid.Substring($_.Uid.IndexOf('@')+1).Split(":")[0]
  }
}

因此,这将遍历已连接的vCenter中的每个VM,并获取VM名称,然后从Uid中提取vCenter。 Uid的格式似乎是:

/ VIServer = [用户名] @ [的vCenter]:[端口] /的虚= [VirtualMachineID]

因此它开始在'@'+ 1的索引处抓取vCenter名称,然后将结果字符串拆分为冒号(端口之前的点)并抓取该结果数组中的第一个项目。使用正则表达式可以稍微优雅地完成此操作:

[regex]::Match($vm.Uid,'.*@(.*):').Captures.Groups[1].Value
相关问题