Как получить список шаблонов из нескольких кластеров?

Я пытаюсь перейти с 6.0 vCenter на 6.5 vCenter и хочу перенести все шаблоны. Как я могу выбрать все кластеры одновременно, чтобы получить полный список шаблонов?

У меня есть много шаблонов в моем 6.0 vCenter, и мне нужно экспортировать список, чтобы перенести их все сразу в мой новый 6.5 vCenter, используя Powercli. Единственный способ, который я нашел, - использовать цикл foreach, в котором я должен предоставить имя кластера. Я попытался использовать "get-datacenter" вместо "get-cluster", но результат еще хуже.

$toto = foreach ($vmhost in Get-Cluster 'my_cluster'|Get-VMHost) {
    Get-Template -Location $vmhost |
        select name, @{n='VMHOST';e={$vmhost.name}},
            @{n='VMTX';e={$_.extensiondata.config.files.VmPathName}}
} 

$toto | Export-Csv C:\scripts\Templates.csv

Код работает, но не показывает мне все шаблоны в vCenter. Как я могу заставить его работать так, чтобы я мог иметь все шаблоны во всех кластерах одновременно, без использования цикла для каждого?

1 ответ

Эта функция извлекает все шаблоны из одного целевого центра обработки данных, сканируя все доступные кластеры и хосты внутри; вывод полного результата в переменную $array_list.

Функция Render_Template_List {

      Clear-Host
$array_list = [System.Collections.ArrayList]@()
if (!($global:templates_bool)) {
    $host.ui.RawUI.WindowTitle = "Retrieving available templates for use with '$global:datacenter' datacenter...Please Wait!"
    if ($global:datacenter -eq 'none'){
        $ESX = get-datacenter | get-VMhost | %{$_.Extensiondata.MoRef}
    } else {
        $ESX = get-datacenter -name "$global:datacenter" | get-VMhost | %{$_.Extensiondata.MoRef}
    }
    If ($global:Template -eq 'none') {
        $Query = Get-Template | where {$ESX -contains $_.Extensiondata.Runtime.Host} | Sort-Object               
    } else {
        $Query = Get-Template -name "$global:Template" | where {$ESX -contains $_.Extensiondata.Runtime.Host} | Sort-Object        
    }
    $global:templates_bool = $true
    $global:templates_query = $query

} 
$seperator = "{,}"
$query = 0
$arr = 1
foreach ($template in $global:templates_query )  {
    if ($arr -eq 1) {
        foreach ($array in $global:templates_array) {
            If (!($array -like "*#*")) {
                $query = $query + 1
                $val_template = $array.split($seperator)[2]
                $val_template = $val_template.replace("`"","") 
                if ("$val_template" -eq "$template") {
                    $val_datacenter = $array.split($seperator)[1]
                    $val_datacenter = $val_datacenter.replace("`"","")                    
                    if ("$val_datacenter" -eq "$global:datacenter")  {
                        $array_list.Add("$val_template") | Out-Null
                    }
                }
            }
        } 
    }     
    if ($query -eq 0) {
        $array_list.Add("$template") | Out-Null
        $arr = 0
    }
}     

return $array_list

}

Другие вопросы по тегам