CreateVirtualHardDisk( string ServerName, string VirtualHardDiskPath, string ParentPath, VirtualHardDiskType Type, VirtualHardDiskFormat Format, Int64 FileSize, Int32 BlockSize, Int32 LogicalSectorSize, Int32 PhysicalSectorSize) { ManagementScope scope = new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2"); VirtualHardDiskSettingData settingData = new VirtualHardDiskSettingData( Type, Format, VirtualHardDiskPath, ParentPath, FileSize, BlockSize, LogicalSectorSize, PhysicalSectorSize); using (ManagementObject imageManagementService = StorageUtilities.GetImageManagementService(scope)) { using (ManagementBaseObject inParams = imageManagementService.GetMethodParameters("CreateVirtualHardDisk")) { inParams["VirtualDiskSettingData"] = settingData.GetVirtualHardDiskSettingDataEmbeddedInstance( ServerName, imageManagementService.Path.Path); using (ManagementBaseObject outParams = imageManagementService.InvokeMethod( "CreateVirtualHardDisk", inParams, null)) { WmiUtilities.ValidateOutput(outParams, scope); } } } }
ConvertVirtualHardDisk( string ServerName, string SourcePath, string DestinationPath, VirtualHardDiskFormat Format) { ManagementScope scope = new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2"); VirtualHardDiskSettingData settingData = new VirtualHardDiskSettingData( VirtualHardDiskType.FixedSize, Format, DestinationPath, null, 0, 0, 0, 0); using (ManagementObject imageManagementService = StorageUtilities.GetImageManagementService(scope)) { using (ManagementBaseObject inParams = imageManagementService.GetMethodParameters("ConvertVirtualHardDisk")) { inParams["SourcePath"] = SourcePath; inParams["VirtualDiskSettingData"] = settingData.GetVirtualHardDiskSettingDataEmbeddedInstance( ServerName, imageManagementService.Path.Path); using (ManagementBaseObject outParams = imageManagementService.InvokeMethod( "ConvertVirtualHardDisk", 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); } } }