|
|
|
|
移动端

3.2.4 vCenter目录结构的调整

《运维前线:一线运维专家的运维方法、技巧与实践》第3章数据中心搬迁中的x86自动化运维,本章主要介绍在大型数据中心搬迁的过程中,如何利用自行编制的各类脚本,低成本、高效率又准确地完成大量节点的逻辑搬迁工作。本节为大家介绍vCenter目录结构的调整。

作者:云技术社区来源:机械工业出版社|2017-04-23 16:16

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


3.2.4 vCenter目录结构的调整

我们需要将源vCenter的目录结构原封不动地挪移到目标vCenter中,以确保新注册的虚拟机位置不变,因此我们需要导出源vCenter的目录结构,并导入至目标vCenter中。

(1)从源vCenter中导出目录结构:

  1. New-VIProperty -Name 'BlueFolderPath' -ObjectType 'VirtualMachine' -Value {  
  2.     param($vm)  
  3.     function Get-ParentName{  
  4.         param($object)  
  5.         if($object.Folder){  
  6.             $blue = Get-ParentName $object.Folder         #获取路径  
  7.             $name = $object.Folder.Name                   #获取vm_name  
  8.         }  
  9.         elseif($object.Parent -and $object.Parent.GetType().Name -like  
  10.         "Folder*"){  
  11.             $blue = Get-ParentName $object.Parent  
  12.             $name = $object.Parent.Name  
  13.         }  
  14.         elseif($object.ParentFolder){  
  15.             $blue = Get-ParentName $object.ParentFolder  
  16.             $name = $object.ParentFolder.Name  
  17.         }  
  18.         if("vm","Datacenters" -notcontains $name){  
  19.             $blue + "/" + $name  
  20.         }  
  21.         else{  
  22.             $blue  
  23.         }  
  24.     }  
  25.  
  26.     (Get-ParentName $vm).Remove(0,1)  
  27. } -Force | Out-Null  
  28. $dcName = "zbvc00-vcenter" 
  29.  
  30. Get-VM -Location (Get-Datacenter -Name $dcName) | Select Name,BlueFolderPath  
  31. | Export-Csv "C:\vm-folder.csv" -NoTypeInformation -UseCulture -encoding utf8 

(2)将目录结构导入目标vCenter中(并将虚拟机移动至指定目录路径下):

  1. $newDatacenter = "zbvc00-vcenter" 
  2. $startFolder = get-Folder -Name vm -Location (Get-Folder -Name vm -Location  
  3. (Get-Datacenter -Name $newDatacenter))  
  4.  
  5. Import-Csv "C:\vm-folder.csv" -UseCulture | %{  
  6.     $location = $startFolder  
  7.     $_.BlueFolderPath.TrimStart('/').Split('/') | %{  
  8.         $tgtFolder = Get-Folder -Name vm -Location $location -ErrorAction  
  9.         SilentlyContinue  
  10.         if(!$tgtFolder){  
  11.             $location = New-Folder -Name $_ -Location $location  
  12.         }  
  13.         else{  
  14.             $location = $tgtFolder  
  15.         }  
  16.     }  
  17.  
  18.     $vm = Get-VM -Name $_.Name -ErrorAction SilentlyContinue  
  19.     if($vm){  
  20.         Move-VM -VM $vm -Destination $location -Confirm:$false  
  21.     }  

以上脚本截取自VMware社区论坛,并根据实际情况修改而成。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

计算机网络技术

本书是为北大燕工教育研究院编写的计算机网络技术的学习教材。它以实际教学大纲为依据,全面系统的介绍了计算机网络技术知识,对于一个...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