豆子最近接管了一些ESXi 5.0,上面有很多虚拟机,不过这些虚拟机的SCSI的驱动很多都还在使用旧版本比如LSIBasci,LSISAS等等。我希望把他们都更新到ParaVirtual的驱动,更新方式很简单,手动添加一个硬盘和SCSI驱动器,选择ParaVirtual,等操作系统识别出硬盘以后就表示驱动已经自动安装了,那么删除这个新硬盘并修改启动盘的驱动器类型就行了。


不过首先 我得先获取所有VM的SCSI和操作系统的类型才方便下一步的操作。


连接VCenter很容易,下载对应的PowerCli,然后添加Snappin就行。如果懒得每次执行,可以在powershell profile里面配置每次启动ISE自动加载。

    Add-PSSnapin VMware.VimAutomation.Core


然后连接VCenter,就可以查看类型了。语句本身没啥好说的,我用了个tee来保存变量,这样我可以同时在屏幕上也看见结果。最后导出结果。

Connect-viserver sydvcs2012
get-VM | select version,Name, powerstate, numcpu, Memorygb, @{N="IP Address";E={@($_.guest.IPAddress[0])}},@{n="OS";e={$_.guest.osfullname}}, @{n="scsi";e={(Get-ScsiController $_.name).type}} | 
tee -variable result
$result | sort scsi | Export-Csv C:\temp\mel.csv -NoTypeInformation
Disconnect-VIServer


PowerShell CLI 获取VM信息



值得一提的是get-vm刚开始的时候出了些小问题,因为我同时安装了hyper-v的模块,hyper-v也有get-vm这个命令。有的时候powershell会迷糊我到底需要哪个模块的指令。


PowerShell CLI 获取VM信息


如果为了避免混淆,需要把模块名字前缀上去就不会有冲突了


PowerShell CLI 获取VM信息