我需要获取虚拟机的vCenter信息,或至少只获取vCenter名称
我已经在线查看了vmware帮助,他们所拥有的只是连接到vCenter以获取VM信息,与我正在尝试实现的完全相反。它甚至可能吗?我有机器fqdn和ipaddress吗?
由于
答案 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