Set-VMFirmware

Sets the firmware configuration of a virtual machine.

Syntax

Set-VMFirmware
   [-BootOrder <VMComponentObject[]>]
   [-FirstBootDevice <VMComponentObject>]
   [-EnableSecureBoot <OnOffState>]
   [-PreferredNetworkBootProtocol <IPProtocolPreference>]
   [-Passthru]
   [-ComputerName <String[]>]
   [-VMName] <String[]>
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-VMFirmware
   [-VMFirmware] <VMFirmware[]>
   [-BootOrder <VMComponentObject[]>]
   [-FirstBootDevice <VMComponentObject>]
   [-EnableSecureBoot <OnOffState>]
   [-PreferredNetworkBootProtocol <IPProtocolPreference>]
   [-Passthru]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-VMFirmware
   [-BootOrder <VMComponentObject[]>]
   [-FirstBootDevice <VMComponentObject>]
   [-EnableSecureBoot <OnOffState>]
   [-PreferredNetworkBootProtocol <IPProtocolPreference>]
   [-Passthru]
   [-VM] <VirtualMachine[]>
   [-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).

Type:VMComponentObject[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Specifies the names of the Hyper-V hosts whose firmware configuration you want to modify.

Type:String[]
Position:Named
Default value:.
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Prompts you for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:OnOffState
Accepted values:On, Off
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:VMComponentObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Passthru

Returns an object representing the item with which you are working. By default, this cmdlet does not generate any output.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PreferredNetworkBootProtocol

Specifies the IP protocol version to use during a network boot.

Type:IPProtocolPreference
Accepted values:IPv4, IPv6
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:VirtualMachine[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMFirmware

Specifies an array of virtual machine firmware configurations. The cmdlet sets the firmware configurations you specify.

Type:VMFirmware[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMName

Specifies an array of names of virtual machines for which you want to modify the firmware configuration.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Outputs

Microsoft.HyperV.Powershell.VMFirmware

Notes

  • Note: This cmdlet is supported only when run against Generation 2 virtual machines.