ホーム > インフラ, PowerShell > VMWare ESXi でホストしているVMのIPアドレスの一覧を取得する。

VMWare ESXi でホストしているVMのIPアドレスの一覧を取得する。


僕が管理しているESXiが、気づいたらすでに7台になっています。いつの間にこんなに増えたのやら。

どのESXiにどんな用途のサーバーを置いているか管理はしているものの、新しいVMが欲しくなった時なんかは、実際に配置されているVMの一覧や、各VMのCPUやハードディスクの割り当て状況、IPアドレスがいくつかを一気に確認したくなるわけです。

複数の環境を統合管理できるvCenterなんかを使っていれば簡単なのかもしれないけれど、使えるのはESXiだけということでスクリプトを作ってみました。PowerShellで。$hostListと$use,$passwordは環境に応じて変えてもらえば動く。。。のかな?

#Add-PSSnapin VMware.VimAutomation.Core

$hostList = @("192.168.0.10", "192.168.0.12", "192.168.0.13")
$user = "root"
$password = "*********"
$csvFile = "C:\temp\vmlist.csv"

function Main() {
"VM情報の取得を開始します。"
$report = @()
foreach ($vmHost in $hostList) {
$vmHost + "を調査中"
$report += Get-VmList $vmHost
}
$report | sort Host,IPAddress | epcsv $csvFile -Encoding Default
$csvFile + "に出力しました。"
}

function Get-VmList($vmHost) {
$server = Connect-VIServer -Server $vmHost -User $user -Password $password
$vmReport = @()
$vms = get-vm -server $server;
foreach ($vm in $vms) {
$vmReport += Get-VmInfo($vm)
}
Disconnect-VIServer -server $server -Confirm:$FALSE
return $vmReport
}

function Get-VmInfo($vm) {
$addresses = @()
foreach ($nic in $vm.Guest.Nics) {
$addresses += $nic.IPAddress
}
$addressList = [string]::join(",", $addresses)

$report = New-Object -typename System.Object
$report | Add-Member -MemberType noteProperty -name Host -value $vm.Host
$report | Add-Member -MemberType noteProperty -name Name -value $vm.Name
$report | Add-Member -MemberType noteProperty -name NumCpu -value $vm.NumCpu
$report | Add-Member -MemberType noteProperty -name Memory -value $vm.MemoryMB
$report | Add-Member -MemberType noteProperty -name UsedSpaceGB -value $vm.UsedSpaceGB
$report | Add-Member -MemberType noteProperty -name Powerstate -value $vm.Powerstate
$report | Add-Member -MemberType noteProperty -name IPAddress -value $addressList
return $report
}

広告
カテゴリー:インフラ, PowerShell タグ: ,
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。