How to list all Windows updates easily

There are several ways to list all Windows updates using PowerShell. I will share 3 of them in this post.

Microsoft releases Windows updates on the second Tuesday of each month. It is called Patch Tuesday. Users likely to install and start using these updates on following Wednesday.

If you want to see which updates were installed in the past, you can go to “Control Panel > Programs and Features > Installed Updates“. This is a quick way to list all Windows updates but this list is not easy to copy or edit. Use the commands below to get a text-based list of the updates.

List all Windows updates
Windows updates in Programs and Features window

List all Windows updates

The easiest way to retrieve this list is that using WMI (Windows Management Instrumentation):

  1. Go to “Start” and search for “PowerShell
  2. Run the command below

Get-WmiObject -Class "win32_quickfixengineering"

List all Windows updates
Windows updates in PowerShell

Source of the command above is here.

In some cases, you may need to export this list to an Excel file. Extend the command above as the one below. It will export the list to an Excel file and save it to your desktop.

Get-WmiObject -Class "win32_quickfixengineering" | Export-Csv -NoType "$Env:userprofile\Desktop\Updates.csv"

Looking for support dates for Microsoft updates? Check this out.


Here are 2 alternatives to list all Windows updates in your machine. They basically give the same results in different formats (They may require PowerShell to be opened as Administrator).

Alternative 1:

wmic qfe

Alternative 2:

Get-Hotfix | Select PSComputerName, InstalledOn, Description, HotFixID, InstalledBy


The script below gives a detailed list of the updates. It shows failed ones and Windows Defender security updates too. However, I wasn’t able to see some of the updates listed with the commands above in this list. Still, it gives an idea of scripting for this purpose.

$Session = New-Object -ComObject "Microsoft.Update.Session"
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$Searcher.QueryHistory(0, $historyCount) | Select-Object Date,@{name="Operation"; expression={switch($_.operation){1 {"Installation"}; 2 {"Uninstallation"}; 3 {"Other"}}}}, @{name="Status"; expression={switch($_.resultcode){1 {"In Progress"}; 2 {"Succeeded"}; 3 {"Succeeded With Errors"};4 {"Failed"}; 5 {"Aborted"} }}}, Title, Description | Export-Csv -NoType "$Env:userprofile\Desktop\Windows Updates.csv"

The command above is courtesy of My IT Notes.

There was a problem starting C:\\Windows\System32\LogiLDA.dll (Solved)

If you are using some Logitech accessories, you may come across this issue after you restart your computer: “There was a problem starting C:\Windows\System32\LogiLDA.dll“.

LogiLDA” in the error message stands for Logitech Download Assistant. In short, the issue is probably caused by a configuration or installation error of Logitech drivers or assistant software. Here is the full error message:

There was a problem starting C:\Windows\System32\LogiLDA.dll
The specified module could not be found.

Solve There was a problem starting  C:\Windows\System32\LogiLDA.dll error

Looking for a way to see your Windows version? Check this post out.

Solution for “There was a problem starting
C:\Windows\System32\LogiLDA.dll” error

The fastest and easiest solution to stop this error message popping up after restarts is that disabling Logitech Download Assistant in the “Startup” list of Windows. Follow the steps below to disable it.

  1. Open Task Manager (Right click on taskbar and click Task Manager OR search for Task Manager in Start)
  2. Go to “Startup” tab
  3. Right click on “Logitech Download Assistant“. After that, select “Disable
Disable Logitech Download Assistant to solve There was a problem starting  C:\Windows\System32\LogiLDA.dll
Disable Logitech Download Assistant to solve LogiLDA.dll error

Permanently uninstall Logitech Download Assistant

Disabling Logitech Download Assistant in Task Manager is kind of a hack to get around the underlying issue. The underlying issue is a corrupt software installation. Similarly, missing software may cause this issue too.

The permanent solution is that uninstalling Logitech Download Assistant completely. However, uninstalling it is not easy because this software doesn’t appear in Add or Remove Programs list. Therefore, you need to use an uninstaller (A desktop application that scans directories and registry and find/remove the selected software).

There are many free or paid uninstallers around.  A suggestion would be Ashampoo UnInstaller. Please use it at your own risk as uninstallers frequently remove registry keys in order to uninstall applications completely.

