首页 > 解决方案 > 通过 PowerCLI 获取 VM 完整文件夹路径列表

问题描述

我正在使用 vSphere 6.0 和最新的 PowerCLI。我想获取 VM 的名称及其路径。类似 get-vm myvmware | 获取文件夹路径

我已经尝试了一些在网上找到的解决方案,但它们要么根本不起作用,要么得到了所有的虚拟机。我有一个虚拟机列表,我需要提供给它以获取它们的路径

标签: powershellvmwarepowercli

解决方案


你可以用一个函数做这样的事情。VMware似乎没有内置这样的东西。

Function Get-VMFolderPath {

    param([string]$VMFolderId)

    $Folders = [system.collections.arraylist]::new()
    $tracker = Get-Folder -Id $VMFolderId
    $Obj = [pscustomobject][ordered]@{FolderName = $tracker.Name; FolderID = $tracker.Id}
    $null = $Folders.add($Obj)

    while ($tracker) {
       if ($tracker.parent.type) {
        $tracker = (Get-Folder -Id $tracker.parentId)
        $Obj = [pscustomobject][ordered]@{FolderName = $tracker.Name; FolderID = $tracker.Id}
        $null = $Folders.add($Obj)
           }
           else {
        $Obj = [pscustomobject][ordered]@{FolderName = $tracker.parent.name; FolderID = $tracker.parentId}
        $null = $Folders.add($Obj)
            $tracker = $null
       }
    }
    $Folders.Reverse()
    $Folders.FolderName -join "/"
}

$VM = Get-VM "VM Name"
Get-VMFolderPath $VM.Folder.Id

这将列出从数据中心容器开始到包含 VM 的 VM 文件夹的文件夹路径。


推荐阅读