Reputation: 97
Utilizing the Common utilities for the virtualization samples (V2)
I created a class that queries Msvm_VirtualSystemSettingData -
public static ManagementObject GetVirtualMachineSettings(ManagementObject virtualMachine)
{
using (ManagementObjectCollection settingsCollection =
virtualMachine.GetRelated("Msvm_VirtualSystemSettingData", "Msvm_SettingsDefineState",
null, null, null, null, false, null))
{
ManagementObject virtualMachineSettings =
GetFirstObjectFromCollection(settingsCollection);
return virtualMachineSettings;
}
}
In Main, I'm utilizing the class as follows -
ManagementObject vmSettings = GetVirtualMachineSettings(vm);
ManagementObjectCollection scsiController = vmSettings.GetRelated("Msvm_ResourceAllocationSettingData");
foreach (ManagementObject controller in scsiController)
{
if (controller["ResourceType"].ToString() == "6")
{
Console.WriteLine("\nCaption: {0}\nDescription: {1}\nInstance ID: {2}\nElementName: {3}\nResource Type: {4}\nResource SubType: {5}\n",
controller["Caption"].ToString(),
controller["Description"].ToString(),
controller["InstanceID"].ToString(),
controller["ElementName"].ToString(),
controller["ResourceType"].ToString(),
controller["ResourceSubType"].ToString());
}
}
How exactly do I see which one is SCSI 0, SCSI 1, SCSI 2, SCSI 3? I know that the "HyperV:Synthetic Scsi Device" all have an Instance ID, but what I mean is how does Hyper-V translate each SCSI Controller to 0, 1, 2, and 3?
Upvotes: 2
Views: 661
Reputation: 219
If you look at InstanceID field - you will see
Microsoft:219513E4-7641-49B0-810E-DC7621E1B01B\3BAE5515-9D6C-4216-85F4-9335CEE41629\0
where the second GUID (3BAE5515-9D6C-4216-85F4-9335CEE41629) is the SCSI controller id.
You can get the bus number by running: Get-VirtualSCSIAdapter -ID 3BAE5515-9D6C-4216-85F4-9335CEE41629
in Powershell on Hyper-V host.
This command returns:
Bus : 0
ID : 3BAE5515-9D6C-4216-85F4-9335CEE41629
Upvotes: 1