简短的问题是; VM可以使用PowerShell获取自己的名称吗?
我的环境中有12组相同的VM。每个集合都有一个跳转服务器,命名约定是## _ APP_SET#,其中##是对应的NAT设备,SET#告诉我一组VM。
在此APP VM上,我创建了一个菜单,该菜单使用外部vCenter上的帐户打开和关闭设备中的VM。因此,从VM内部,它将连接到其父vCenter并在该集中的另一个VM上运行操作。问题是我在脚本中硬编码了VM名称。例如,如果我在01_APP_SET1上,我有一堆01_MACHINENAME_SET1的条目,而在02_APP_SET2,我有02_MACHINENAME_SET2的条目等。
我目前在12个不同的APP VM上管理12个不同的脚本。我希望使脚本更通用,VM在其自身上调用get-vm并解析前面的##和尾随SET#,但除了获取带有get-vm APP
我认为解决这个问题的最佳方法是为每个APP VM提供一个与vCenter名称相匹配的主机名,然后以这种方式解析信息。
答案 0 :(得分:0)
是否存在APP VM独有的任何可识别信息,例如能够登录到专用网络外部的外部IP?
也许这样的事情会有所帮助:
$ip = (ipconfig | Select-String "IPv4 Address" | Select-String "192.168.1").Line.Replace("IPv4 Address. . . . . . . . . . . :","")
$vm = get-vm | ?{$_.Guest.IPAddress -like $ip}
答案 1 :(得分:0)
或者在VC中将tags的虚拟机分组,然后根据需要使用Invoke-VMScript在其他访客旁边查看。