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.
Related Links
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for