Export (0) Print
Expand All
Expand Minimize
3 out of 4 rated this helpful - Rate this topic

Optimize-VHD

Windows Server 2012 R2 and Windows 8.1

Updated: March 3, 2014

Applies To: Windows 8.1, Windows PowerShell 4.0, Windows Server 2012 R2

Optimize-VHD

Optimizes the allocation of space used by virtual hard disk files, except for fixed virtual hard disks.

Syntax

Parameter Set: Default
Optimize-VHD [-Path] <String[]> [-AsJob] [-ComputerName <String[]> ] [-Mode <VhdCompactMode> ] [-Passthru] [-Confirm] [-WhatIf] [ <CommonParameters>]




Detailed Description

The Optimize-VHD cmdlet optimizes the allocation of space in or more virtual hard disk files, except for fixed virtual hard disks. The Compact operation is used to optimize the files. This operation reclaims unused blocks as well as rearranges the blocks to be more efficiently packed, which reduces the size of a virtual hard disk file.

To use Optimize-VHD, the virtual hard disk must not be attached or must be attached in read-only mode.

The compact operation can succeed without reducing the file size, if no optimization is possible.

Parameters

-AsJob

Specifies that the cmdlet is to be run as a background job.


Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-ComputerName<String[]>

Specifies one or more Hyper-V hosts on which a virtual machine is to be optimized. NetBIOS names, IP addresses, and fully-qualified domain names are allowable. The default is the local computer — use “localhost” or a dot (“.”) to specify the local computer explicitly.


Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Mode<VhdCompactMode>

Specifies the mode in which the virtual hard disk is to be optimized. For a VHD disk, the default mode is Full. For a VHDX disk, the default mode is Quick. Valid modes are as follows:

--Full scans for zero blocks and reclaims unused blocks. (Allowable only if the virtual hard disk is mounted read-only.)

--Pretrimmed performs as Quick mode, but does not require the virtual hard disk to be mounted read-only. The detection of unused space is less effective than Quick mode (in which the virtual hard disk had been mounted read-only) because the scan cannot query information about free space in the NTFS file system within the virtual hard disk. Useful when the VHDX-format file has been used by operating system instances that are at least Windows 8 or Windows Server 2012, or when this cmdlet has already been run on a .vhdx file in Retrim mode.

--Prezeroed performs as Quick mode, but does not require the virtual hard disk to be mounted read-only. The unused space detection will be less effective than if the virtual hard disk had been mounted read-only as the scan will be unable to query information about free space in the NTFS file system within the virtual hard disk. Useful if a tool was run previously to zero all the free space on the virtual disk as this mode of compaction can then reclaim that space for subsequent block allocations. This form of compaction can also be useful in handling virtual hard disk containing file systems other than NTFS.

--Quick reclaims unused blocks, but does not scan for zero blocks. (Allowable only if the virtual hard disk is mounted read-only.)

--Retrim sends down retrims without scanning for zero blocks or reclaiming unused blocks. (Allowable only if the virtual hard disk is mounted read-only.)


Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Passthru

Specifies that an object is to be passed through to the pipeline representing the virtual hard disk to be optimized.


Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Path<String[]>

Specifies one or more paths to the dynamic or differencing virtual hard disk files to be optimized.


Aliases

FullName

Required?

true

Position?

1

Default Value

none

Accept Pipeline Input?

True (ByValue, ByPropertyName)

Accept Wildcard Characters?

false

-Confirm

Prompts you for confirmation before running the cmdlet.


Required?

false

Position?

named

Default Value

false

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.


Required?

false

Position?

named

Default Value

false

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

<CommonParameters>

This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, and -OutVariable. For more information, see    about_CommonParameters.

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.

Examples

Example 1

Runs the compact operation in Full mode. (If the VHDX-format file is not attached as read-only prior to the operation, it will default to Prezeroed mode.)


PS C:\> Optimize-VHD –Path c:\test\dynamic.vhdx –Mode Full

Example 2

Runs the compact operation in Retrim mode. (If the VHDX-format disk is not mounted as read-only prior to the operation, running the cmdlet returns an error.)


PS C:\> Optimize-VHD –Path c:\test\dynamic.vhdx –Mode Retrim

Example 3

Runs the compact operation in Quick mode. (If the VHDX-format file is not attached as read-only prior to the operation, it defaults to Pretrimmed mode.)


PS C:\> Optimize-VHD –Path c:\test\dynamic.vhdx –Mode Quick

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.