Make sure to take a back up of your Registry before using them. Additionally, you may want to create a restore point in your Windows first.

How to redirect HTTP requests to HTTPS by using IIS URL Rewrite

One way to ensure that your visitors access to your website via secure connection is to redirect HTTP requests to HTTPS by using IIS URL Rewrite module. You will find step-by-step instructions to configure IIS in this post.

Note that you may need to spend some extra effort on configuration if you have a load balancer that hosts SSL certificates (SSL offloading). Please check the last section (“If your web server is behind a Load Balancer…”) at the end of this post for more information.

Looking for an alternative way to redirect HTTP requests to HTTPS? Check this post out.

Redirect HTTP requests to HTTPS by using IIS URL Rewrite

Follow the steps below to redirect all HTTP requests to your HTTPS URL.

  • Download and install URL Rewrite module
  • Make sure that your website is accessible via HTTP (Check Site Binding to make sure there is a binding for port 80)
Redirect HTTP requests to HTTPS by using IIS URL Rewrite
IIS site binding for HTTP requests
  • In server, site or application level, go to URL Rewrite feature
  • Click “Add Rule(s)” in the “Actions” pane
  • Select “Blank rule“. Click “OK
Create a rule to redirect HTTP requests to HTTPS by using IIS URL Rewrite
Create a new URL Rewrite rule
  • Select “Matches the Pattern” from “Requested URL” menu
  • Select “Wildcards” from “Using” menu
  • Enter * into “Pattern” field
  • Add a new condition with input {HTTPS}, type “Matches the Pattern“, pattern off. This condition will make sure to prevent indefinite loop from HTTPS to HTTPS. The condition will make sure the rule is executed if the request is not HTTPS
Inbound rule to redirect HTTP requests to HTTPS by using IIS URL Rewrite
Match URL and condition for URL Rewrite rule
  • In the “Action” section, select “Redirect” from “Action type” menu
  • Enter https://{HTTP_HOST}{REQUEST_URI} into “Redirect URL” field. Click here for more information about server variables and URL parts
Redirect URL to redirect HTTP requests to HTTPS by using IIS URL Rewrite
Redirection type and URL
  • Click “Apply” in the “Actions” pane
  • Try to access your site/application via HTTP URL and check if it is redirected to HTTPS

Web.config changes

When you add, edit or remove a URL Rewrite URL, corresponding web.config file is automatically updated. Go to application folder and open the web.config file if you want to view the changes.

      <rule name="Redirect Subfolder" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
         <match url="*" ignoreCase="true" />
         <conditions logicalGrouping="MatchAny">
            <add input="{HTTPS}" pattern="off" />
         <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />

Not working? Try these

If the URL Rewrite rule for redirection is not working (HTTP requests continue to go to HTTP site), I would recommend using Failed Request Tracing (FRT) to troubleshoot redirection. Here is a link for instructions to use FRT for URL Rewrite troubleshooting.

Additionally, try the recommendations below to solve the issue:

  • Make sure that “Require SSL” is unchecked in “SSL Settings” 
SSL settings to redirect HTTP requests to HTTPS by using IIS URL Rewrite
Uncheck “Require SSL”
  • Instead of a wildcard, try using a regex in “Match URL” section (Select “Regular Expressions” from “Using” list. Enter (.*) into “Pattern” field). More information
  • Try ^OFF$ pattern for the condition. More information
  • Previous URL Rewrite rule might have cached. Try to use server variable from this list that disable kernel mode caching for all requests. You can also try disabling internal cache of rewritten URLs. Here is a list of registry values for IIS URL Rewrite.

If your web server is behind a Load Balancer…

Many companies leverage load balancers to distrubute workload amond several web servers. If this is the case in your environment, you may need to change the server variable you use in the condition of your URL Rewrite rule. 

In the instructions above, we used {HTTPS} header to check the usage of HTTPS protocol. The load balancer in your network may remove this header from requests. A better practice in this scenario is to use {HTTP_X_FORWARDED_PROTO} header. Click here for more information.

Here is the web.config entry for an example URL Rewrite rule using {HTTP_X_FORWARDED_PROTO} header:

    <rule name="HTTPS Redirect" stopProcessing="true">
      <match url="(.*)" />
        <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" />
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />