使用powershell获取VM的vCenter信息

使用powershell获取VM的vCenter信息,powershell,vmware,vcenter,Powershell,Vmware,Vcenter,我需要获取虚拟机的vCenter信息,或者至少只是vCenter名称 我在线查看了vmware帮助,他们所拥有的只是连接到vCenter以获取虚拟机信息,这与我试图实现的目标正好相反。有可能吗?给我机器的fqdn和IP地址 谢谢,vCenter名称位于每个对象的Uid中。对于VM,您可以尝试以下代码段: $vm.Uid.Substring($vm.Uid.IndexOf('@')+1).Split(":")[0] 或: 因此,这将循环通过连接的vCenter中的每个VM,并获取VM名称,然后从

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

我在线查看了vmware帮助,他们所拥有的只是连接到vCenter以获取虚拟机信息,这与我试图实现的目标正好相反。有可能吗?给我机器的fqdn和IP地址


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

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

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

/VIServer=[username]@[vCenter]:[port]/VirtualMachine=[VirtualMachineID]

因此,它开始在“@”+1索引处获取vCenter名称,然后在冒号(端口前面的点)上拆分结果字符串,并获取结果数组中的第一项。使用正则表达式可以更优雅地完成此操作:

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

您是否询问如何连接到vCenter以从虚拟机获取信息?或者你需要从每个虚拟机知道它们在哪个vCenter上吗?第二种方式,我知道虚拟机和它们的IP,并试图找出它们在哪个vCenter上。Get-VM命令有一个-server参数,你在获取虚拟机时不能使用这个参数吗?然后你就会知道它们来自何处:)这个参数接受一个数组,因此你可以将所有vCenter服务器定义为一个数组,然后使用Get-VM-Server对它们进行访问。谢谢,是的,这就是我现在所做的,试图避免这里的所有硬编码,但它认为这是我的方式,但首先我需要知道,没有可能的方法找到只有name/IP的VM的vCenter,然后用另一种方法工作。
[regex]::Match($vm.Uid,'.*@(.*):').Captures.Groups[1].Value