最近在写一个用于自动化修改vmx参数的脚本,发现有些问题,特意做了一些研究,发现用PowerCLI5.0获取的虚拟机信息和在vSphere Client下获取的信息是有所区别的,这可能与VMware Tools的安装与否、是否过期有关。
先来看看环境:
vCenter Server 5.0
PowerCLI5.0
PowerShell 1.0 (Windows Server 2008 R2 自带版本)
ESX 4.1 服务器27个
虚拟机187个,包括Win7、XP、2003、2008、Linux等混杂。
所用脚本:
此脚本用来获得虚拟机的操作系统名称
- $vm=Get-Cluster –Name Test -Farm01| Get-VM | Select-Object @{Name="VM Display Name"; Expression={$_.name}},@{Name="OS"; Expression={$_.guest.osfullname}}
- $vm | Export-Csv c:\temp\test.csv
vSphere Client:
选中集群,到虚拟机列表页面,导出所有该集群下的虚拟机到HTML文件。
分别把以上的CSV和HTML文件导入一个EXCEL表格,经查看两者获得的虚拟机数量是一致的,由此证明PowerCLI和vSphere Client各自都是正常的。
经对比发现
CSV中有
19个虚拟机操作系统名称为空,但这19个虚拟机在vSphere Client中11个可看到操作系统名称,8个为Unknown。该19个虚拟机的VMware Tools均未安装。
由此可见,VMware Tools是否安装会影响到PowerCLI的执行情况。
但是有另外一个奇怪的问题还是搞不清楚。
在另外一个ESXi5.0的集群中,创建了6个虚拟机并在创建时手工指定了操作系统类型,让这些虚拟机处于开机状态但不安装任何操作系统,再次运行以上脚本。
我发现昨天脚本的输出显示没有抓到任何一台的操作系统类型,但是今天再次运行竟然有一台抓到了操作系统类型。昨天到今天唯一的区别是我重启了一次vCenter Server服务。
有人知道是怎么回事儿吗?
昨天的运行结果:
今天的运行结果:
转载于:https://blog.51cto.com/wilber82/710903