Convert-SCVirtualDiskDrive
Convert-SCVirtualDiskDrive
Converts an existing virtual hard disk attached to a virtual disk drive object from dynamic to fixed, from fixed to dynamic, from VHD to VHDX, or converts a pass-through disk attached to a virtual disk drive object to a virtual hard disk.
Syntax
Parameter Set: Dynamic
Convert-SCVirtualDiskDrive [-VirtualDiskDrive] <VirtualDiskDrive> -Dynamic [-FileName <String> ] [-JobGroup <Guid]> ] [-JobVariable <String> ] [-Path <String> ] [-PROTipID <Guid]> ] [-RunAsynchronously] [-VHDFormatType <VHDFormatType]> ] [ <CommonParameters>]
Parameter Set: Fixed
Convert-SCVirtualDiskDrive [-VirtualDiskDrive] <VirtualDiskDrive> -Fixed [-FileName <String> ] [-JobGroup <Guid]> ] [-JobVariable <String> ] [-Path <String> ] [-PROTipID <Guid]> ] [-RunAsynchronously] [-VHDFormatType <VHDFormatType]> ] [ <CommonParameters>]
Parameter Set: VHDX
Convert-SCVirtualDiskDrive [-VirtualDiskDrive] <VirtualDiskDrive> -VHDX [-BlockSizeBytes <Int32> ] [-DeleteSource] [-FileName <String> ] [-JobGroup <Guid]> ] [-JobVariable <String> ] [-Path <String> ] [-PROTipID <Guid]> ] [-RunAsynchronously] [-ValidateOnCompletion] [ <CommonParameters>]
Detailed Description
The Convert-SCVirtualDiskDrive cmdlet converts:
-- An existing virtual hard disk attached to a virtual disk drive object from dynamic to fixed or from fixed to dynamic.
-- From VHD to VHDX.
-- A pass-through disk attached to a virtual disk drive object to a virtual hard disk.
To convert a virtual hard disk from one format to the other, the virtual machine on which the virtual hard disk is configured must be in a stopped state.
You can only convert the disk format of a Windows-based virtual hard disk file, a .vhd file, on a virtual machine deployed on a Hyper-V host.
A VMware-based virtual hard disk file, a .vmdk file, on a virtual machine that is deployed on an ESX host is fixed in format and therefore cannot be converted to a dynamic format.
A Citrix XenServer-based virtual hard disk file, a .vhd file, on a virtual machine that is deployed on a Citrix XenServer host is also fixed in format and therefore cannot be converted to a dynamic format.
To convert a VHD to VHDX, the virtual machine on which the virtual hard disk is configured must be in a stopped state.
You can only convert the disk format of a Windows-based virtual hard disk file from VHD to VHDX on a virtual machine deployed on a Hyper-V host.
A pass-through disk is a physical hard disk on the host that a virtual machine can use instead of using a virtual hard disk. You can use Convert-SCVirtualDiskDrive to convert a pass-through disk attached to a virtual disk drive on a virtual machine to a virtual hard disk. The virtual machine must be on a Hyper-V host, and must be in a stopped state.
Parameters
-BlockSizeBytes<Int32>
Specifies the block size in bytes for the virtual hard disk.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-DeleteSource
Indicates that the source virtual hard disk is deleted after a successful conversion.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Dynamic
Specifies that a virtual hard disk can expand dynamically.
Aliases |
none |
Required? |
true |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-FileName<String>
Specifies the file name to use when you rename a virtual hard disk file as you add it to a virtual machine.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Fixed
Specifies that a virtual hard disk is fixed in size.
Aliases |
none |
Required? |
true |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-JobGroup<Guid]>
Specifies an identifier for a series of commands that will run as a set just before the final command that includes the same job group identifier runs.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-JobVariable<String>
Specifies that job progress is tracked and stored in the variable named by this parameter.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Path<String>
Specifies the destination path for the operation.
Example formats:
Local: -Path "F:\"
UNC: -Path "\\Library\Templates"
Volume GUID: -Path "\\?\Volume{4703c1ea-8ae7-11db-b473-00123f7603e3}\"
VMware ESX: -Path "[storage1]\MyVMwareFolderForVMs\MyVM.vmx"
Citrix XenServer: -Path "Local storage[99b6212f-b63d-c676-25f9-d6c460992de7]"
Wildcards are supported for Get- cmdlets and when you specify the UNC path.
Example format:
UNC: -Path "\\VMHostServer\MyVMs\*VM*"
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-PROTipID<Guid]>
Specifies the ID of the PRO tip that triggered this action. This allows for auditing of PRO tips.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-RunAsynchronously
Indicates that the job runs asynchronously so that control returns to the command shell immediately.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-ValidateOnCompletion
Indicates that the converted virtual hard disk is validated after a successful conversion.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-VHDFormatType<VHDFormatType]>
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-VHDX
Specifies that a virtual hard disk type is VHDX.
Aliases |
none |
Required? |
true |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-VirtualDiskDrive<VirtualDiskDrive>
Specifies a virtual disk drive object. You can attach either a virtual hard disk (for a virtual machine on any host) or a pass-through disk (for a virtual machine on a Hyper-V host or an ESX host) to a virtual disk drive object.
Aliases |
none |
Required? |
true |
Position? |
1 |
Default Value |
none |
Accept Pipeline Input? |
True (ByValue) |
Accept Wildcard Characters? |
false |
<CommonParameters>
This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, and -OutVariable. For more information, see about_CommonParameters (https://go.microsoft.com/fwlink/p/?LinkID=113216).
Inputs
The input type is the type of the objects that you can pipe to the cmdlet.
Outputs
The output type is the type of the objects that the cmdlet emits.
- VirtualDiskDrive
Examples
Example 1: Convert a pass-through disk on a virtual disk drive on a virtual machine to a virtual hard disk
The first command gets the virtual machine object named VM01, and then stores the object in the $VM variable. This example assumes that VM01 is currently configured to use a pass-through disk and that the virtual machine has only one pass-through disk.
The second command gets the virtual disk drive object on VM01, and then stores this object in the $VirtDiskDrive variable.
The last command converts the pass-through disk drive stored in $VirtDiskDrive to a fixed virtual hard disk and moves the virtual hard disk to the destination folder C:\VirtualDiskDrives.
PS C:\> $VM = Get-SCVirtualMachine -Name "VM01"
PS C:\> $VirtDiskDrive = Get-SCVirtualDiskDrive -VM $VM
PS C:\> Convert-VirtualDiskDrive $VirtDiskDrive -Fixed -Path "C:\VirtualDiskDrives"
Example 2: Convert one of several pass-through disks on a virtual disk drive on a virtual machine to a virtual hard disk
The first command gets the virtual machine object named VM02, and then stores the object in $VM. This example assumes that VM02 has three virtual disk drive objects and that the first virtual disk drive is bound to a virtual hard drive whereas both the second and third virtual disk drives are bound to pass-through disks.
The second command gets all virtual disk drive objects on VM02, and then stores them in the $VirtDiskDrive object array.
The last command converts the third pass-through disk, $VirtDiskDrive[2], to a dynamically expanding virtual hard disk and moves this new virtual hard disk to the destination folder D:\.
PS C:\> $VM = Get-SCVirtualMachine -Name "VM02"
PS C:\> $VirtDiskDrive = Get-SCVirtualDiskDrive -VM $VM
PS C:\> $VirtDiskDrive[2] | Convert-SCVirtualDiskDrive -Dynamic -Path "D:\"
Example 3: Convert a dynamic VHD attached to a virtual disk drive object on a virtual machine to a fixed format
The first command gets the virtual disk drive object that is attached to virtual machine VM03, and then stores the virtual disk drive object in the $VirtDiskDrive variable. This example assumes that the virtual machine has only one virtual disk drive object and that the virtual hard disk attached to the virtual disk drive is a dynamic virtual hard disk.
The second command converts the virtual hard disk stored in $VirtDiskDrive to a fixed disk.
PS C:\> $VirtDiskDrive = Get-SCVirtualDiskDrive -VM (Get-SCVirtualMachine -Name "VM03")
PS C:\> Convert-SCVirtualDiskDrive -VirtualDiskDrive $VirtDiskDrive -Fixed
Example 4: Convert a dynamic VHD attached to a virtual disk drive object on a virtual machine to fixed VHDX
The first command gets the virtual disk drive object that is attached to virtual machine VM03, and then stores the object in the $VirtDiskDrive variable. This example assumes that the virtual machine has only one virtual disk drive object and that the virtual hard disk attached to the virtual disk drive is a dynamic virtual hard disk. This example also assumes that the virtual machine is in a stopped state.
The second command converts the virtual hard disk stored in $VirtDiskDrive to a VHDX disk.
PS C:\> $VirtDiskDrive = Get-SCVirtualDiskDrive -VM (Get-SCVirtualMachine -Name "VM03")
PS C:\> Convert-SCVirtualDiskDrive -VirtualDiskDrive $VirtDiskDrive -VHDX
Example 5: Convert a differencing VHD attached to a virtual disk drive on a virtual machine to a differencing VHDX
The first command gets the virtual disk drive object that is attached to virtual machine VM04, and then stores the object in the $VirtDiskDrive variable. This example assumes that the virtual machine has only one virtual disk drive object and that the virtual hard disk attached to the virtual disk drive is a dynamic virtual hard disk. This example also assumes that the virtual machine is in a stopped state.
The second command converts the differencing virtual hard disk stored in $VirtDiskDrive to a differencing VHDX disk. Additionally, this command deletes the source disk.
PS C:\> $VirtDiskDrive = Get-VirtualDiskDrive -VM (Get-SCVirtualMachine -Name "VM04")
PS C:\> Convert-VirtualDiskDrive -VirtualDiskDrive $VirtDiskDrive -VHDX -BlockSizeBytes 1MB -DeleteSource -ValidateOnCompletion