【问题标题】:Get the parent folder for an ESXi virtual port group获取 ESXi 虚拟端口组的父文件夹
【发布时间】:2017-10-27 18:45:15
【问题描述】:

我正在编写一个脚本来为多客户托管的 ESX 环境组织虚拟机、数据存储和网络。我需要做的一件事是获取不同对象的当前位置以查看它们是否需要移动。

对于数据存储,我可以执行以下操作:

$currentFolder = (Get-Datastore $datastore).ParentFolder.Name

对于网络,它不一样:

$currentFolder = (Get-VirtualPortGroup -VMHost $esxhost -Name $network).ParentFolder.Name

这不会返回任何结果,因为 VirtualPortGroup 对象上没有“ParentFolder”属性。

我的问题是:还有其他方法可以获取 VirtualPortGroup 的父文件夹名称吗?

回答:以下代码作为单行代码工作:

Get-Folder -Id (Get-View -ViewType Network -Filter @{'Name' = $network}).Parent

我必须创建一个标准来过滤多个网络名称,因为这些网络也存在于 vDS 上。我通过管道将 Get-View 命令发送到:

Where {$_.Name -like "*$criteria*"}

我还需要比较文件夹名称以查看它们是否与我希望它们去的位置匹配,因此我将行包裹在 parens () 中并在末尾添加“.Name”,如下所示:

(Get-Folder -Id (Get-View -ViewType Network -Filter @{'Name' = $network} | Where {$_.Name -like "*$criteria*"}).Parent).Name

【问题讨论】:

    标签: powershell powercli esxi


    【解决方案1】:

    怎么样..

    $NetworkView = Get-View -ViewType Network -Filter @{'Name' = 'TestVLAN' }
    $PortGroupFolder = Get-Folder -Id $NetworkView.Parent
    

    ?

    我怀疑它与存在多次的 VirtualPortGroup 有关 - 每个 ESXi 主机/每个 VirtualSwitch 上一次 - 但“网络”仅在 vCenter 上出现一次,这就是放入文件夹的内容。如果你有分布式交换机,这可能会有所不同,我猜。

    【讨论】:

    • 我根据 LucD 的函数尝试了类似的方法。结果不包括名称,只包括类型和值。
    • 多少“像这样”?因为这会在我运行它时返回文件夹名称...
    • 我试过你的命令,它只给出类型和值。这与 Get-View 如何返回 VirtualPortGroup 对象有关。这与直接获取不同。
    • 好的,有什么不同? vSphere 6 和 PowerCLI 6.3,我在 Inventory Networking 部分 -> i.imgur.com/b2QdNQI.png 一个带有网络的 TestFolder;我运行这些命令,.Parent 属性有一个类型和值,然后 Get-Folder 将其转换为文件夹名称:i.imgur.com/r0B0KIO.png
    • 啊。我的问题是我没有看到“父”属性,但是修改第二行以使用 Get-Folder,我能够让它工作。很抱歉造成混乱!
    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 2013-07-21
    • 2020-07-27
    相关资源
    最近更新 更多