New-SCHardwareProfile
New-SCHardwareProfile
Creates a hardware profile in the VMM library.
Syntax
Parameter Set: Default
New-SCHardwareProfile [-Name] <String> [-BootOrder <BootDevice[]> ] [-CapabilityProfile <CapabilityProfile> ] [-CPUCount <Byte]> ] [-CPUExpectedUtilizationPercent <Int32]> ] [-CPULimitForMigration <Boolean> ] [-CPULimitFunctionality <Boolean> ] [-CPUMaximumPercent <Int32]> ] [-CPUPerVirtualNumaNodeMaximum <Byte]> ] [-CPURelativeWeight <Int32]> ] [-CPUReserve <Int32]> ] [-CPUType <ProcessorType> ] [-Description <String> ] [-DiskIops <Int32]> ] [-DRProtectionRequired <Boolean> ] [-DynamicMemoryBufferPercentage <Int32]> ] [-DynamicMemoryEnabled <Boolean]> ] [-DynamicMemoryMaximumMB <Int32]> ] [-DynamicMemoryMinimumMB <Int32]> ] [-FirstBootDevice <String> ] [-Generation <Int32> ] [-HardwareProfile <HardwareProfile> ] [-HAVMPriority <UInt32]> ] [-HighlyAvailable <Boolean> ] [-JobGroup <Guid]> ] [-JobVariable <String> ] [-MemoryMB <Int32]> ] [-MemoryPerVirtualNumaNodeMaximumMB <Int32]> ] [-MemoryWeight <Int32]> ] [-MonitorMaximumCount <Int32]> ] [-MonitorMaximumResolution <String> ] [-NetworkUtilizationMbps <Int32]> ] [-NumaIsolationRequired <Boolean]> ] [-NumLock <Boolean> ] [-Owner <String> ] [-ProtectionProvider <Nullable [Microsoft.VirtualManager.Utils.ProtectionProvider]> ] [-PROTipID <Guid]> ] [-RecoveryPointObjective <Int32]> ] [-ReplicationGroup <Microsoft.SystemCenter.VirtualMachineManager.ReplicationGroup> ] [-RunAsynchronously] [-SecureBootEnabled <Boolean]> ] [-UserRole <UserRole> ] [-VirtualNumaNodesPerSocketMaximum <Byte]> ] [-VirtualVideoAdapterEnabled <Boolean]> ] [-VMMServer <ServerConnection> ] [ <CommonParameters>]
Detailed Description
The New-SCHardwareProfile cmdlet creates a hardware profile for use in Virtual Machine Manager (VMM) that stores hardware configuration information. You can create a standalone hardware profile or customize a template or virtual machine to include hardware profile settings. New-SCHardwareProfile stores the new hardware profile object in the VMM library.
You can create a hardware profile based on defaults or an existing hardware profile, or, you can customize a hardware profile as you create it. If you specify no parameters except the required Name parameter, VMM creates a default hardware profile object.
Hardware profile settings that you can configure for a virtual machine include:
-- Boot order settings in the BIOS that specify the device startup order for a virtual machine.
Note: The boot order setting is available only for virtual machines on a Hyper-V host or Citrix XenServer host.
-- CPU settings for a virtual machine.
-- Memory available on a virtual machine.
-- A virtual floppy drive.
-- Two virtual COM ports (COM1 and COM2).
-- A built-in virtual IDE device.
-- One or more virtual SCSI adapters.
-- One or more virtual network adapters that you can attach to a logical network. A virtual network adapter can be emulated or synthetic.
-- The priority assigned to a virtual machine for using the host's CPU resources relative to the use of the host's CPU by other virtual machines deployed on the same host. CPU priorities are determined by the virtualization software.
-- Whether a virtual machine created from this profile will be highly available. A highly available virtual machine is a virtual machine that can only be placed on a host that is part of a host cluster.
Parameters
-BootOrder<BootDevice[]>
Specifies the order of devices that a virtual machine on a Hyper-V host uses to start up. Valid values are:
-- CD
-- IDEHardDrive
-- PXEBoot
-- Floppy
Example format: -BootOrder PXEBoot,IDEHardDrive,CD,Floppy
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CapabilityProfile<CapabilityProfile>
Specifies a capability profile object.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPUCount<Byte]>
Specifies the number of CPUs on a virtual machine, on a hardware profile, or on a template. See the examples for a specific cmdlet to determine how that cmdlet uses this parameter. The number of processors for each type of host is:
-- Hyper-V. Up to four CPUs per virtual machine, depending on guest operating system.
-- VMware ESX. Up to four CPUs per virtual machine for any supported guest operating system, except for a virtual machine that runs Windows NT 4.0, which supports one CPU.
-- Citrix XenServer. Up to eight CPUs per virtual machine, depending on guest operating system.
Aliases |
ProcessorCount |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPUExpectedUtilizationPercent<Int32]>
Specifies the percent of CPU on the host that you expect this virtual machine to use. This value is used only when VMM determines a suitable host for the virtual machine.
Aliases |
ExpectedCPUUtilization |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPULimitForMigration<Boolean>
Indicates whether to limit, when set to $True, processor features for the specified virtual machine in order to enable migration to a physical computer that has a different version of the same processor as the source computer. VMM does not support migrating virtual machines between physical computers that have processors from different manufacturers.
Aliases |
LimitCPUForMigration |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPULimitFunctionality<Boolean>
Indicates whether to enable running an older operating system, such as Windows NT 4.0, on a virtual machine deployed on a Hyper-V host or on a VMware ESX host by providing limited CPU functionality for the virtual machine.
Aliases |
LimitCPUFunctionality |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPUMaximumPercent<Int32]>
Specifies the highest percentage of the total resources of a single CPU on the host that can be used by a specific virtual machine at any given time.
Example format to specify 80 percent: -CPUMaximumPercent 80
Aliases |
CPUMax |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPUPerVirtualNumaNodeMaximum<Byte]>
Specifies the maximum number of CPUs allowed for each virtual NUMA node.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPURelativeWeight<Int32]>
Specifies the amount of CPU resources on a host that this virtual machine can use relative to other virtual machines on the same host. A virtual machine with a higher setting is allocated more CPU resources than a virtual machine with a lower setting. The range of relative values for each type of host are:
Hyper-V: 1 to 10000
VMware ESX: 2000 = High
1500 = Above Normal
1000 = Normal (default)
750 = Below Normal
500 = Low
1 to 1000000 = Custom
The VMware term for these values is shares.
Citrix XenServer: 1 to 65536, normal is 256
NOTE: See the examples for a specific cmdlet to determine how that cmdlet uses this parameter.
Aliases |
RelativeWeight |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPUReserve<Int32]>
Specifies the minimum percentage of the resources of a single CPU on the host to allocate to a virtual machine. The percentage of CPU capacity that is available to the virtual machine is never less than this percentage.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-CPUType<ProcessorType>
Specifies the type of CPU for a virtual machine. To retrieve a list of all CPU types that are available for use in virtual machines in a VMM environment, type Get-SCCPUType
.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Description<String>
States a description for the specified object.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-DiskIops<Int32]>
Specifies the number of disk input/output operations per second (IOPS) on the host that can be used by a specific virtual machine.
Example format to specify 1500 IOPS: -DiskIops 1500
Aliases |
DiskIO |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-DRProtectionRequired<Boolean>
This parameter is reserved for future use.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-DynamicMemoryBufferPercentage<Int32]>
Specifies the percentage of memory above a virtual machine current memory allocation which the host should try to reserve as a buffer. The default value is 20.
Example format: -DynamicMemoryBufferPercentage 20
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-DynamicMemoryEnabled<Boolean]>
Enables, when set to $True, dynamic memory for virtual machines. You can enable dynamic memory directly on a virtual machine, or on a template or hardware profile that will be used to create virtual machines. The default value is False.
REQUIRED: You can enable dynamic memory for a virtual machine only if that virtual machine is deployed on a host running Windows Server 2008 SP1 or later or if the virtual machine is stored in a library in a stopped state. Hardware changes to a stored virtual machine can only be made if the virtual machine does not have snapshots. Enabling dynamic memory on a virtual machine stored in a library will limit placement of that machine to hosts running Windows Server 2008 SP1 or later.
Example format: -DynamicMemoryEnabled $True
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-DynamicMemoryMaximumMB<Int32]>
Specifies the maximum amount of memory that can be allocated to a virtual machine if dynamic memory is enabled. The default value is 65536.
REQUIRED: You can enable dynamic memory for a virtual machine only if that virtual machine is deployed on a host running Windows Server 2008 R2 SP1 or later or if the virtual machine is stored in a library in a stopped state. Hardware changes to a stored virtual machine can only be made if the virtual machine does not have snapshots. Enabling dynamic memory on a virtual machine stored in a library will limit placement of that machine to hosts running Windows Server 2008 R2 SP1 or later.
Example format: -DynamicMemoryMaximumMB 1024
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-DynamicMemoryMinimumMB<Int32]>
Specifies the minimum amount of memory that can be allocated to a virtual machine if dynamic memory is enabled. The default value is 65536.
REQUIRED: You can enable dynamic memory for a virtual machine only if that virtual machine is deployed on a host running Windows Server 2008 R2 SP1 or later or if the virtual machine is stored in a library in a stopped state. Hardware changes to a stored virtual machine can only be made if the virtual machine does not have snapshots. Enabling dynamic memory on a virtual machine stored in a library will limit placement of that machine to hosts running Windows Server 2008 R2 SP1 or later.
Example format: -DynamicMemoryMinimumMB 1024
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-FirstBootDevice<String>
Indicates the device on which a boot is first attempted.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Generation<Int32>
Indicates the generation of virtual machine that is created.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-HardwareProfile<HardwareProfile>
Specifies a hardware profile object.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
True (ByValue) |
Accept Wildcard Characters? |
false |
-HAVMPriority<UInt32]>
Specifies the virtual machine priority. Virtual machines are started in priority order up to the limits of a host cluster node. Valid input for this parameter is a numerical representation of the priority:
3000 = High
2000 = Medium
1000 = Low
0 - Virtual machine does not restart automatically.
Example format: -HAVMPriority 2000
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-HighlyAvailable<Boolean>
Indicates whether a virtual machine will be placed on a Hyper-V host that is part of a host cluster. Configure this setting on a virtual machine, or on a template or hardware profile that you use to create virtual machines.
Aliases |
none |
Required? |
false |
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 |
-MemoryMB<Int32]>
Specifies, in megabytes (MB), the amount of random access memory (RAM) on the host that is allocated to a virtual machine. The default value is 512 MB. For a virtual machine on which dynamic memory is enabled on a host running Windows Server 2008 R2 SP1 or later, use MemoryMB to specify the startup memory value. The maximum host memory assignable to a virtual machine is:
-- Hyper-V: Up to 65536 MB RAM per virtual machine.
-- VMware ESX Server 3.0.x: Up to 16384 MB RAM per virtual machine.
-- VMware ESX Server 3.5.x: Up to 65532 MB RAM per virtual machine.
-- Citrix XenServer: Up to 32265 MB RAM per virtual machine.
Example format: -MemoryMB 1024
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-MemoryPerVirtualNumaNodeMaximumMB<Int32]>
Specifies the maximum amount of memory, in MB, that each virtual NUMA node is allowed.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-MemoryWeight<Int32]>
Indicates the priority in allocating memory to a virtual machine, relative to other virtual machines on the same host. A virtual machine with a higher setting is allocated more memory resources than a virtual machine with a lower setting. For a host running Windows Server 2008 R2 SP1 or later:
5000 = Normal
10000 = High
0 = Low
1 to 10000 = Custom
NOTE: See the examples for a specific cmdlet to determine how that cmdlet uses this parameter.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-MonitorMaximumCount<Int32]>
Specifies the maximum number of monitors supported by a virtual video adapter.
Example format: -MonitorMaximumCount 3
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-MonitorMaximumResolution<String>
Specifies, as a string, the value that represents the maximum possible monitor resolution of a virtual video adapter. Valid values are:
-- 1024x768
-- 1280x1024
-- 1600x1200
-- 1920x1200
The default value is 1280x1024.
Example format: -MonitorMaximumResolution "1600x1200"
Aliases |
MonitorResolutionMaximum |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Name<String>
Specifies the name of a VMM object.
Aliases |
none |
Required? |
true |
Position? |
1 |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-NetworkUtilizationMbps<Int32]>
Specifies, in megabits per second (Mbps), the amount of bandwidth on the host's network that can be used by a specific virtual machine.
Example format: -NetworkUtilizationMbps 10
Aliases |
NetworkUtilization |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-NumaIsolationRequired<Boolean]>
Indicates whether NUMA isolation is required.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-NumLock<Boolean>
Indicates whether to enable the BIOS value for NumLock on a virtual machine or on a template or hardware profile that is used to create virtual machines on a Hyper-V host. This parameter does not apply to virtual machines on VMware ESX hosts, or on Citrix XenServer hosts.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Owner<String>
Specifies the owner of a VMM object in the form of a valid domain user account.
Example format: -Owner "Contoso\ReneeLo"
Example format: -Owner "ReneeLo@Contoso"
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-ProtectionProvider<Nullable [Microsoft.VirtualManager.Utils.ProtectionProvider]>
Example format: -BootOrder PXEBoot,IDEHardDrive,CD,Floppy
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 |
-RecoveryPointObjective<Int32]>
Specifies the maximum period for which it is tolerable to lose data from an IT service due to a major incident.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-ReplicationGroup<Microsoft.SystemCenter.VirtualMachineManager.ReplicationGroup>
Example format: -BootOrder PXEBoot,IDEHardDrive,CD,Floppy
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 |
-SecureBootEnabled<Boolean]>
Indicates whether secure booting is enabled.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-UserRole<UserRole>
Specifies a user role object.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-VirtualNumaNodesPerSocketMaximum<Byte]>
Specifies the maximum number of NUMA nodes allowed for each socket.
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-VirtualVideoAdapterEnabled<Boolean]>
Indicates whether to enable, when set to $True, the Microsoft Synthetic 3D Virtual Video Adapter for virtual machines. You can enable the Virtual Video Adapter directly on a virtual machine, or on a template or hardware profile that will be used to create virtual machines.
REQUIRED: You can enable the Microsoft Synthetic 3D Virtual Video Adapter for a virtual machine only if that virtual machine is deployed on a host running Windows Server 2008 R2 SP1 (with the Remote Desktop Services role and Remote Desktop Virtual Graphics role service installed) or later or if the virtual machine is stored in a library in a stopped state (hardware changes to a stored virtual machine can only be made if the virtual machine does not have snapshots). Enabling the Microsoft Synthetic 3D Virtual Video Adapter on a virtual machine stored in a library will limit placement of that machine to hosts running Windows Server 2008 R2 SP1 (with the Remote Desktop Services role and Remote Desktop Virtual Graphics role service installed) or later.
Example format: -VirtualVideoAdapterEnabled $True
Aliases |
none |
Required? |
false |
Position? |
named |
Default Value |
none |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-VMMServer<ServerConnection>
Specifies a VMM server object.
Aliases |
none |
Required? |
false |
Position? |
named |
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.
- HardwareProfile
Examples
Example 1: Create a default hardware profile
This command creates a default hardware profile named NewHWProfile01.
PS C:\> New-SCHardwareProfile -Name "NewHWProfile01"
Example Example 2: Create a hardware profile that sets boot order, CPU, and memory.
This command creates a new hardware profile, names it NewHWProfile02, sets PXEBoot as the first entry in the BIOS boot order, specifies 1024 MB of memory, and specifies that a virtual machine created by using this hardware profile will have four processors.
PS C:\> New-SCHardwareProfile -Name "NewHWProfile02" -BootOrder PXEBoot,CD,Floppy,IDEHardDrive -MemoryMB 1024 -CPUCount 4
Example Example 3: Clone and then modify an existing hardware profile.
The first command gets the hardware profile object named NewHWProfile01, and then stores the object in the $HWProfile variable.
The second command creates a hardware profile named NewHWProfile03 based on NewHWProfile01, but modifies the value for relative weight. All other settings in NewHWProfile03 are identical to those in NewHWProfile01.
PS C:\> $HWProfile = Get-SCHardwareProfile | where { $_.Name -eq "NewHWProfile01" }
PS C:\> New-SCHardwareProfile -Name "NewHWProfile03" -HardwareProfile $HWProfile -RelativeWeight 100
Example 4: Create a hardware profile that contains a network adapter, a SCSI adapter, and a DVD drive
The first command generates a globally unique identifier (GUID), and then stores the GUID string in the $JobGroupID variable. The job group ID functions as an identifier that groups subsequent commands that include this identifier into a single job group.
The second command creates a virtual network adapter but uses the JobGroup parameter to specify that the network adapter is not created until just before the New-SCHardwareProfile cmdlet in the last command runs. This command sets the physical (MAC) address type to dynamic and specifies that the new virtual network adapter will connect to a virtual network named Internal Network.
The third command creates a virtual SCSI adapter but uses the JobGroup parameter to specify that the SCSI adapter is not created until just before the New-SCHardwareProfile cmdlet in the last command runs. This command sets the adapter ID to 6, and it sets the Shared parameter to $False so that the adapter will not be shared, as it would have to be if you want to use the adapter in guest clustering.
The fourth command creates a virtual DVD drive but uses the JobGroup parameter to specify that the DVD drive is not created until just before the New-SCHardwareProfile cmdlet in the last command runs. Specifying Bus 1 and LUN 0 attaches the virtual DVD drive to Secondary Channel (0) on the IDE bus.
The last command creates a hardware profile named NewHWProfile04, sets the owner to Contoso\Katarina, specifies a description, and specifies that the amount of memory on the host that a virtual machine created by using this hardware profile uses 512 MB. Before the New-SCHardwareProfile cmdlet creates the hardware profile, the JobGroup parameter in this final command runs all of the preceding cmdlets that specify the same JobGroup GUID. When New-SCVirtualNetworkAdapter, New-SCVirtualSCSIAdapter, and New-SCVirtualDVDDrive run, the resulting objects that are created are automatically associated with the new hardware profile.
PS C:\> $JobGroupId = [Guid]::NewGuid().ToString()
PS C:\> New-SCVirtualNetworkAdapter -JobGroup $JobGroupID -PhysicalAddressType Dynamic -VirtualNetwork "Internal Network"
PS C:\> New-SCVirtualSCSIAdapter -JobGroup $JobGroupID -AdapterID 6 -Shared $False
PS C:\> New-SCVirtualDVDDrive -JobGroup $JobGroupID -Bus 1 -LUN 0
PS C:\> New-SCHardwareProfile -Name "NewHWProfile04" -Owner "Contoso\Katarina" -Description "Temporary Hardware Config used to create a VM/Template" -MemoryMB 512 -JobGroup $JobGroupID
Example 5: Create a hardware profile and add it to a new virtual machine template
The first command creates a new hardware profile, names it NewHWProfile05, specifies that it contains four processors, specifies that the highest percentage of the total resources of a single CPU on a host that can be used by a virtual machine is 100 percent, assigns 64 GB of RAM and an owner, specifies a value of $True for the HighlyAvailable parameter, and then stores the new hardware profile object in the $HWProfile variable. The HighlyAvailable parameter specifies that a virtual machine created by using this hardware profile, either directly or through a template, is placed on a host that is a node of a host cluster.
The second command gets the virtual hard disk object named VHD01 from the library, and then stores the object in the $VHD variable.
The third command gets an operating system object by name, and then stores the object in the $OS variable.
The last command creates a new virtual machine template, names it LargeVMTemplate, and specifies that it use the operating system, hardware profile, and virtual hard disk retrieved or created in the preceding commands, without any customization to the operating system.
PS C:\> $HWProfile = New-SCHardwareProfile -Name "NewHWProfile05" -CPUCount 4 -MemoryMB 64000 -CPUMax 100 -Owner "Contoso\Katarina" -HighlyAvailable $True
PS C:\> $VHD = Get-SCVirtualHardDisk | where { $_.Name -eq "VHD01.vhd" -and $_.LibraryServer.Name -eq "LibServer01.Contoso.com" }
PS C:\> $OS = Get-SCOperatingSystem | where {$_.Name -eq "64-bit edition of Windows Server 2008 R2 Datacenter"}
PS C:\> New-SCVMTemplate -Name "LargeVMTemplate" -HardwareProfile $HWProfile -OperatingSystem $OS -VirtualHardDisk $VHD -NoCustomization