Installing Windows Updates with PowerShell

PowerShell for Windows Updates PSWindowsUpdate module Automating Scripting

In today’s digital landscape, keeping your Windows operating system up-to-date is crucial for maintaining optimal performance, security, and stability. While the traditional method of installing updates through the Windows Update settings is straightforward, there are times when you might need a more automated or customized approach. This is where PowerShell, Microsoft’s powerful command-line tool, comes into play. In this comprehensive guide, we’ll explore how to leverage PowerShell to efficiently manage and install Windows updates.

Why Use PowerShell for Windows Updates?

PowerShell offers several advantages when it comes to managing Windows updates:

  1. Automation: PowerShell allows you to create scripts that can automate the update process, making it easier to manage multiple systems or schedule updates at specific times.
  2. Customization: With PowerShell, you can fine-tune the update process to suit your specific needs, such as installing only specific updates or excluding certain categories.
  3. Remote Management: PowerShell’s remoting capabilities enable you to manage updates on remote machines, making it an ideal solution for system administrators and IT professionals.
  4. Scripting: PowerShell scripts can be easily shared and modified, facilitating collaboration and standardization within organizations.

Before You Begin: Setting Up the PSWindowsUpdate Module

To effectively manage Windows updates with PowerShell, you’ll need to install a third-party module called PSWindowsUpdate. This module, created by Michal Gajda, provides a comprehensive set of cmdlets (PowerShell commands) specifically designed for Windows Update management.

Here’s how to install the PSWindowsUpdate module:

  1. Open PowerShell as an administrator by right-clicking the PowerShell icon and selecting “Run as administrator.”
  2. In the PowerShell window, run the following command to install the PSWindowsUpdate module from the PowerShell Gallery:
PS C:\> Install-Module PSWindowsUpdate
  1. When prompted, type A and press Enter to confirm the installation.

Once the installation is complete, you’re ready to start using the module’s cmdlets to manage Windows updates.

Checking for Available Updates

Before installing any updates, it’s a good practice to check which updates are available for your system. You can do this using the Get-WindowsUpdate cmdlet:

PS C:\> Get-WindowsUpdate

This command will display a list of all available updates, including their titles, KB article IDs, and other relevant information.

Installing All Available Updates

To install all available updates, you can use the Install-WindowsUpdate cmdlet:

PS C:\> Install-WindowsUpdate

PowerShell will prompt you to confirm the installation. Type A and press Enter to proceed.

This command will download and install all applicable updates, including cumulative updates, security patches, and other important fixes.

Automating Updates with a Single Command

If you prefer a more automated approach, you can use the Get-WindowsUpdate cmdlet with additional parameters to download, install, and reboot the system in a single command:

PS C:\> Get-WindowsUpdate -AcceptAll -Install -AutoReboot

This command will download and install all available updates without prompting for confirmation, and automatically reboot the system upon completion. Use this command with caution, as it may disrupt any active processes or applications running on your system.

Installing Specific Updates

In some cases, you might want to install a specific update rather than all available updates. This can be useful when addressing a known issue or applying a critical security patch. To install a specific update, you’ll need to know its KB article ID. You can obtain this information by running the Get-WindowsUpdate cmdlet and examining the output.

Once you have the KB article ID, use the following command to install the specific update:

PS C:\> Get-WindowsUpdate -Install -KBArticleID 'KB5031445'

Replace 'KB5031445' with the actual KB article ID of the update you want to install.

Advanced Options and Customization

The PSWindowsUpdate module offers numerous additional options and parameters to customize the update process. Here are some examples:

  1. Excluding Updates: You can exclude specific updates from being installed by using the -ExcludeKBArticleID parameter:
PS C:\> Install-WindowsUpdate -ExcludeKBArticleID 'KB5031445'

This will install all available updates except for the one with the specified KB article ID.

  1. Filtering Updates: You can filter updates based on various criteria, such as update type, category, or installation status, using the -Type-Category, or -Status parameters:
PS C:\> Get-WindowsUpdate -Type Software, Driver

This command will list only software and driver updates.

  1. Scheduling Updates: PowerShell allows you to schedule updates to be installed at a specific time or on a recurring basis using the Register-ScheduledJob cmdlet in conjunction with the PSWindowsUpdate commands.
  2. Logging: You can enable logging for the update process by using the -LogPath parameter, which can be useful for troubleshooting or auditing purposes.
  3. Dry Run: If you want to preview the updates that would be installed without actually installing them, you can use the -WhatIf parameter:
PS C:\> Install-WindowsUpdate -WhatIf

This command will simulate the installation process and provide a list of updates that would be installed, without making any actual changes to the system.

Creating Scripts and Automating Updates

One of the most powerful features of PowerShell is the ability to create scripts that can automate various tasks, including the installation of Windows updates. By creating a script, you can streamline the update process and ensure consistency across multiple systems.

Here’s an example of a basic PowerShell script that installs all available updates and reboots the system:

# Import the PSWindowsUpdate module
Import-Module PSWindowsUpdate
# Install all available updates and reboot the system
Get-WindowsUpdate -AcceptAll -Install -AutoReboot

You can save this script as a .ps1 file and run it whenever you need to install updates. Additionally, you can schedule this script to run automatically at specific intervals using the Windows Task Scheduler or other scheduling tools.

Best Practices and Considerations

While PowerShell provides a powerful and flexible way to manage Windows updates, it’s essential to follow best practices and consider potential implications:

  1. Testing: Before deploying updates on production systems, it’s recommended to test them thoroughly in a controlled environment to ensure compatibility and identify any potential issues.
  2. Backups: Always create backups of your important data and system configurations before installing updates, as unexpected issues or conflicts could potentially occur.
  3. Change Management: Implement proper change management processes, especially in enterprise environments, to track and document update installations and their impacts.
  4. Security: Exercise caution when running PowerShell scripts, especially those obtained from untrusted sources, as they can potentially execute malicious code on your system.
  5. Compatibility: Ensure that the updates you install are compatible with your system’s hardware, software, and configurations to avoid conflicts or compatibility issues.
  6. Monitoring: Monitor the update process closely and be prepared to address any issues that may arise, such as failed installations or system instability.
  7. Documentation: Document your PowerShell scripts, processes, and procedures to ensure consistency and enable knowledge transfer among team members.


Utilizing PowerShell to manage Windows updates offers a powerful and flexible approach for system administrators, IT professionals, and power users alike. By leveraging the PSWindowsUpdate module and its comprehensive set of cmdlets, you can streamline the update process, automate installations, and tailor the update experience to your specific needs.

Whether you’re managing a single system or overseeing a large enterprise environment, PowerShell provides the tools necessary to ensure that your Windows systems remain up-to-date, secure, and performing optimally. With the knowledge and best practices outlined in this guide, you can confidently embrace PowerShell as a valuable asset in your Windows update management toolkit.