ValidateVirtualHardDisk( string ServerName, string VirtualHardDiskPath) { ManagementScope scope = new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2"); using (ManagementObject imageManagementService = StorageUtilities.GetImageManagementService(scope)) { using (ManagementBaseObject inParams = imageManagementService.GetMethodParameters("ValidateVirtualHardDisk")) { inParams["Path"] = VirtualHardDiskPath; using (ManagementBaseObject outParams = imageManagementService.InvokeMethod( "ValidateVirtualHardDisk", inParams, null)) { WmiUtilities.ValidateOutput(outParams, scope); } } } }
GetVirtualHardDisk( string ServerName, string VirtualHardDiskPath) { VirtualHardDiskSettingData virtualHardDiskSettingData; VirtualHardDiskState virtualHardDiskState; ManagementScope scope = new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2"); using (ManagementObject imageManagementService = StorageUtilities.GetImageManagementService(scope)) { // // Get VirtualHardDiskSettingData. // using (ManagementBaseObject inParams = imageManagementService.GetMethodParameters("GetVirtualHardDiskSettingData")) { inParams["Path"] = VirtualHardDiskPath; using (ManagementBaseObject outParams = imageManagementService.InvokeMethod( "GetVirtualHardDiskSettingData", inParams, null)) { WmiUtilities.ValidateOutput(outParams, scope); virtualHardDiskSettingData = VirtualHardDiskSettingData.Parse( outParams["SettingData"].ToString()); } } // // Get VirtualHardDiskState. // using (ManagementBaseObject inParams = imageManagementService.GetMethodParameters("GetVirtualHardDiskState")) { inParams["Path"] = VirtualHardDiskPath; using (ManagementBaseObject outParams = imageManagementService.InvokeMethod( "GetVirtualHardDiskState", inParams, null)) { WmiUtilities.ValidateOutput(outParams, scope); virtualHardDiskState = VirtualHardDiskState.Parse( outParams["State"].ToString()); } } // // Display results. // Console.Write("Path:\t\t\t{0}", virtualHardDiskSettingData.Path); if (virtualHardDiskSettingData.DiskFormat == VirtualHardDiskFormat.Vhd) { Console.Write(" (vhd)"); } else if (virtualHardDiskSettingData.DiskFormat == VirtualHardDiskFormat.Vhdx) { Console.Write(" (vhdx)"); } if (virtualHardDiskSettingData.DiskType == VirtualHardDiskType.FixedSize) { Console.WriteLine(" (Fixed Disk)"); Console.WriteLine("FragmentationPercentage:{0}", virtualHardDiskState.FragmentationPercentage); } else if (virtualHardDiskSettingData.DiskType == VirtualHardDiskType.DynamicallyExpanding) { Console.WriteLine(" (Dynamically Expanding Disk)"); Console.WriteLine("MaxInternalSize:\t{0}", virtualHardDiskSettingData.MaxInternalSize); Console.WriteLine("BlockSize:\t\t{0}", virtualHardDiskSettingData.BlockSize); Console.WriteLine("Alignment:\t\t{0}", virtualHardDiskState.Alignment); Console.WriteLine("FragmentationPercentage:{0}", virtualHardDiskState.FragmentationPercentage); } else if (virtualHardDiskSettingData.DiskType == VirtualHardDiskType.Differencing) { Console.WriteLine(" (Differencing Disk)"); Console.WriteLine("Parent:\t\t\t{0}", virtualHardDiskSettingData.ParentPath); Console.WriteLine("MaxInternalSize:\t{0}", virtualHardDiskSettingData.MaxInternalSize); Console.WriteLine("BlockSize:\t\t{0}", virtualHardDiskSettingData.BlockSize); Console.WriteLine("Alignment:\t\t{0}", virtualHardDiskState.Alignment); } Console.WriteLine("FileSize:\t\t{0}", virtualHardDiskState.FileSize); Console.WriteLine("LogicalSectorSize:\t{0}", virtualHardDiskSettingData.LogicalSectorSize); Console.WriteLine("PhysicalSectorSize:\t{0}", virtualHardDiskSettingData.PhysicalSectorSize); if (virtualHardDiskState.MinInternalSize != null) { Console.WriteLine("MinInternalSize:\t{0}", virtualHardDiskState.MinInternalSize); } } }