【问题标题】:Using Powershell to get a vm's own name使用 Powershell 获取虚拟机自己的名称
【发布时间】:2015-01-16 17:31:00
【问题描述】:

简短的问题是; VM 可以使用 powershell 获得自己的名称吗?

我有一个环境,其中有 12 组相同的虚拟机。每组有一个跳转服务器,命名约定是##_APP_SET#,其中##是对应的NAT设备,SET#告诉我VM的集合。

在这个 APP 虚拟机上,我创建了一个菜单,该菜单使用外部 vCenter 上的帐户来打开和关闭集合中的虚拟机。因此,它从 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 中的名称匹配的主机名,然后以这种方式解析信息。

【问题讨论】:

    标签: powershell vmware powercli


    【解决方案1】:

    是否有任何类型的 APP VM 独有的可识别信息,例如面向外部的 IP,以便能够登录到 Set 的专用网络之外?

    也许这样的事情会有所帮助:
    $ip = (ipconfig | Select-String "IPv4 Address" | Select-String "192.168.1").Line.Replace("IPv4 Address. . . . . . . . . . . :","") $vm = get-vm | ?{$_.Guest.IPAddress -like $ip}

    【讨论】:

    • 这实际上是挑战之一。他们都有相同的IP。每个集合都在它自己的隔离网络中。除了 VM 名称之外,图像是相同的。它们也应该都具有相同的主机名,但我想我可以给它们所有与 VM 名称匹配的主机名,然后创建一个主机文件条目作为别名。
    • 如果您能够重命名机器以匹配它们的 VM 名称,您可以使用 $compname = $env:computername,然后 Get-VM $compname。
    【解决方案2】:

    或者在 VC 中使用tags 对 VM 进行分组,并根据需要使用Invoke-VMScript 来查看其他客人。

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 2022-12-02
      • 2021-12-25
      • 1970-01-01
      • 2020-10-14
      • 2011-01-11
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      相关资源
      最近更新 更多