Compress-SCVirtualDiskDrive

Compresses a dynamically expanding virtual hard disk attached to a virtual disk drive object to reduce the size of the virtual hard disk.

Description

The Compress-SCVirtualDiskDrive cmdlet compresses a dynamically expanding virtual hard disk attached to a virtual disk drive object to reduce the size of the virtual hard disk. The virtual machine must be stopped before you can compress the virtual hard disk.

You can only use the Compress-SCVirtualDiskDrive cmdlet to compress a Windows-based virtual hard disk (.vhd) file attached to a virtual disk drive object on a virtual machine that is deployed on a Hyper-V host.   

A VMware-based virtual hard disk (.vmdk)  file on a virtual machine deployed on an ESX Server 3.0 or 3.5 host is fixed (not dynamic), and you cannot compress a fixed virtual hard disk.

A Citrix XenServer-based virtual hard disk (.vhd) file on a virtual machine deployed on a XenServer host is also fixed (not dynamic), and therefore cannot be compressed.

For more information about Compress-SCVirtualDiskDrive, type: "Get-Help Compress-SCVirtualDiskDrive -online".

Parameters

VirtualDiskDrive

Required? true
Accept Pipeline Input? true (ByValue)
Position? 0
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.

JobGroup

Required? false
Accept Pipeline Input? false
Position? named
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. 

JobVariable

Required? false
Accept Pipeline Input? false
Position? named
Specifies that job progress is tracked and stored in the variable named by this parameter. 

PROTipID

Required? false
Accept Pipeline Input? false
Position? named
Specifies the ID of the PRO tip that triggered this action. This allows for auditing of PRO tips.

RunAsynchronously

Required? false
Accept Pipeline Input? false
Position? named
Indicates that the job runs asynchronously so that control returns to the command shell immediately. 
Requires a VMM virtual disk drive object that is currently associated with a virtual machine deployed on a host, which can be retrieved by using the Get-SCVirtualDiskDrive cmdlet.

Examples

1: Compress a virtual hard disk attached to a virtual disk drive on a VM deployed on a host.
PS C:\> $VirtDiskDrive = Get-SCVirtualDiskDrive -VM (Get-SCVirtualMachine -Name "VM01")
PS C:\> Compress-SCVirtualDiskDrive -VirtualDiskDrive $VirtDiskDrive
The first command gets the virtual disk drive object attached to VM01 and stores the object in the $VDD variable. This example assumes the virtual machine has only one virtual disk drive and that the virtual hard disk attached to the virtual disk drive is, a dynamic virtual hard disk.

The second command compresses the dynamically expanding virtual hard disk that is attached to the virtual disk drive on VM01.

See Also