Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 通过PowerCLI获取VM完整文件夹路径的列表_Powershell_Vmware_Powercli - Fatal编程技术网

Powershell 通过PowerCLI获取VM完整文件夹路径的列表

Powershell 通过PowerCLI获取VM完整文件夹路径的列表,powershell,vmware,powercli,Powershell,Vmware,Powercli,我正在使用vSphere 6.0和最新的PowerCLI。我想获取虚拟机的名称及其路径。类似于get-vm myvmware | get-folderpath 我尝试了一些在线解决方案,但要么根本不起作用,要么得到了所有的虚拟机。我有一个虚拟机列表,我需要提供给它以获取它们的路径您可以通过一个函数执行类似的操作。VMware似乎没有这种内置功能 Function Get-VMFolderPath { param([string]$VMFolderId) $Folders =

我正在使用vSphere 6.0和最新的PowerCLI。我想获取虚拟机的名称及其路径。类似于get-vm myvmware | get-folderpath


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

您可以通过一个函数执行类似的操作。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
这将列出从数据中心容器到包含虚拟机的虚拟机文件夹的文件夹路径