Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Creates a fixed-sized virtual hard disk (.vhd) file.
Syntax
uint32 CreateFixedVirtualHardDisk(
[in] string Path,
[in] uint64 MaxInternalSize,
[out] CIM_ConcreteJob REF Job
);
Parameters
-
Path [in]
-
Type: string
A fully qualified path that specifies the location of the new file.
-
MaxInternalSize [in]
-
Type: uint64
The maximum size of the virtual hard disk as viewable by the virtual machine, in bytes. The specified size must be a multiple of 512 or this method will fail.
-
Job [out]
-
Type: CIM_ConcreteJob
A reference to the job (can be null if the task is completed).
Return value
Type: uint32
This method can return one of the following values.
| Return code/value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[!Note] |
Remarks
Access to the Msvm_ImageManagementService class might be restricted by UAC Filtering. For more information, see User Account Control and WMI.
Examples
The following C# example creates a fixed-size virtual hard disk file. The referenced utilities can be found in Common Utilities for the Virtualization Samples.
using System;
using System.Management;
namespace HyperVSamples
{
class CreateFixedVHD
{
public const UInt64 Size1G = 0x40000000;
static void CreateFixedVirtualHardDisk(string vhdPath, UInt64 maxInternalSize)
{
ManagementScope scope = new ManagementScope(@"root\virtualization", null);
ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");
ManagementBaseObject inParams = imageService.GetMethodParameters("CreateFixedVirtualHardDisk");
inParams["Path"] = vhdPath;
inParams["MaxInternalSize"] = maxInternalSize * Size1G;
ManagementBaseObject outParams = imageService.InvokeMethod("CreateFixedVirtualHardDisk", inParams, null);
if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
{
if (Utility.JobCompleted(outParams, scope))
{
Console.WriteLine("{0} was created successfully.", inParams["Path"]);
}
else
{
Console.WriteLine("Unable to create {0}", inParams["Path"]);
}
}
}
static void Main(string[] args)
{
if (args != null && args.Length != 2)
{
Console.WriteLine("Usage: CreateFixedVHD path, maxInternalSize");
Console.WriteLine("maxInternalSize: unit in 1 gigabyte");
return;
}
string path = args[0];
UInt64 maxInternalSize = UInt64.Parse(args[1]);
CreateFixedVirtualHardDisk(path, maxInternalSize);
}
}
}
The following VBScript example creates a fixed-size virtual hard disk file.
option explicit
dim objWMIService
dim managementService
dim fileSystem
const Size1G = &H40000000
const JobStarting = 3
const JobRunning = 4
const JobCompleted = 7
const wmiStarted = 4096
Main()
'-----------------------------------------------------------------
' Main
'-----------------------------------------------------------------
Sub Main()
dim computer, objArgs, vhdPath, dynmicVHD, size
set fileSystem = Wscript.CreateObject("Scripting.FileSystemObject")
computer = "."
set objWMIService = GetObject("winmgmts:\\" & computer & "\root\virtualization")
set managementService = objWMIService.ExecQuery("Select * from Msvm_ImageManagementService").ItemIndex(0)
set objArgs = WScript.Arguments
if WScript.Arguments.Count = 2 then
vhdPath = objArgs.Unnamed.Item(0)
size = objArgs.Unnamed.Item(1)
else
WScript.Echo "usage: cscript CreateFixedVHD.vbs VHDFilePath, size"
WScript.Echo "size: unit in Gigabyte"
WScript.Quit(1)
end if
if CreateFixedVirtualHardDisk(vhdPath, size) then
WriteLog "Done"
WScript.Quit(0)
else
WriteLog "CreateVHD failed"
WScript.Quit(1)
end if
End Sub
'-----------------------------------------------------------------
' Execute CreateFixedVirtualHardDisk method
'-----------------------------------------------------------------
Function CreateFixedVirtualHardDisk(vhdPath, size)
WriteLog Format2("Sub CreateFixedVirtualHardDisk({0}, {1})", vhdPath, size)
dim objInParam, objOutParams
CreateFixedVirtualHardDisk = false
set objInParam = managementService.Methods_("CreateFixedVirtualHardDisk").InParameters.SpawnInstance_()
objInParam.Path = vhdPath
objInParam.MaxInternalSize = size * Size1G
set objOutParams = managementService.ExecMethod_("CreateFixedVirtualHardDisk", objInParam)
if (WMIMethodStarted(objOutParams)) then
if (WMIJobCompleted(objOutParams)) then
WriteLog Format1("VHD {0} was created successfully", vhdPath)
CreateFixedVirtualHardDisk = true
end if
end if
End Function
'-----------------------------------------------------------------
' Handle wmi return values
'-----------------------------------------------------------------
Function WMIMethodStarted(outParam)
WriteLog "Function WMIMethodStarted"
dim wmiStatus
WMIMethodStarted = false
if Not IsNull(outParam) then
wmiStatus = outParam.ReturnValue
if wmiStatus = wmiStarted then
WMIMethodStarted = true
else
WriteLog Format2("Failed to create VHD ConcreteJob with error {1}", wmiStatus)
end if
end if
End Function
'-----------------------------------------------------------------
' Handle wmi Job object
'-----------------------------------------------------------------
Function WMIJobCompleted(outParam)
WriteLog "Function WMIJobCompleted"
dim WMIJob, jobState
set WMIJob = objWMIService.Get(outParam.Job)
WMIJobCompleted = true
jobState = WMIJob.JobState
while jobState = JobRunning or jobState = JobStarting
WriteLog Format1("In progress... {0}% completed.",WMIJob.PercentComplete)
WScript.Sleep(1000)
set WMIJob = objWMIService.Get(outParam.Job)
jobState = WMIJob.JobState
wend
if (jobState <> JobCompleted) then
WriteLog Format1("ErrorCode:{0}", WMIJob.ErrorCode)
WriteLog Format1("ErrorDescription:{0}", WMIJob.ErrorDescription)
WMIJobCompleted = false
end if
End Function
'-----------------------------------------------------------------
' Create the console log files.
'-----------------------------------------------------------------
Sub WriteLog(line)
dim fileStream
set fileStream = fileSystem.OpenTextFile(".\CreateFixedVHD.log", 8, true)
WScript.Echo line
fileStream.WriteLine line
fileStream.Close
End Sub
'------------------------------------------------------------------------------
' The string formatting functions to avoid string concatenation.
'------------------------------------------------------------------------------
Function Format2(myString, arg0, arg1)
Format2 = Format1(myString, arg0)
Format2 = Replace(Format2, "{1}", arg1)
End Function
'------------------------------------------------------------------------------
' The string formatting functions to avoid string concatenation.
'------------------------------------------------------------------------------
Function Format1(myString, arg0)
Format1 = Replace(myString, "{0}", arg0)
End Function
Requirements
| Minimum supported client |
None supported |
| Minimum supported server |
Windows Server 2008 |
| End of client support |
None supported |
| End of server support |
Windows Server 2012 |
| Namespace |
Root\Virtualization |
| MOF |
|