Get-HotFix

Gets the hotfixes that are installed on local or remote computers.

Syntax

Get-HotFix
   [[-Id] <String[]>]
   [-ComputerName <String[]>]
   [-Credential <PSCredential>]
   [<CommonParameters>]
Get-HotFix
   [-Description <String[]>]
   [-ComputerName <String[]>]
   [-Credential <PSCredential>]
   [<CommonParameters>]

Description

This cmdlet is only available on the Windows platform.

The Get-Hotfix cmdlet uses the Win32_QuickFixEngineering WMI class to list hotfixes that are installed on the local computer or specified remote computers.

Examples

Example 1: Get all hotfixes on the local computer

The Get-Hotfix cmdlet gets all hotfixes installed on the local computer.

Get-HotFix

Source         Description      HotFixID      InstalledBy          InstalledOn
------         -----------      --------      -----------          -----------
Server01       Update           KB4495590     NT AUTHORITY\SYSTEM  5/16/2019 00:00:00
Server01       Security Update  KB4470788     NT AUTHORITY\SYSTEM  1/22/2019 00:00:00
Server01       Update           KB4480056     NT AUTHORITY\SYSTEM  1/24/2019 00:00:00

Example 2: Get hotfixes from multiple computers filtered by a string

The Get-Hotfix command uses parameters to get hotfixes installed on remote computers. The results are filtered by a specified description string.

Get-HotFix -Description Security* -ComputerName Server01, Server02 -Credential Domain01\admin01

Get-Hotfix filters the output with the Description parameter and the string Security that includes the asterisk (*) wildcard. The ComputerName parameter includes a comma-separated string of remote computer names. The Credential parameter specifies a user account that has permission to access the remote computers and run commands.

Example 3: Verify if an update is installed and write computer names to a file

The commands in this example verify whether a particular update installed. If the update isn't installed, the computer name is written to a text file.

$A = Get-Content -Path ./Servers.txt
$A | ForEach-Object { if (!(Get-HotFix -Id KB957095 -ComputerName $_))
    { Add-Content $_ -Path ./Missing-KB957095.txt }}

The $A variable contains computer names that were obtained by Get-Content from a text file. The objects in $A are sent down the pipeline to ForEach-Object. An if statement uses the Get-Hotfix cmdlet with the Id parameter and a specific Id number for each computer name. If a computer doesn't have the specified hotfix Id installed, the Add-Content cmdlet writes the computer name to a file.

Example 4: Get the most recent hotfix on the local computer

This example gets the most recent hotfix installed on a computer.

(Get-HotFix | Sort-Object -Property InstalledOn)[-1]

Get-Hotfix sends the objects down the pipeline to the Sort-Object cmdlet. Sort-Object sorts objects by ascending order and uses the Property parameter to evaluate each InstalledOn date. The array notation [-1] selects the most recent installed hotfix.

Parameters

-ComputerName

Specifies a remote computer. Type the NetBIOS name, an Internet Protocol (IP) address, or a fully qualified domain name (FQDN) of a remote computer.

When the ComputerName parameter isn't specified, Get-Hotfix runs on the local computer.

The ComputerName parameter doesn't rely on Windows PowerShell remoting. If your computer isn't configured to run remote commands, use the ComputerName parameter.

Type:String[]
Aliases:CN, __Server, IPAddress
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Credential

Specifies a user account that has permission to access the computer and run commands. The default is the current user

Type a user name, such as User01 or Domain01\User01, or enter a PSCredential object generated by the Get-Credential cmdlet. If you type a user name, you're prompted to enter the password.

Credentials are stored in a PSCredential object and the password is stored as a SecureString.

Note

For more information about SecureString data protection, see How secure is SecureString?.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

Get-HotFix uses the Description parameter to specify hotfix types. Wildcards are permitted.

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

-Id

Filters the Get-HotFix results for specific hotfix Ids. Wildcards aren't accepted.

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

Inputs

String

You can pipe a string containing a computer name to this cmdlet.

Outputs

ManagementObject

This cmdlet returns objects representing the hotfixes on the computer.

Notes

This cmdlet is only available on Windows platforms.

The Win32_QuickFixEngineering WMI class represents a small system-wide update, commonly referred to as a quick-fix engineering (QFE) update, applied to the current operating system. This class returns only the updates supplied by Component Based Servicing (CBS). These updates aren't listed in the registry. Updates supplied by Microsoft Windows Installer (MSI) or the Windows Update site aren't returned by Win32_QuickFixEngineering. For more information, see Win32_QuickFixEngineering class.

The Get-HotFix output might vary on different operating systems.