AttachVirtualHardDisk(
            string ServerName,
            string VirtualHardDiskPath,
            string AssignDriveLetters,
            string ReadOnly)
        {
            ManagementScope scope =
                new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2");

            using (ManagementObject imageManagementService =
                       StorageUtilities.GetImageManagementService(scope))
            {
                using (ManagementBaseObject inParams =
                           imageManagementService.GetMethodParameters("AttachVirtualHardDisk"))
                {
                    inParams["Path"] = VirtualHardDiskPath;
                    inParams["AssignDriveLetter"] = AssignDriveLetters;
                    inParams["ReadOnly"]          = ReadOnly;

                    using (ManagementBaseObject outParams = imageManagementService.InvokeMethod(
                               "AttachVirtualHardDisk", inParams, null))
                    {
                        WmiUtilities.ValidateOutput(outParams, scope);
                    }
                }
            }
        }
        ResizeVirtualHardDisk(
            string ServerName,
            string VirtualHardDiskPath,
            UInt64 FileSize)
        {
            ManagementScope scope =
                new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2");

            using (ManagementObject imageManagementService =
                       StorageUtilities.GetImageManagementService(scope))
            {
                using (ManagementBaseObject inParams =
                           imageManagementService.GetMethodParameters("ResizeVirtualHardDisk"))
                {
                    inParams["Path"]            = VirtualHardDiskPath;
                    inParams["MaxInternalSize"] = FileSize;

                    using (ManagementBaseObject outParams = imageManagementService.InvokeMethod(
                               "ResizeVirtualHardDisk", inParams, null))
                    {
                        WmiUtilities.ValidateOutput(outParams, scope);
                    }
                }
            }
        }
        SetParentVirtualHardDisk(
            string ServerName,
            string ChildPath,
            string ParentPath,
            string LeafPath,
            string IgnoreIDMismatch)
        {
            ManagementScope scope =
                new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2");

            using (ManagementObject imageManagementService =
                       StorageUtilities.GetImageManagementService(scope))
            {
                using (ManagementBaseObject inParams =
                           imageManagementService.GetMethodParameters("SetParentVirtualHardDisk"))
                {
                    inParams["ChildPath"]        = ChildPath;
                    inParams["ParentPath"]       = ParentPath;
                    inParams["LeafPath"]         = LeafPath;
                    inParams["IgnoreIDMismatch"] = IgnoreIDMismatch;

                    using (ManagementBaseObject outParams = imageManagementService.InvokeMethod(
                               "SetParentVirtualHardDisk", inParams, null))
                    {
                        WmiUtilities.ValidateOutput(outParams, scope);
                    }
                }
            }
        }
        MergeVirtualHardDisk(
            string ServerName,
            string ChildPath,
            string ParentPath)
        {
            ManagementScope scope =
                new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2");

            using (ManagementObject imageManagementService =
                       StorageUtilities.GetImageManagementService(scope))
            {
                using (ManagementBaseObject inParams =
                           imageManagementService.GetMethodParameters("MergeVirtualHardDisk"))
                {
                    inParams["SourcePath"]      = ChildPath;
                    inParams["DestinationPath"] = ParentPath;

                    using (ManagementBaseObject outParams = imageManagementService.InvokeMethod(
                               "MergeVirtualHardDisk", inParams, null))
                    {
                        WmiUtilities.ValidateOutput(outParams, scope);
                    }
                }
            }
        }
Exemple #5
0
        CompactVirtualHardDisk(
            string ServerName,
            string VirtualHardDiskPath,
            string Mode)
        {
            //
            // To obtain the full benefit of compaction, the VHD or VHDX should be mounted prior to
            // and throughout the compaction.
            //
            // Mounting a VHD is demonstrated in the AttachVirtualDisk sample.
            //
            // The VHD can only be mounted read-only during compaction.
            //

            ManagementScope scope =
                new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2");

            using (ManagementObject imageManagementService =
                       StorageUtilities.GetImageManagementService(scope))
            {
                using (ManagementBaseObject inParams =
                           imageManagementService.GetMethodParameters("CompactVirtualHardDisk"))
                {
                    inParams["Path"] = VirtualHardDiskPath;
                    inParams["Mode"] = Mode;

                    using (ManagementBaseObject outParams = imageManagementService.InvokeMethod(
                               "CompactVirtualHardDisk", inParams, null))
                    {
                        WmiUtilities.ValidateOutput(outParams, scope);
                    }
                }
            }
        }
Exemple #6
0
        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);
                    }
                }
            }
        }
Exemple #7
0
        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);
                    }
                }
            }
        }
        CreateVirtualFloppyDisk(
            string ServerName,
            string VirtualFloppyDiskPath)
        {
            ManagementScope scope =
                new ManagementScope("\\\\" + ServerName + "\\root\\virtualization\\v2");

            using (ManagementObject imageManagementService =
                       StorageUtilities.GetImageManagementService(scope))
            {
                using (ManagementBaseObject inParams =
                           imageManagementService.GetMethodParameters("CreateVirtualFloppyDisk"))
                {
                    inParams["Path"] = VirtualFloppyDiskPath;

                    using (ManagementBaseObject outParams = imageManagementService.InvokeMethod(
                               "CreateVirtualFloppyDisk", inParams, null))
                    {
                        WmiUtilities.ValidateOutput(outParams, scope);
                    }
                }
            }
        }
Exemple #9
0
        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);
                }
            }
        }