Search Wiki:

Introduction

The Windows(R) Image to Virtual Hard Disk (WIM2VHD) command-line tool allows you to create sysprepped VHD images from any Windows 7 installation source. VHDs created by WIM2VHD will boot directly to the Out Of Box Experience, ready for your first-use customizations. You can also automate the OOBE by supplying your own unattend.xml file, making the possibilities limitless.

Fresh squeezed, organically grown, free-range VHDs - just like Mom used to make - that work with Virtual PC, Virtual Server, Microsoft Hyper-V, and Windows 7's new Native VHD-Boot functionality!

Requirements

  • A computer running one of the following Windows operating systems:
    • Windows 7
    • Windows Server 2008 R2
    • Windows Server 2008 with Hyper-V RTM enabled (x64 only)
  • The Windows 7 Beta Automated Installation Kit (AIK) or Windows OEM Pre-Installation Kit (OPK) installed.
  • A Windows 7 or Windows Server 2008 R2 installation source, or another Windows image captured to a .WIM file.

Usage

WIM2VHD.WSF /wim:<wimPath> /sku:<sku>
[/vhd:<vhdPath>] [/size:<vhdSizeInMb>] [/disktype:<dynamic|fixed>]
[/unattend:<unattendXmlPath>] [/qfe:<qfe1,...,qfeN>]
[/hyperv:<true|false>] [/ref:<ref1,...,refN] [/dbg:<args>]
[/passthru:<physicalDrive>])
 
Required parameters:
 
  /wim:<wimPath>
 
    The path of the WIM file to use when creating the VHD.  For example:
    X:\sources\install.wim
 
    Where X: is the drive letter of your DVD ROM drive.
 
  /sku:<skuName>|<skuIndex>
 
    The SKU within the WIM to use when creating the VHD (e.g. "ServerStandard",
    "ServerDatacenterCore", "2", etc.).  This value can either be passed as a
    SKU name (typically the easiest method) or as a SKU index (which requires
    you to have manually inspected the WIM with a tool like IMAGEX.EXE).
 
Optional parameters:
 
  /vhd:<vhdPath>
 
    The path and name of the VHD to be created.  If a file with this name
    already exists, it will be overwritten.  If no VHD is specified, a VHD will
    be created in the current folder with a name in the following format:
    <Major>.<Minor>.<Build>.<Rev>.<Arch>.<BuildLab>.<Timestamp>.<SKU>.vhd
    ex:
       6.1.7000.0.x86fre.winmain_win7beta.081212-1400.Ultimate.vhd
 
  /size:<vhdSizeInMb>
 
    For Fixed disks, this is the size in MB of the VHD that will be created.
    For Dynamic disks, this is the maximum size in MB that the VHD can grow to
    as additional space is required.
    If unspecified, a default value of 40960 MB (40 GB) will be used.
 
  /disktype:<Dynamic|Fixed>
 
    Specifies what kind of VHD should be created: Dynamic or Fixed.
    A Fixed disk allocates all of the necessary disk space for the VHD upon
    creation.  A Dynamic disk only allocates the space required by files in
    the VHD at any given time, and will grow as more space is required.
    The default value is Dynamic.
 
  /unattend:<unattendXmlPath>
 
    The path to an unattend.xml file that will be used to automate the OOBE
    portion of Windows setup the first time the VHD is booted.
 
  /qfe:<qfe1,...,qfeN>
 
    A comma-separated list of QFEs to apply to the VHD after the WIM is
    applied. These must be CBB/CBS servicing CAB files that were extracted from
    .MSU files.
 
    To extract a CAB from an .MSU, use the following command:
 
    expand -F:* <.MSU file> <location to extract to>
 
  /ref:<ref1,...,refN>
 
    A comma-separated list of WIM pieces to apply to the VHD.
 
  /dbg:<protocol>,<port/channel/target>[,<baudrate>]
 
    Configures debugging in the OS on the VHD.
    examples:
      /dbg:serial,1,115200 - configures serial debugging on COM1 at 115200bps
      /dbg:1394,10 - configures 1394 debugging on channel 10
      /dbg:usb,debugging - configures USB debugging with the target DEBUGGING
 
  /hyperv:<true|false>
 
    Forces WIM2VHD.WSF to use Hyper-V VHD handling instead of native
    Windows 7 VHD handling.  Default value is "false".
 
  /passthru:<physicalDrive>
 
    Applies the WIM directly to the specified drive and makes it bootable.
    NOTE: The partition on the disk must be marked as ACTIVE in order to boot
    successfully. This action is NOT performed by WIM2VHD.WSF.

