- 2008-08-09 (土) 17:58
- Windows Server 2008
![]()
ネット上で参考になるHyper-Vのスクリプトを見て、以前Virtual Server上で実行していたVBScriptを多少書き換えればHyper-Vでも稼働させる事が出来そうだなと思ってHyper-Vのインストールされた環境で動作するVBScriptを作ってみました。
とりあえず全ての仮想インスタンスのステータスを表示します。
“Msvm_ComputerSystem”をそのまま利用すると物理OSのステータスも拾ってしまうので
Where Description = 'Microsoft Virtual Machine'
というところで物理OSをリストから除外しています。
とりあえず一通りのプロパティの取得はWMIから出来ますので、Virtual Serverと同じ様に自動起動や自動バックアップがVBScriptで作れそうです。
Option Explicit
Dim objWMI
Dim VM
Dim VMList
Set objWMI = GetObject("winmgmts:\\.\root\virtualization")
'日本語環境ではホストマシンのDescriptionが'Microsoft ホスト コンピュータ システム'となるのでそれをクエリで除外
Set VMList = objWMI.ExecQuery _
("SELECT * FROM Msvm_ComputerSystem Where Description = 'Microsoft Virtual Machine'")
'マシン名と詳細の表示
For Each VM In VMList
Wscript.Stdout.WriteLine "ElementName " & VM.ElementName
Wscript.Stdout.WriteLine "Name " & VM.Name
Wscript.Stdout.WriteLine "EnabledState " & SHOW_EnabledState(VM.EnabledState)
Wscript.Stdout.WriteLine "Description " & VM.Description
Wscript.Stdout.WriteLine "InstallDate " & VM.InstallDate
Wscript.Stdout.WriteLine "TimeOfLastConfigurationChange " & VM.TimeOfLastConfigurationChange
Wscript.Stdout.WriteLine "TimeOfLastStateChange " & VM.TimeOfLastStateChange
Wscript.Stdout.WriteBlankLines 1
Next
'EnabledStateのintを文字に変換
Function SHOW_EnabledState(int)
Select Case int
Case 0
SHOW_EnabledState = "Unknown"
Case 2
SHOW_EnabledState = "Enabled(実行中)"
Case 3
SHOW_EnabledState = "Disabled"
Case 32768
SHOW_EnabledState = "Paused(一時停止)"
Case 32769
SHOW_EnabledState = "Suspended(保存完了)"
Case 32770
SHOW_EnabledState = "Starting(復元中)"
Case 32771
SHOW_EnabledState = "Snapshotting"
Case 32772
SHOW_EnabledState = "Migrating"
Case 32773
SHOW_EnabledState = "Saving"
Case 32774
SHOW_EnabledState = "Stopping"
Case 32775
SHOW_EnabledState = "Deleted"
Case 32776
SHOW_EnabledState = "Pausing"
Case Else
SHOW_EnabledState = "不明なステータス " & int
End Select
End Function
参考URL
Msvm_ComputerSystem instanceの一覧
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\virtualization")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Msvm_ComputerSystem WHERE Description = 'Microsoft Virtual Machine'",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "Msvm_ComputerSystem instance"
Wscript.Echo "-----------------------------------"
If isNull(objItem.AssignedNumaNodeList) Then
Wscript.Echo "AssignedNumaNodeList: "
Else
Wscript.Echo "AssignedNumaNodeList: " & Join(objItem.AssignedNumaNodeList, ",")
End If
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "CreationClassName: " & objItem.CreationClassName
If isNull(objItem.Dedicated) Then
Wscript.Echo "Dedicated: "
Else
Wscript.Echo "Dedicated: " & Join(objItem.Dedicated, ",")
End If
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "ElementName: " & objItem.ElementName
Wscript.Echo "EnabledDefault: " & objItem.EnabledDefault
Wscript.Echo "EnabledState: " & objItem.EnabledState
Wscript.Echo "HealthState: " & objItem.HealthState
If isNull(objItem.IdentifyingDescriptions) Then
Wscript.Echo "IdentifyingDescriptions: "
Else
Wscript.Echo "IdentifyingDescriptions: " & Join(objItem.IdentifyingDescriptions, ",")
End If
Wscript.Echo "InstallDate: " & objItem.InstallDate
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "NameFormat: " & objItem.NameFormat
Wscript.Echo "OnTimeInMilliseconds: " & objItem.OnTimeInMilliseconds
If isNull(objItem.OperationalStatus) Then
Wscript.Echo "OperationalStatus: "
Else
Wscript.Echo "OperationalStatus: " & Join(objItem.OperationalStatus, ",")
End If
If isNull(objItem.OtherDedicatedDescriptions) Then
Wscript.Echo "OtherDedicatedDescriptions: "
Else
Wscript.Echo "OtherDedicatedDescriptions: " & Join(objItem.OtherDedicatedDescriptions, ",")
End If
Wscript.Echo "OtherEnabledState: " & objItem.OtherEnabledState
If isNull(objItem.OtherIdentifyingInfo) Then
Wscript.Echo "OtherIdentifyingInfo: "
Else
Wscript.Echo "OtherIdentifyingInfo: " & Join(objItem.OtherIdentifyingInfo, ",")
End If
If isNull(objItem.PowerManagementCapabilities) Then
Wscript.Echo "PowerManagementCapabilities: "
Else
Wscript.Echo "PowerManagementCapabilities: " & Join(objItem.PowerManagementCapabilities, ",")
End If
Wscript.Echo "PrimaryOwnerContact: " & objItem.PrimaryOwnerContact
Wscript.Echo "PrimaryOwnerName: " & objItem.PrimaryOwnerName
Wscript.Echo "ProcessID: " & objItem.ProcessID
Wscript.Echo "RequestedState: " & objItem.RequestedState
Wscript.Echo "ResetCapability: " & objItem.ResetCapability
If isNull(objItem.Roles) Then
Wscript.Echo "Roles: "
Else
Wscript.Echo "Roles: " & Join(objItem.Roles, ",")
End If
Wscript.Echo "Status: " & objItem.Status
If isNull(objItem.StatusDescriptions) Then
Wscript.Echo "StatusDescriptions: "
Else
Wscript.Echo "StatusDescriptions: " & Join(objItem.StatusDescriptions, ",")
End If
Wscript.Echo "TimeOfLastConfigurationChange: " & objItem.TimeOfLastConfigurationChange
Wscript.Echo "TimeOfLastStateChange: " & objItem.TimeOfLastStateChange
Next
関連する記事
- Newer : ゲストOSに物理ディスクを直接割り当てる@Hyper-V
- Older : Googleのストリートビューが面白い
Comments:0
Trackbacks:1
- Trackback URL for this entry
- http://pnpk.net/cms/archives/452/trackback
- Listed below are links to weblogs that reference
- スクリプトでHyper-V上の仮想OSのプロパティをVBScriptで取得する方法 from http://pnpk.net
- pingback from スクリプトでHyper-V上の仮想OSのプロパティをVBScriptで取得する方法 … プラウザでプレビュー 09-12-30 (水) 15:21
-
[...] See original here: スクリプトでHyper-V上の仮想OSのプロパティをVBScriptで取得する方法 … By admin | category: プロパティ | tags: japanese, join-their, option, property-manager, プロパティ | voglia.jp [...]