In my test environment I use a couple of base disks to easily create new virtual machines. I have a base disk for Windows XP SP3, Windows Server 2008 (32-bit and 64-bit), Windows Server 2008 Core and Windows Server 2003. Each time I create a new virtual machine, I create a differencing disk based on one of the base disks and tell the virtual machine to use that base disk. This functionality is the same as in Virtual PC and Virtual Server.

I wanted to automate the creation of differencing disks using a PowerShell script and it turns out to be very easy. The following two lines are all you need:

$img_svc=Get-WmiObject -Namespace root\virtualization -class msvm_imagemanagementservice

$img_svc.CreateDifferencingVirtualHardDisk("path for new disk", "path to parent disk")

You can find this information here but at this time the information there is pretty basic. You'll probably learn more by listing the WMI classes in PowerShell and playing with them a bit. To list the classes just use the following command:

Get-WmiObject -Namespace root\virtualization -list

I tried to find out how to create a virtual machine using WMI but that seems to be rather difficult. At first glance there is no simple method you can use with some parameters like the name, amount of memory, disk and so forth. Oh well, when SCVMM will have support for Hyper-V there will be native PowerShell commands to do just that so it's no big deal.