Known Issues

  • Some custom .WIM files may not work properly. Please file a bug using the Issue Tracker listing the tool that was used to create the .WIM, and the output from IMAGEX.EXE /info <your .WIM file> if you encounter problems.

Frequently Asked Questions

Q: What is a .WIM file?
A: According to Wikipedia, a .WIM file "is a file-based disk image format. It was developed by Microsoft to deploy its latest Windows operating system releases, Windows Vista and Windows Server 2008, which use it as part of their standard installation procedure. It works equally well with legacy versions of Windows however, and is used as part of Windows Fundamentals for Legacy PCs."

Q: What is a .VHD file?
A: According to Wikipedia, a .VHD file is "a file format containing the complete contents and structure representing a Hard Disk Drive, and is used to store virtual operating systems and their associated programs in a single file by various virtualization programs or a virtual machine."

Q: How does the conversion process work?
A: During the "conversion", a .VHD file is created and mounted as a physical drive on the technician system. An image from the .WIM file is then applied to the .VHD, and tweaked to make the image bootable in a virtual machine, or on a physical system. This process is documented in the Windows 7 Beta Automatied Installation Kit. WIM2VHD is an example of one possible way to automate that process.

Q: Can I use code from WIM2VHD in my own scripts or products?
A: Please read the Microsoft Public License (Ms-PL) for information on what is and is not allowed.

Q: I've read your code and found some problems. It could be much more efficient by doing...
A: If you've discovered a bug, please file an issue using the Issue Tracker on this website. If you've found code that you don't think is efficient, you can file an issue on that, too, but it may not get fixed. WIM2VHD is not meant to be an example of how to write the best JScript, it is an example of how to automate the process for creating .VHDs from .WIM files.

Q: Can I use WIM2VHD to create .VHDs for Windows Vista and Windows Server 2008?
A: No. This process is only supported for Windows 7 and Windows Server 2008 R2.

Q: Can I use my own custom .WIM files?
A: I think so. I've tested WIM2VHD with a few different tools that can create .WIM files, but I'm sure I've missed some. Please see the Known Issues section for instructions on how to report issues with custom .WIM files.

Q: Is this tool supported by Microsoft?
A: No. This tool is not supported by Microsoft.

Q: Can I use this tool to create .VMDK files for use with VMWare?
A: Yes and no. There is no support in this tool for creating and mounting .VMDK files, which is a necessary step. Assuming that .VMDK files can be mounted as a physical drive on a Windows computer, then you should be able to modify WIM2VHD to use .VMDK files, or you can use the /passthru switch to use a .VMDK that's already been mounted.

Q: Can I configure the OS inside the .VHD?
A: You can tell WIM2VHD to add an unattend.xml file to the .VHD, which can be used to do some system configuration.

Q: Can I copy files into the VHD?
A: You can do this manually, but there is currently no mechanism to do this with WIM2VHD. If you think there should be, vote for this issue.

Q: Are there examples on how to use WIM2VHD?
A: Look down. :) I'm also working on a series of videos that will explain how to use WIM2VHD.

Examples

Create a Windows Server 2008 R2 Server Standard Core VHD, named foo.vhd
CSCRIPT WIM2VHD.WSF /WIM:X:\sources\install.wim /SKU:SERVERSTANDARDCORE /VHD:C:\foo.vhd

Create a Windows Server 2008 R2 Server Standard VHD with an automatically generated name
CSCRIPT WIM2VHD.WSF /WIM:X:\sources\install.wim /SKU:SERVERSTANDARD

Create a Windows 7 Home Premium VHD with an automated setup answer file
CSCRIPT WIM2VHD.WSF /WIM:X:\sources\install.wim /SKU:HOMEPREMIUM /UNATTEND:C:\stuff\unattend.xml

Apply the first image in a custom WIM to a VHD named custom.vhd
CSCRIPT WIM2VHD.WSF /WIM:C:\stuff\custom.wim /SKU:1 /VHD:C:\custom.vhd

Last edited Feb 3 2009 at 10:41 PM  by mikekol, version 3
Comments
glenmcafeee wrote  Apr 7 2010 at 6:44 PM  
I have downloaded the latest win2vhs.wsf and it failed to work at line 2334 column 23. If I look at the wsf file it abruptly ends with the line: if (null != argum
Where is the full file?

Updating...
Page view tracker