VMStateは仮想マシンの状態を文字列に戻すためのハッシュ変数。
Msvm_ComputerSystemが戻すオブジェクトは仮想マシン+ホストマシンの一覧になっていて、EnabledStateが実際のマシン状態を表す整数値(と見せかけて文字列)を返してくる。
※ EnabledStateをそのままVMState変数に突っ込むと"2"みたいな文字列でハッシュを当たりに行くので、[int]$_.EnabledStateでint型に変換してからVMStateに当たりに行くのが書き換えたポイント。
$VMState=@{
0="Unknown" ;
2="Running" ;
3="Stopped" ;
32768="Paused" ;
32769="Suspended";
32270="Starting" ;
32771="Snapshotting" ;
32773="Saving" ;
32774="Stopping" ;
32776="Pausing" ;
32777="Resuming"
}
Get-WmiObject -Namespace "root\virtualization" -ComputerName "." -Class Msvm_ComputerSystem | Format-Table -autosize @{Label="CurrentDate"; expression={Get-Date -Format "G"}}, @{Label="ElementName"; expression={$_.ElementName}}, @{Label ="EnabledState"; expression={$VMState[[int]$_.EnabledState]}}, Caption, Description
PS C:\Windows\system32> $VMState=@{
0="Unknown" ;
2="Running" ;
3="Stopped" ;
32768="Paused" ;
32769="Suspended";
32270="Starting" ;
32771="Snapshotting" ;
32773="Saving" ;
32774="Stopping" ;
32776="Pausing" ;
32777="Resuming"
}
PS C:\Windows\system32> Get-WmiObject -Namespace "root\virtualization" -ComputerName "." -Class Msvm_ComputerSystem | Format-Table -autosize @{Label="CurrentDate"; expression={Get-Date -Format "G"}}, @{Label="ElementName"; expression={$_.ElementName}}, @{Label ="EnabledState"; expression={$VMState[[int]$_.EnabledState]}}, Caption, Description
CurrentDate ElementName EnabledState Caption Description
----------- ----------- ------------ ------- -----------
2014/05/07 11:53:11 TESTHV01 Running ホスト コンピューター システム Microsoft ホスト コンピューター システム
2014/05/07 11:53:11 HOGEHOGE Stopped 仮想マシン Microsoft Virtual Machine
2014/05/07 11:53:11 TESTPC1 Stopped 仮想マシン Microsoft Virtual Machine
2014/05/07 11:53:11 TESTPC2 Running 仮想マシン Microsoft Virtual Machine
Windows Server 2012 以降であれば、標準搭載のHyper-VコマンドレットでGet-VM一発で終わるんですけどねぇ…。
PS C:\Users\imksoo> Get-VM
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
CentOS6.2-minimal Off 0 0 00:00:00 正常稼働中
CentOS6.2-minimal2 Off 0 0 00:00:00 正常稼働中
CentOS6.3 Off 0 0 00:00:00 正常稼働中
Chef-Server Off 0 0 00:00:00 正常稼働中
PS C:\Users\imksoo> Get-VM
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
CentOS6.2-minimal Off 0 0 00:00:00 正常稼働中
CentOS6.2-minimal2 Off 0 0 00:00:00 正常稼働中
CentOS6.3 Off 0 0 00:00:00 正常稼働中
Chef-Server Off 0 0 00:00:00 正常稼働中
0 件のコメント:
コメントを投稿