Set-VMFirmware
Sets the firmware configuration of a virtual machine.
Syntax
VMName (Default)
Set-VMFirmware
    [-VMName] <String[]>
    [-CimSession <CimSession[]>]
    [-ComputerName <String[]>]
    [-Credential <PSCredential[]>]
    [-BootOrder <VMComponentObject[]>]
    [-FirstBootDevice <VMComponentObject>]
    [-EnableSecureBoot <OnOffState>]
    [-SecureBootTemplate <String>]
    [-SecureBootTemplateId <Guid>]
    [-PreferredNetworkBootProtocol <IPProtocolPreference>]
    [-ConsoleMode <ConsoleModeType>]
    [-PauseAfterBootFailure <OnOffState>]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
VMObject
Set-VMFirmware
    [-VM] <VirtualMachine[]>
    [-BootOrder <VMComponentObject[]>]
    [-FirstBootDevice <VMComponentObject>]
    [-EnableSecureBoot <OnOffState>]
    [-SecureBootTemplate <String>]
    [-SecureBootTemplateId <Guid>]
    [-PreferredNetworkBootProtocol <IPProtocolPreference>]
    [-ConsoleMode <ConsoleModeType>]
    [-PauseAfterBootFailure <OnOffState>]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
VMFirmware
Set-VMFirmware
    [-VMFirmware] <VMFirmware[]>
    [-BootOrder <VMComponentObject[]>]
    [-FirstBootDevice <VMComponentObject>]
    [-EnableSecureBoot <OnOffState>]
    [-SecureBootTemplate <String>]
    [-SecureBootTemplateId <Guid>]
    [-PreferredNetworkBootProtocol <IPProtocolPreference>]
    [-ConsoleMode <ConsoleModeType>]
    [-PauseAfterBootFailure <OnOffState>]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Description
The Set-VMFirmware cmdlet sets the firmware configuration of a Generation 2 virtual machine.
Examples
Example 1
PS C:\> Set-VMFirmware "Test VM" -EnableSecureBoot On
This example enables secure boot functionality on the virtual machine "Test VM".
Example 2
PS C:\> Set-VMFirmware "Test VM" -FirstBootDevice $vmNetworkAdapter
This example sets the virtual machine "Test VM" to boot off of the VM network adapter object stored in $vmNetworkAdapter. This object was acquired using get-VMNetworkAdapter.
Example 3
PS C:\> Set-VMFirmware "Test VM" -BootOrder $vmNetworkAdapter, $vmHardDiskDrive
Sets the boot order for the virtual machine "Test VM". $vmNetworkAdapter contains a VM Network Adapter object (acquired using get-VMNetworkAdapter) and $vmHardDiskDrive contains a VM hard disk object (acquired using get-VMHardDiskDrive). Any existing boot entries not specified by this command will be removed from the virtual machine.
Parameters
-BootOrder 
		Specifies an array of devices. The boot order determines the order of the devices from which to boot. The acceptable values for this parameter are:
-- VMBootSource
-- VMNetworkAdapter
-- HardDiskDrive
-- DVDDrive
The VMBootSource value describes a boot entry in firmware nonvolatile Random Access Memory (NVRAM).
Parameter properties
| Type: | VMComponentObject[] | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-CimSession 
		Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.
Parameter properties
| Type: | CimSession[] | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
VMName
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-ComputerName 
		Specifies the names of the Hyper-V hosts whose firmware configuration you want to modify.
Parameter properties
| Type: | String[] | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
VMName
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-Confirm
Prompts you for confirmation before running the cmdlet.
Parameter properties
| Type: | SwitchParameter | 
| Default value: | False | 
| Supports wildcards: | False | 
| DontShow: | False | 
| Aliases: | cf | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-ConsoleMode 
		Specifies the console mode type for the virtual machine. This parameter allows a virtual machine to run without graphical user interface.
Parameter properties
| Type: | ConsoleModeType | 
| Default value: | None | 
| Accepted values: | Default, COM1, COM2, None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-Credential
Specifies one or more user accounts that have permission to perform this action. The default is the current user.
Parameter properties
| Type: | PSCredential[] | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
VMName
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-EnableSecureBoot  
		Specifies whether to enable secure boot. The acceptable values for this parameter are:
-- On
-- Off
Secure boot uses a public key infrastructure that protects the integrity of the operating system.
Parameter properties
| Type: | OnOffState | 
| Default value: | None | 
| Accepted values: | On, Off | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-FirstBootDevice  
		Specifies the device from which to attempt to boot from first. The acceptable values for this parameter are:
-- VMBootSource
-- VMNetworkAdapter
-- HardDiskDrive
-- DVDDrive
The VMBootSource value describes a boot entry in firmware NVRAM.
Parameter properties
| Type: | VMComponentObject | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-Passthru
Returns an object representing the item with which you are working. By default, this cmdlet does not generate any output.
Parameter properties
| Type: | SwitchParameter | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-PauseAfterBootFailure   
		Specifies the behavior of the virtual machine after a start failure. For a value of On, if the virtual machine fails to start correctly from a device, the virtual machine is paused.
Parameter properties
| Type: | OnOffState | 
| Default value: | None | 
| Accepted values: | On, Off | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-PreferredNetworkBootProtocol   
		Specifies the IP protocol version to use during a network boot.
Parameter properties
| Type: | IPProtocolPreference | 
| Default value: | None | 
| Accepted values: | IPv4, IPv6 | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-SecureBootTemplate  
		Specifies the name of the secure boot template. If secure boot is enabled, you must have a valid secure boot template for the guest operating system to start.
Parameter properties
| Type: | String | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-SecureBootTemplateId   
		Specifies the ID of the secure boot template.
Parameter properties
| Type: | Guid | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-VM
Specifies the virtual machine objects for which want to modify the firmware configuration. To obtain a virtual machine object, use the Get-VM cmdlet.
Parameter properties
| Type: | VirtualMachine[] | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
VMObject
| Position: | 0 | 
| Mandatory: | True | 
| Value from pipeline: | True | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-VMFirmware
Specifies an array of virtual machine firmware configurations. The cmdlet sets the firmware configurations you specify.
Parameter properties
| Type: | VMFirmware[] | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
VMFirmware
| Position: | 0 | 
| Mandatory: | True | 
| Value from pipeline: | True | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-VMName
Specifies an array of names of virtual machines for which you want to modify the firmware configuration.
Parameter properties
| Type: | String[] | 
| Default value: | None | 
| Supports wildcards: | False | 
| DontShow: | False | 
Parameter sets
VMName
| Position: | 0 | 
| Mandatory: | True | 
| Value from pipeline: | True | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
-WhatIf 
		Shows what would happen if the cmdlet runs. The cmdlet is not run.
Parameter properties
| Type: | SwitchParameter | 
| Default value: | False | 
| Supports wildcards: | False | 
| DontShow: | False | 
| Aliases: | wi | 
Parameter sets
(All)
| Position: | Named | 
| Mandatory: | False | 
| Value from pipeline: | False | 
| Value from pipeline by property name: | False | 
| Value from remaining arguments: | False | 
CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.
Outputs
Microsoft.HyperV.Powershell.VMFirmware
Notes
- Note: This cmdlet is supported only when run against Generation 2 virtual machines.