<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>WSUS on gal.vin</title>
    <link>https://gal.vin/tags/wsus/</link>
    <description>Recent content in WSUS on gal.vin</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>&amp;copy;{year}, All Rights Reserved</copyright>
    <lastBuildDate>Mon, 20 Mar 2023 17:00:00 +0000</lastBuildDate>
    <sy:updatePeriod>daily</sy:updatePeriod>
    
        <atom:link href="https://gal.vin/tags/wsus/index.xml" rel="self" type="application/rss+xml" />
    

      
      <item>
        <title>Installing and Configuring Windows Server Update Services (WSUS) with Windows Server Core</title>
        <link>https://gal.vin/wsus-windows-server-core-walkthrough/</link>
        <pubDate>Mon, 20 Mar 2023 17:00:00 +0000</pubDate>
        
        <atom:modified>Mon, 20 Mar 2023 17:00:00 +0000</atom:modified>
        <guid>https://gal.vin/wsus-windows-server-core-walkthrough/</guid>
        <description>Windows Server Update Services (WSUS) can use a lot of resources, so why not use Windows Server Core and make the most of the resources you have. In this post I&amp;rsquo;ll go through the initial steps on how to deploy and configure a WSUS server using command line and PowerShell. This guide is also suitable for regular GUI Windows Server installations.
Installing Windows Server Core Boot the server from the Windows Server media and on the &amp;ldquo;Select the Operating System you want to install&amp;rdquo; screen, select the option &amp;ldquo;Windows Server Standard&amp;rdquo; or &amp;ldquo;Datacenter&amp;rdquo; edition.</description>
        <content:encoded>&lt;p&gt;Windows Server Update Services (WSUS) can use a lot of resources, so why not use Windows Server Core and make the most of the resources you have. In this post I&amp;rsquo;ll go through the initial steps on how to deploy and configure a WSUS server using command line and PowerShell. This guide is also suitable for regular GUI Windows Server installations.&lt;/p&gt;
&lt;h2 id=&#34;installing-windows-server-core&#34;&gt;Installing Windows Server Core&lt;/h2&gt;
&lt;p&gt;Boot the server from the Windows Server media and on the &amp;ldquo;Select the Operating System you want to install&amp;rdquo; screen, select the option &amp;ldquo;Windows Server Standard&amp;rdquo; or &amp;ldquo;Datacenter&amp;rdquo; edition. The other options with &amp;ldquo;Desktop Experience&amp;rdquo; in brackets are the options for the other server editions with a GUI also installed.&lt;/p&gt;
&lt;p&gt;Please note: You can no longer add and remove the GUI (Desktop Experience) with Windows Server 2016 as you could with Windows Server 2012 &amp;amp; 2012 R2. This is due to numerous problems with keeping the installation and removal process consistent with updates. With Windows Server 2016, the only way to add or remove the GUI is to re-install and select one of the server editions with the &amp;ldquo;Desktop Experience&amp;rdquo; option.&lt;/p&gt;
&lt;h2 id=&#34;initial-configuration&#34;&gt;Initial Configuration&lt;/h2&gt;
&lt;p&gt;Once the install process has completed, you will be prompted with a command line window, and asked to set the Administrator password.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set the Administrator password.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;sconfig&lt;/code&gt; to get the Server Configuration menu. It&amp;rsquo;s pretty straight forward. In the Server Configuration menu, you can configure all the basics required for the server.&lt;/li&gt;
&lt;li&gt;For the first Domain Controller in the new forest, you&amp;rsquo;ll need to configure at least the Network Settings - IP address, subnet mask, gateway, and DNS.&lt;/li&gt;
&lt;li&gt;You may also want to configure the computer name. Configuring the computer name will require a restart.&lt;/li&gt;
&lt;li&gt;After the restart, log in to the server with the Administrator password you set in step 1.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tip: &amp;ldquo;sconfig&amp;rdquo; is also present in the GUI version of Windows Server, making initial configuration of new servers easier.&lt;/p&gt;
&lt;h2 id=&#34;additional-storage-configuration&#34;&gt;Additional Storage Configuration&lt;/h2&gt;
&lt;p&gt;You may want to configure additional locally attached disks or iSCSI/MPIO storage. Creating new volumes that are locally attached can be done via the &lt;code&gt;diskpart&lt;/code&gt; command line tool. Here&amp;rsquo;s the series of commands to create a new, NTFS formatted volume, with the drive letter of &lt;code&gt;E:\&lt;/code&gt; and the name &amp;ldquo;Data&amp;rdquo;, from a second disk in the server using the &lt;code&gt;diskpart&lt;/code&gt; tool. First, run &lt;code&gt;diskpart&lt;/code&gt; from the command line, then use the following commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;list disk
select disk 1
online disk
attributes disk clear readonly
clean
convert mbr -or gpt
create partition primary
select part 1
active
format fs=ntfs label=Data quick
assign letter E:
list volume
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;iSCSI storage can be configured using the same GUI tools you would use in the GUI version of Windows Server. The MPIO feature must be installed before the tool is available. You can do this via PowerShell:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Install-WindowsFeature&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Multipath-IO&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;When MPIO is installed you can load the MPIO utility using &lt;code&gt;mpiocpl&lt;/code&gt;. For the iSCSI utility you can use &lt;code&gt;iscsicpl&lt;/code&gt;. iSCSI is installed as part of the base Windows Server feature set.&lt;/p&gt;
&lt;h2 id=&#34;install-windows-server-update-services-wsus&#34;&gt;Install Windows Server Update Services (WSUS)&lt;/h2&gt;
&lt;p&gt;The following PowerShell command will install the WSUS feature:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Install-WindowsFeature&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UpdateServices&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-IncludeManagementTools&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Now we need to run some post install tasks. We&amp;rsquo;ll create a directory for the WSUS content on the &lt;code&gt;E:\&lt;/code&gt; drive.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;MD &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;E:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WSUS_Content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To configure WSUS to use the directory we just created and the Windows Internal Database (WID is based on SQL Express), run the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;CD &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Program Files\Update Services\Tools&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;.\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wsusutil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;postinstall&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CONTENT_DIR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;E:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WSUS_Content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Alternatively you might want to use an external SQL server for the WSUS database, if so run the following command instead:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;CD &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Program Files\Update Services\Tools&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;.\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wsusutil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;postinstall&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SQL_INSTANCE_NAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;SQLSERVER\SQLINSTANCE&amp;#34;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CONTENT_DIR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;E:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WSUS_Content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;WSUS is now running and able to be configured further. This is possible with PowerShell, but not as straightforward as the installation above so we&amp;rsquo;ll be using the WSUS MMC on a remote computer or on the server itself if you installed Windows Server with the Desktop Experience.&lt;/p&gt;
&lt;p&gt;To obtain the WSUS MMC on a remote computer we&amp;rsquo;ll need to install the Remote Server Administration tools (RSAT), run the following command in an elevated PowerShell session:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-WindowsCapability&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;RSAT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Online&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Add-WindowsCapability&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Online&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To view WSUS reports you&amp;rsquo;ll also need to download and install the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.microsoft.com/en-gb/download/details.aspx?id=35747&#34;&gt;Microsoft Report Viewer 2012 Runtime redistributable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft System CLR Types for Microsoft SQL Server 2012: &lt;a href=&#34;http://go.microsoft.com/fwlink/?LinkID=239644&amp;amp;clcid=0x409&#34;&gt;x64 version&lt;/a&gt;, &lt;a href=&#34;http://go.microsoft.com/fwlink/?LinkID=239643&amp;amp;clcid=0x409&#34;&gt;x86 version&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In case the links to Microsoft System CLR Types fail in future, here is the main &lt;a href=&#34;https://www.microsoft.com/en-gb/download/details.aspx?id=29065&#34;&gt;download page link&lt;/a&gt;. This page links to components from the Microsoft SQL Server 2012 Feature Pack, you need to go to the Install Instructions section and download the specific component you need.&lt;/p&gt;
&lt;h2 id=&#34;configuring-windows-server-update-services&#34;&gt;Configuring Windows Server Update Services&lt;/h2&gt;
&lt;p&gt;Once you have downloaded and installed all the software listed above on our admin PC, you can continue with the configuration.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the Windows Service Update Services Microsoft Management Console (WSUS MMC).&lt;/li&gt;
&lt;li&gt;You should see a &amp;ldquo;Before You Begin&amp;rdquo; wizard. Click Next.&lt;/li&gt;
&lt;li&gt;Join the Microsoft Update Improvement Program if you wish.&lt;/li&gt;
&lt;li&gt;Choose Upstream server, as this is the first WSUS server we&amp;rsquo;ll choose &amp;ldquo;Synchronize from Microsoft Update&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Specify the Proxy Server settings if needed.&lt;/li&gt;
&lt;li&gt;Click &amp;ldquo;Start Connecting&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Select the applicable languages for our environment.&lt;/li&gt;
&lt;li&gt;Select the applicable Products. I recommend selecting all products as we&amp;rsquo;ll only be downloading updates that we actually need.&lt;/li&gt;
&lt;li&gt;Select the Classifications. I recommend selecting all except Drivers and Driver Sets. Drivers in WSUS increase the size of the database immensely.&lt;/li&gt;
&lt;li&gt;Configure the Sync Schedule. I recommend leaving  this on manual until setup and synchronisation has been completed.&lt;/li&gt;
&lt;li&gt;Check the Begin initial synchronization box. This may also take a while.&lt;/li&gt;
&lt;li&gt;Click Finish.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once the initial configuration is complete, now we can start to configure WSUS for every day operation.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the WSUS MMC go to the Options node.&lt;/li&gt;
&lt;li&gt;Setup a Synchronization Schedule. I recommend once or twice a day, out of regular hours. Click OK.&lt;/li&gt;
&lt;li&gt;Go to Automatic Approvals.&lt;/li&gt;
&lt;li&gt;There&amp;rsquo;s a built-in rule to automatically approve Critical and Security updates, meaning that they will be downloaded and distributed via WSUS without any admin interaction. I recommend enabling this, but don&amp;rsquo;t run the rule.&lt;/li&gt;
&lt;li&gt;You may also want to add a rule for Definition Updates from Exchange, Office, and Windows Defender if applicable to you. Click OK.&lt;/li&gt;
&lt;li&gt;Now go to Computers.&lt;/li&gt;
&lt;li&gt;Set the option here to Use Group Policy or registry settings on computers and click OK.&lt;/li&gt;
&lt;li&gt;Go to E-Mail notifications and enable them if you want status reports and Emails about the new updates that have been synchronised. Click OK.&lt;/li&gt;
&lt;li&gt;In the WSUS MMC, go to the Computers node.&lt;/li&gt;
&lt;li&gt;Create the computer groups that you require here. I recommend a &amp;lsquo;pilot&amp;rsquo; group and a &amp;lsquo;regular&amp;rsquo; group both for client devices and servers.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;configuring-group-policy&#34;&gt;Configuring Group Policy&lt;/h2&gt;
&lt;p&gt;To enable our clients to get updates from WSUS using the settings above, you&amp;rsquo;ll need to configure the group policy for them.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the Group Policy Management MMC and go to the Group Policy Objects node.&lt;/li&gt;
&lt;li&gt;Right click on the node and select New to create a new GPO for WSUS. Give it a name and click OK.&lt;/li&gt;
&lt;li&gt;Right click on the new GPO and click Edit to open it.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;Computer Configuration/Policies/Administrative Templates/Windows Components/Windows Update/Manage updates offered from Windows Server Update Service&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Go to the setting &amp;ldquo;Specify intranet Microsoft update service location&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;ll configure both &amp;ldquo;Set the intranet update service for detecting updates&amp;rdquo; and &amp;ldquo;Set the intranet statistics server&amp;rdquo; to &lt;code&gt;http://wsus-server-name.contoso.com:8530&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Go to &amp;ldquo;Enable client-side targeting&amp;rdquo; and enter the name of a group that you created in WSUS.&lt;/li&gt;
&lt;li&gt;For multiple groups, repeat steps 2 - 7 for each group.&lt;/li&gt;
&lt;li&gt;You can use Active Directory Security Groups to control which client devices have read access to the GPO with the desired WSUS group configuration.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are lots of other settings in GPO to configure Windows Update that I recommend taking a look, specifically &amp;ldquo;Configure Automatic Updates&amp;rdquo; located in &lt;code&gt;Computer Configuration/Policies/Administrative Templates/Windows Components/Windows Update/Manage end user experience&lt;/code&gt; which controls when client devices install updates.&lt;/p&gt;
&lt;h2 id=&#34;managing-updates&#34;&gt;Managing Updates&lt;/h2&gt;
&lt;p&gt;After some time (approximately 24 hours) our client devices should have contacted the WSUS server and be in the correct group. Now we need to approve the updates required for our environment.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On the overview of our WSUS server, click on &amp;ldquo;Updates needed by computers&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Change the drop down menu &amp;ldquo;Approval&amp;rdquo; to &amp;ldquo;Unapproved&amp;rdquo; and click &amp;ldquo;Refresh&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Right-click on the Title bar and enable the &amp;ldquo;Supersedence&amp;rdquo; column.&lt;/li&gt;
&lt;li&gt;Click on the very tiny &amp;ldquo;Supersedence&amp;rdquo; column to sort the updates by Supersedence.&lt;/li&gt;
&lt;li&gt;Approve the top critical, security and any other updates you want to be installed on our devices.&lt;/li&gt;
&lt;li&gt;Once the devices have downloaded, installed, and reported back to the WSUS server, we&amp;rsquo;ll have a better idea if any more updates are required.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;maintenance-and-troubleshooting&#34;&gt;Maintenance and Troubleshooting&lt;/h2&gt;
&lt;p&gt;Keeping WSUS running over time requires some maintenance. I created a custom PowerShell script that runs every day to perform the maintenance on the database. More specifically it declines and deletes old updates, and old computers. It can also send a notification over e-mail or a webhook with information about it&amp;rsquo;s clean up run. I&amp;rsquo;ve &lt;a href=&#34;https://gal.vin/utils/wsus-maint-utility/&#34;&gt;posted about it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also clean up the WSUS database manually using the &amp;ldquo;Server Cleanup Wizard&amp;rdquo; found in Options. You can also run this via PowerShell:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-WsusServer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Wsus-Server-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-PortNumber&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;8530&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Get-WsusServer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Invoke-WsusServerCleanup&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;–&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CleanupObsoleteUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-CleanupUnneededContentFiles&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-CompressUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DeclineExpiredUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DeclineSupersededUpdates&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You may encounter an error when trying to connect to the WSUS server using the MMC - Error: Unexpected Error, appears as Event ID 7053 in Event Viewer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/wsus-error.webp&#34; alt=&#34;WSUS Unexpected Error&#34; /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve known this error to occur frequently. One fix is to navigate to &lt;code&gt;%appdata%\Microsoft\MMC&lt;/code&gt; and delete the &lt;code&gt;wsus&lt;/code&gt; file and then try connecting again.&lt;/p&gt;
&lt;h3 id=&#34;iis-configuration&#34;&gt;IIS Configuration&lt;/h3&gt;
&lt;p&gt;I highly recommend configuring these IIS AppPool settings relating to WSUS. In an elevated PowerShell session run the following commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Import-Module&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WebAdministration&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Set-ItemProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IIS&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppPools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WsusPool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queueLength&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;25000&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Set-ItemProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IIS&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppPools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WsusPool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cpu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resetInterval&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;00.00:15:00&amp;#34;&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Set-ItemProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IIS&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppPools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WsusPool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;processModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;idleTimeout&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;00.00:00:00&amp;#34;&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Set-ItemProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IIS&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppPools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WsusPool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;failure&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;loadBalancerCapabilities&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;TcpLevel&amp;#34;&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Set-ItemProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IIS&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppPools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WsusPool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recycling&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;periodicRestart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;privateMemory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;0&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Set-ItemProperty&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IIS&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppPools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WsusPool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;recycling&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;periodicRestart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;time&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;00.00:00:00&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In the IIS Manager these PowerShell commands change the following values:&lt;/p&gt;
&lt;p&gt;WSUS -&amp;gt; Application Pools -&amp;gt; WsusPool -&amp;gt; Advanced Settings&lt;/p&gt;
&lt;p&gt;General:&lt;br /&gt;
Queue Length: 25000&lt;/p&gt;
&lt;p&gt;CPU:&lt;br /&gt;
Limit Interval (minutes): 15&lt;/p&gt;
&lt;p&gt;Process Model:&lt;br /&gt;
Idle Time-out (minutes): 0&lt;/p&gt;
&lt;p&gt;Rapid-Fail Protection:&lt;br /&gt;
&amp;ldquo;Service Unavailable&amp;rdquo; Response: TcpLevel&lt;/p&gt;
&lt;p&gt;Recycling:&lt;br /&gt;
Private Memory Limit (KB): 0&lt;br /&gt;
Regular Time Interval (minutes): 0&lt;/p&gt;
&lt;p&gt;Finally, you can also try the following command, if needed:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;CD &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Program Files\Update Services\Tools&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;.\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wsusutil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;postinstall&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;servicing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;support-my-work&#34;&gt;Support My Work&lt;/h2&gt;
&lt;p&gt;If you would like to support me, please check out the link below.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any questions or comments, please leave them below.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Guide</category>
            
          
            
              <category>Windows Server</category>
            
          
            
              <category>WSUS</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Altering an MDT Task Sequence to Update from Windows Update</title>
        <link>https://gal.vin/posts/old/mdt-update-from-windows-update/</link>
        <pubDate>Sat, 11 Aug 2018 09:29:11 +0000</pubDate>
        
        <atom:modified>Sat, 11 Aug 2018 09:29:11 +0000</atom:modified>
        <guid>https://gal.vin/posts/old/mdt-update-from-windows-update/</guid>
        <description>I&amp;rsquo;ve been revisiting my MDT process as I wanted to try and use Windows Update to get drivers during deployment - by itself this is not a problem, I can just remove the WSUSServer=http://wsus:8530 configuration from the CustomSettings.ini.
However as the device is added to the domain, Group Policy will configure the device to use the local WSUS for updates, this is desired as I still want to use WSUS for future updates, but I want to use Windows Update during deployment.</description>
        <content:encoded>&lt;p&gt;I&amp;rsquo;ve been revisiting my MDT process as I wanted to try and use Windows Update to get drivers during deployment - by itself this is not a problem, I can just remove the &lt;code&gt;WSUSServer=http://wsus:8530&lt;/code&gt; configuration from the CustomSettings.ini.&lt;/p&gt;
&lt;p&gt;However as the device is added to the domain, Group Policy will configure the device to use the local WSUS for updates, this is desired as I still want to use WSUS for future updates, but I want to use Windows Update during deployment. I&amp;rsquo;ve a few options here:&lt;/p&gt;
&lt;h3 id=&#34;move-domain-join-to-later-in-the-task-sequence-after-windows-update&#34;&gt;Move Domain Join to later in the Task Sequence, after Windows Update&lt;/h3&gt;
&lt;p&gt;I could have done this, however some of the custom scripts might need the domain and it seems like a huge change in the process which could possibly cause more problems.&lt;/p&gt;
&lt;h3 id=&#34;always-ensure-that-the-computer-account-is-created-in-an-ou-without-the-wsus-gpo-enabled-on-it-or-for-existing-accounts-ensure-the-account-is-moved-or-deleted&#34;&gt;Always ensure that the computer account is created in an OU without the WSUS GPO enabled on it, or for existing accounts ensure the account is moved or deleted&lt;/h3&gt;
&lt;p&gt;This is a small task but it has time consuming repercussions if not done or forgotten about. The move could be scripted or something similar, but again it&amp;rsquo;s a time consuming task for a quick configuration change.&lt;/p&gt;
&lt;p&gt;This is what I settled on, at least for now: In the Task Sequence, just before the Windows Update items, delete the registry keys that configure the device to use  the local WSUS. Without these it will check Windows Update for updates and drivers. I wrote a short .bat script to delete the registry keys.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;REM Remove MDT WSUS Reg Entries
REG DELETE HKEY\LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v &amp;#34;WUServer&amp;#34; /f
REG DELETE HKEY\LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v &amp;#34;WUStatusServer&amp;#34; /f
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In the Task Sequence I created two items:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/mdt-ts-wsus-reg1.webp&#34; alt=&#34;Script - Remove WSUS Reg&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/mdt-ts-wsus-reg2.webp&#34; alt=&#34;Continue on error&#34; /&gt;&lt;/p&gt;
&lt;p&gt;You should set &amp;ldquo;Continue on error&amp;rdquo; on the items, at least the second one as otherwise the Task Sequence will fail due to the script failing to remove the registry entries that may no longer exist. I&amp;rsquo;ve only tested this on a couple of newer devices, they both had a lot of drivers missing and required a few reboots during the update/driver installation process, but it appeared to work. I apologise for the hastily thrown together post, but hopefully this might help someone else.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, please leave them below. Thank you.&lt;/p&gt;
&lt;p&gt;-Mike&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Microsoft Deployment Toolkit</category>
            
          
            
              <category>Windows 10</category>
            
          
            
              <category>Windows Deployment</category>
            
          
            
              <category>WSUS</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Rethinking The Need For Windows Server Update Services (WSUS)</title>
        <link>https://gal.vin/posts/old/rethinking-the-need-for-wsus/</link>
        <pubDate>Sat, 11 Aug 2018 09:24:27 +0000</pubDate>
        
        <atom:modified>Sat, 11 Aug 2018 09:24:27 +0000</atom:modified>
        <guid>https://gal.vin/posts/old/rethinking-the-need-for-wsus/</guid>
        <description>Windows Server Update Services, along with a growing list of other traditional Microsoft server products, seems to be in &amp;lsquo;maintenance mode&amp;rsquo; at best. It&amp;rsquo;s been on my mind as to whether they&amp;rsquo;re going to release a cloud based version in Azure (unless they already have something like that and I&amp;rsquo;ve missed it) or if they&amp;rsquo;re going the route that I think they are: just update from the internet and don&amp;rsquo;t worry about it, which seems to be the answer when looking at Windows Autopilot.</description>
        <content:encoded>&lt;p&gt;Windows Server Update Services, along with a growing list of other traditional Microsoft server products, seems to be in &amp;lsquo;maintenance mode&amp;rsquo; at best. It&amp;rsquo;s been on my mind as to whether they&amp;rsquo;re going to release a cloud based version in Azure (unless they already have something like that and I&amp;rsquo;ve missed it) or if they&amp;rsquo;re going the route that I think they are: just update from the internet and don&amp;rsquo;t worry about it, which seems to be the answer when looking at Windows Autopilot. As long as the OS is a modern Windows OS (Windows 10 or Windows Server 2016 based) updates seem to better and more focused on drivers and cumulative updates. The days of Silverlight being installed on your server seem to be over. A little while ago I saw a comment on reddit about ditching WSUS altogether and going straight to Microsoft Update over the internet - if the bandwidth was available. The commenter suggested that if you had ~500Mbps and up you should be fine, although I would suggest that another factor to consider is how many devices you have that will be getting updates. My previous job had been at a place with only 100Mbps internet for ~1000 devices, so obviously this would have been out of the question. At my current post, the bandwidth is much, much greater and so I started to seriously consider it.&lt;/p&gt;
&lt;p&gt;Apple&amp;rsquo;s OS X Server had an update manager back in the day although I wouldn&amp;rsquo;t be surprised if that&amp;rsquo;s not available anymore, and Adobe used to have a product for managing updates too - but again I&amp;rsquo;m not sure if that&amp;rsquo;s currently available these days. Google don&amp;rsquo;t have an on-prem update service for Android devices and so I had to honestly ask myself why continue to use WSUS? Now, I&amp;rsquo;m not crazy. I accept that generally we have a lot more Windows devices than Google/Apple/or Adobe software and perhaps you do want that control over which updates are deployed and I&amp;rsquo;m not going to be dropping WSUS on Monday morning, but I have started looking at my deployment process for Windows 10 and Windows Server 2016 to use WU for updates and not my local WSUS. A benefit of this specific case is that driver installation can be done much more easily as Windows Update has a pretty good driver store and this will be a huge time saver for me. Again, I understand problematic drivers do get through into WU and so this isn&amp;rsquo;t going to work for every device, but if it saves time when preparing for new devices to be deployed then I think it&amp;rsquo;ll be worth it. For any problematic devices I can still use the &amp;lsquo;total driver control&amp;rsquo; method I currently use. Also, consumer devices, Microsoft&amp;rsquo;s Surface range and another devices which are off site do currently get drivers/firmware etc. from WU and they seem to be doing just fine. Maybe this is the future, at least for some. It&amp;rsquo;s up to you.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, please leave them below.&lt;/p&gt;
&lt;p&gt;-Mike&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>WSUS</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Upgrading to Windows 10 1703 (Creators Update) with Windows Server Update Services (WSUS)</title>
        <link>https://gal.vin/posts/old/upgrading-to-windows-10-from-previous-version-of-windows/</link>
        <pubDate>Wed, 23 Aug 2017 22:34:51 +0000</pubDate>
        
        <atom:modified>Wed, 23 Aug 2017 22:34:51 +0000</atom:modified>
        <guid>https://gal.vin/posts/old/upgrading-to-windows-10-from-previous-version-of-windows/</guid>
        <description>As Windows is now delivered &amp;lsquo;as-a-service&amp;rsquo; with major updates being released biannually, you may want to push out these major updates using WSUS. In previous posts I&amp;rsquo;ve covered deploying Windows 10 1703 (Creators Update) as a clean install with Microsoft Deployment Toolkit and also how to perform an upgrade to Windows 10 1703 using MDT. In this post, I&amp;rsquo;ll walk through the process of pushing out the upgrade to Windows 10 1703 using WSUS.</description>
        <content:encoded>&lt;p&gt;As Windows is now delivered &amp;lsquo;as-a-service&amp;rsquo; with major updates being released biannually, you may want to push out these major updates using WSUS. In previous posts I&amp;rsquo;ve covered &lt;a href=&#34;https://gal.vin/posts/old/building-windows-10-1703-reference-image-walkthrough/&#34;&gt;deploying Windows 10 1703 (Creators Update)&lt;/a&gt; as a clean install with Microsoft Deployment Toolkit and also how to &lt;a href=&#34;https://gal.vin/posts/old/upgrading-to-windows-10-1703-with-mdt-walkthrough/&#34;&gt;perform an upgrade to Windows 10 1703&lt;/a&gt; using MDT. In this post, I&amp;rsquo;ll walk through the process of pushing out the upgrade to Windows 10 1703 using WSUS. I&amp;rsquo;m going to assume that you already have Windows Server Update Services set up. If you don&amp;rsquo;t, don&amp;rsquo;t worry &lt;a href=&#34;https://gal.vin/posts/old/wsus-from-scratch/&#34;&gt;here&amp;rsquo;s a walkthrough&lt;/a&gt; I made previously.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;I have created a Computer Group in WSUS called Upgrades and assigned computers to it using Group Policy. The Windows Updates settings in Group Policy are set to automatically install any updates I approve in WSUS at a specific time, everyday. For this walkthrough I&amp;rsquo;ll be upgrading two Windows versions: a Windows 7 install and a Windows 10 1511 install, just to show the differences. Both installs are Hyper-V VM&amp;rsquo;s and are fully patched. The upgrade to Windows 10 1703 will be deployed from the WSUS server running on a fully patched Windows Server 2016 Hyper-V VM. Both the Windows 7 and Windows 10 1511 VMs have a local profile for a domain user account, with lots of data stored locally on the PC and several pieces of software installed such as Flash, Google Chrome, Office 2016, Adobe Reader and VLC.&lt;/p&gt;
&lt;h2 id=&#34;upgrading-windows-7-to-windows-10-1703-with-wsus&#34;&gt;Upgrading Windows 7 to Windows 10 1703 with WSUS&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s upgrade the Windows 7 install first. This update requires user interaction on the Windows 7 install, so I wouldn&amp;rsquo;t personally recommend this method to upgrade all of your old Windows 7 devices to Windows 10, but for devices that need to have software and data persevered it may be preferable to a clean install.&lt;/p&gt;
&lt;h2 id=&#34;finding-and-approving-the-update-for-windows-7&#34;&gt;Finding and Approving the Update for Windows 7&lt;/h2&gt;
&lt;p&gt;We need to find the relevant update in WSUS. For my Windows 7 VM, it is listed as Windows 7 and 8.1 upgrade to Windows 10 Enterprise, version 1703, en-us, your language and edition may vary though.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Expand the server node in the WSUS console.&lt;/li&gt;
&lt;li&gt;Right-click on Updates, and select Search in the menu.&lt;/li&gt;
&lt;li&gt;In the Search box, under the Updates tab enter the name of the update that is appropriate for you. Please note the edition and language may be different from my example above.&lt;/li&gt;
&lt;li&gt;When the search completes, you should have a few results.&lt;/li&gt;
&lt;li&gt;Right-click on each of the updates and select Revision History.&lt;/li&gt;
&lt;li&gt;You&amp;rsquo;ll want the most recent Revision Number. For my example above, it&amp;rsquo;s 201.&lt;/li&gt;
&lt;li&gt;Right-click on the update you wish to approve, and select Approve.&lt;/li&gt;
&lt;li&gt;Choose the Computer Group you wish to Approve the update for and click OK. Please note: depending on your configuration this will download and push out the upgrade to Windows 10 on all devices in the group.&lt;/li&gt;
&lt;li&gt;Close the Search box, and WSUS should be downloading the update to Windows 10 1703. It is approximately 5GB in size.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/wsus-w7-w10-feature-update.webp&#34; alt=&#34;Windows 7 to Windows 10 Feature Update.jpg&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Once the update has downloaded, it will be available to the devices it has been approved for.&lt;/p&gt;
&lt;h2 id=&#34;performing-the-upgrade-on-windows-7&#34;&gt;Performing the Upgrade on Windows 7&lt;/h2&gt;
&lt;p&gt;On my Windows 7 VM, I logged in as my domain user and checked for updates. It moved to the Upgrades Computer Group I had created for it in WSUS, but the Windows 10 1703 update wasn&amp;rsquo;t downloading. In Windows Update it reported as failed with the error code: 0x80240020, and in WSUS the computer was reporting the update installation as failed with the same error code also. After waiting for 24 hours and trying a few tricks (like resetting Windows Update), I had to edit the registry to get the Update to work.&lt;/p&gt;
&lt;p&gt;Go to the following registry key:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Create a new DWORD (32-bit) Value with Name: AllowOSUpgrade and set the Value: 0x00000001. After creating this registry key, I went to Windows Update and it reported that it was ready to install the upgrade to Windows 10. I selected to to perform the upgrade and after downloading I was presented with a few screens asking if I wanted to proceed with the upgrade. The familiar Windows Update install screen appeared on shutting down Windows 7 and upon reboot the now even more familiar Windows 10 update install screen was displayed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/w7-update.webp&#34; alt=&#34;Windows 7 Updating to Windows 10&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/w10-pre-install.webp&#34; alt=&#34;Windows 10 Pre Install Screen&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/w10-upgrade-complete.webp&#34; alt=&#34;Update Complete&#34; /&gt;&lt;/p&gt;
&lt;p&gt;After several reboots and a screen asking about Privacy Settings, I was presented with the Windows 10 1703 log in screen. I logged in as my domain user which had a local profile on the VM and all my data and programs were there. When I logged in I was greeted by the &amp;ldquo;first run&amp;rdquo; screens that all new users receive when they log in to Windows 10 for the first time. Some of the personal customisations where there, such as the taskbar icons, but they were merged with the default Windows 10 taskbar icons. Sometime later when the VM checked for Windows Updates again, the latest updates for Windows Defender and the most recent Cumulative Update was installed, bringing Windows 10 1703 right up to date.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/w7-desktop.webp&#34; alt=&#34;Before&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/w10-upgrade-desktop.webp&#34; alt=&#34;After&#34; /&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrading-windows-10-1511-to-windows-10-1703-with-wsus&#34;&gt;Upgrading Windows 10 1511 to Windows 10 1703 with WSUS&lt;/h2&gt;
&lt;p&gt;The update for existing versions of Windows 10 doesn&amp;rsquo;t require user interaction, it installs like all other Windows 10 updates preserving user data, profile customisation and installed software.&lt;/p&gt;
&lt;h2 id=&#34;finding-and-approving-the-update-for-windows-10-1511&#34;&gt;Finding and Approving the Update for Windows 10 1511&lt;/h2&gt;
&lt;p&gt;In WSUS the update for my Windows 10 1511 VM is listed as Feature update to Windows 10 Pro, version 1703, en-gb your language and edition may vary though.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Expand the server node in the WSUS console.&lt;/li&gt;
&lt;li&gt;Right-click on Updates, and select Search in the menu.&lt;/li&gt;
&lt;li&gt;In the Search box, under the Updates tab enter the name of the update that is appropriate for you. Please note the edition and language may be different from my example above.&lt;/li&gt;
&lt;li&gt;When the search completes, you should have a few results.&lt;/li&gt;
&lt;li&gt;Right-click on each of the updates and select Revision History.&lt;/li&gt;
&lt;li&gt;You&amp;rsquo;ll want to select the update with the most recent date under the Revised heading. For me it was 27/07/2017.&lt;/li&gt;
&lt;li&gt;Right-click on the update you wish to approve, and select Approve.&lt;/li&gt;
&lt;li&gt;Choose the Computer Group you wish to Approve the update for and click OK. Please note: depending on your configuration this will download and push out the upgrade to Windows 10 on all devices in the group.&lt;/li&gt;
&lt;li&gt;Close the Search box, and WSUS should be downloading the update to Windows 10 1703. It is approximately 5GB in size.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/wsus-w10-feat-update.webp&#34; alt=&#34;Windows 10 Feature Update&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Once the update has downloaded, it will be available to the devices it has been approved for.&lt;/p&gt;
&lt;h2 id=&#34;performing-the-upgrade-on-windows-10-1511&#34;&gt;Performing the upgrade on Windows 10 1511&lt;/h2&gt;
&lt;p&gt;I booted up the Windows 10 1511 VM and left it on the log in screen. The VM contacted the WSUS server and moved it&amp;rsquo;s computer object to the Upgrades Computer Group. Sometime later the VM rebooted from the log in screen and began the upgrade process.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/w10-1511-config-update.webp&#34; alt=&#34;Windows 10 configuring updates&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/w10-1511-working-update.webp&#34; alt=&#34;Windows 10 working on updates&#34; /&gt;&lt;/p&gt;
&lt;p&gt;After several reboots during the upgrade, the VM booted to the Windows 10 log in screen. I logged in with my domain user which already had a local profile on the VM, and was greeted with the &amp;ldquo;first run&amp;rdquo; screens that new users receive when they log in to Windows 10 for the first time. Despite these screens appearing the data and software had been migrated and the customisation I had done as the user of the Start Menu and Taskbar had been preserved, with the exception of the Store and Edge icons had been re-pinned to the Taskbar. Sometime later when the VM checked for Windows Updates again, the latest updates for Windows Defender and the most recent Cumulative Update was installed, bringing Windows 10 1703 right up to date.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, please leave them below.&lt;/p&gt;
&lt;p&gt;-Mike&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Windows 10 1703 Creators Update</category>
            
          
            
              <category>Guide</category>
            
          
            
              <category>Windows Deployment</category>
            
          
            
              <category>WSUS</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Windows Server Update Services Configuration Tweaks For Improving Performance</title>
        <link>https://gal.vin/posts/old/wsus-config-tweaks/</link>
        <pubDate>Sat, 29 Apr 2017 16:33:14 +0000</pubDate>
        
        <atom:modified>Sat, 29 Apr 2017 16:33:14 +0000</atom:modified>
        <guid>https://gal.vin/posts/old/wsus-config-tweaks/</guid>
        <description>Update 2018-04-20: I&amp;rsquo;ve rolled the information in this post and updated it, into a new post about setting up a WSUS server from scratch on Windows Server 2016 Core. The post is also suitable for a regular Windows Server 2016 server with a GUI. You can read it here.
I&amp;rsquo;ve been dealing with some issues with a WSUS server recently. It services around 1000 devices, mostly Windows 10 with some Windows 7, Windows Server 2016/2012 R2/2012 and 2008 R2.</description>
        <content:encoded>&lt;p&gt;Update 2018-04-20: I&amp;rsquo;ve rolled the information in this post and updated it, into a new post about setting up a WSUS server from scratch on Windows Server 2016 Core. The post is also suitable for a regular Windows Server 2016 server with a GUI. &lt;a href=&#34;https://gal.vin/wsus-windows-server-core-walkthrough/&#34;&gt;You can read it here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been dealing with some issues with a WSUS server recently. It services around 1000 devices, mostly Windows 10 with some Windows 7, Windows Server 2016/2012 R2/2012 and 2008 R2. The WSUS server provided updates for a variety of Microsoft products including Office, Exchange, SQL, Visual Studio, Windows Defender to name a few. The WSUS server is running on Windows Server 2016 Standard which is WSUS version 10.0.14393.1066 although I&amp;rsquo;m sure these configuration tweaks could benefit previous versions too. The WSUS database is the Windows Internal Database. The issues I&amp;rsquo;d been experiencing were the Error: Unexpected Error/Reset Server Node (Event ID 7053) issue, generally bad performance, and Windows Update timing out when searching for updates (0x8024401C).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/wsus-error.webp&#34; alt=&#34;WSUS Unexpected Error&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Thankfully the issues were easily resolved, here&amp;rsquo;s what I found. Firstly to tackle the performance issue. I&amp;rsquo;d setup a Scheduled Task to run a PowerShell script, weekly, to clean up the WSUS database, but this had stopped running due to a username/password error. This was easily fixed. As the script had not run in a few weeks I sensed that the script was going to need some time to run, so I decided to increase the specification of the WSUS VM first. The number of clients that it was expected to service had increased over time too, so I felt it was only right I do this. It was running on 2 vCPUs and 4GB RAM, I increased this to 6 vCPUs and 8GB RAM. Once I&amp;rsquo;d done this, I ran the script. After an hour or so, it failed which I consider to be normal when database maintenance hasn&amp;rsquo;t been done in a while. I ran the script again and after a few hours it completed successfully. I increased the schedule of the script to run daily instead of weekly. I also updated the script to add logging and to email the log when it had completed running - something I had been intending to do but not got around to.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the completed script for you to use. The logging and email sections of the script follow the same conventions I&amp;rsquo;ve been using for my Image Factory and Hyper-V backup scripts.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;c&#34;&gt;# -------------------------------------------&lt;/span&gt;
&lt;span class=&#34;c&#34;&gt;# Script: wsus-maintenance.ps1&lt;/span&gt;
&lt;span class=&#34;c&#34;&gt;# Version: 1.1&lt;/span&gt;
&lt;span class=&#34;c&#34;&gt;# Author: Mike Galvin&lt;/span&gt;
&lt;span class=&#34;c&#34;&gt;# Date: 24/04/2017&lt;/span&gt;
&lt;span class=&#34;c&#34;&gt;# -------------------------------------------&lt;/span&gt;
 
&lt;span class=&#34;c&#34;&gt;##Set Variables&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$wsussrvr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wsus1&amp;#34;&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$wsusport&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;8530&amp;#34;&lt;/span&gt;
 
&lt;span class=&#34;c&#34;&gt;##Set Log Location&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$log&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;E:\scripts\wsus-maintenance.log&amp;#34;&lt;/span&gt;
 
&lt;span class=&#34;c&#34;&gt;##Set Mail Config&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$toaddress&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;it@contoso.com&amp;#34;&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$fromaddress&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;$wsussrvr@contoso.com&amp;#34;&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$subject&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;WSUS Maintenance&amp;#34;&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$mailserver&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mail.contoso.com&amp;#34;&lt;/span&gt;
 
&lt;span class=&#34;c&#34;&gt;##Start Log&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Start-Transcript&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$log&lt;/span&gt;
 
&lt;span class=&#34;nb&#34;&gt;Get-WsusServer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$wsussrvr&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-PortNumber&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$wsusport&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Get-WsusServer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Invoke-WsusServerCleanup&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-CleanupObsoleteComputers&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-CleanupObsoleteUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-CleanupUnneededContentFiles&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-CompressUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DeclineExpiredUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DeclineSupersededUpdates&lt;/span&gt;
 
&lt;span class=&#34;c&#34;&gt;##Stop Log&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Stop-Transcript&lt;/span&gt;
 
&lt;span class=&#34;c&#34;&gt;##Send Mail&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$body&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$log&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Out-String&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Send-MailMessage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-To&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$toaddress&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-From&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$fromaddress&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Subject&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$subject&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Body&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$body&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-SmtpServer&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$mailserver&lt;/span&gt;
 
&lt;span class=&#34;c&#34;&gt;##END&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Now that the general performance and house keeping had been done I left the server along to see how things went for a a day or two. After a day performance was better but I still had some timeouts with Windows 10 clients detecting updates. On previous versions of WSUS I&amp;rsquo;d always tweaked the IIS Application Pool settings and so far hadn&amp;rsquo;t had to do that with the Server 2016 version, so I decided to make some changes there.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the changes I made&lt;/p&gt;
&lt;p&gt;Changed the Private Memory Limit (KB) to 0 - This actually removes the memory limit. I&amp;rsquo;d actually suggest making it slight less that the memory available on your server, but I&amp;rsquo;ve not had any issue from setting this to 0 yet.&lt;/p&gt;
&lt;p&gt;Change the Service Unavailable Response from HttpLevel to TcpLevel - The documentation states that change this to TcpLevel will reset the connection rather than return a HTTP 503 error. I found this via a Google Search and haven&amp;rsquo;t had any issues since making this change.&lt;/p&gt;
&lt;p&gt;Change Limit Interval (minutes) from 5 to 15 - This specifies the reset period for the CPU monitoring and throttling limits for the application pool.&lt;/p&gt;
&lt;p&gt;Change the Queue Length from 1000 to 2500 - This increases the queue length for the application pool.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not convinced that I needed to do all four of these changes. I think the changes to the Private Memory Limit and Queue Length were necessary but I&amp;rsquo;m not so sure about the others. I&amp;rsquo;d suggest that you might want to show more restraint that I did at the time and make one change at a time to see if it solves the issue.&lt;/p&gt;
&lt;p&gt;After making these changes the performance of the WSUS server was greatly increased and the Windows 10 clients detected updates without issue, and continue to as I write this.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, please leave them below.&lt;/p&gt;
&lt;p&gt;-Mike&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>WSUS</category>
            
          
            
              <category>Windows Server</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Stuck Windows Updates From Windows Server Update Services (WSUS) On Windows 10 1607/Windows Server 2016</title>
        <link>https://gal.vin/posts/old/ws2016-w10-1607-stuck-updates-from-wsus/</link>
        <pubDate>Tue, 08 Nov 2016 19:53:50 +0000</pubDate>
        
        <atom:modified>Tue, 08 Nov 2016 19:53:50 +0000</atom:modified>
        <guid>https://gal.vin/posts/old/ws2016-w10-1607-stuck-updates-from-wsus/</guid>
        <description>If you&amp;rsquo;ve installed a fresh install of Windows 10 1607/Windows Server 2016 recently, you may have experienced a problem when it tries to download and install updates from your local WSUS server - specifically, it doesn&amp;rsquo;t, it gets stuck. You&amp;rsquo;ve tired rebooting, stopping the BITS and WU services, deleting %systemroot%\SoftwareDistribution but nothing seems to work. Both Windows 10 1607 and Windows Server 2016 require a cumulative update that fixes this specific issue.</description>
        <content:encoded>&lt;p&gt;If you&amp;rsquo;ve installed a fresh install of Windows 10 1607/Windows Server 2016 recently, you may have experienced a problem when it tries to download and install updates from your local WSUS server - specifically, it doesn&amp;rsquo;t, it gets stuck. You&amp;rsquo;ve tired rebooting, stopping the BITS and WU services, deleting &lt;code&gt;%systemroot%\SoftwareDistribution&lt;/code&gt; but nothing seems to work. Both Windows 10 1607 and Windows Server 2016 require a cumulative update that fixes this specific issue. You can of course just download the update off Microsoft&amp;rsquo;s WU servers but if you&amp;rsquo;re using MDT then you can download the update separately, and add it to MDT to push out during the install phase of the Task Sequence. You can use any Windows 10/Windows Server 2016 Cumulative Update released for Windows 10 1607, the more recent the better.&lt;/p&gt;
&lt;p&gt;Update 16/10/2017: If you&amp;rsquo;re experiencing stuck updates (or incredibly slow during a Task Sequence) with Windows Server 2016 but not Windows 10 1607 and they are both serviced by the same WSUS server, the cause may be due to Express Updates being enabled.&lt;/p&gt;
&lt;p&gt;Update 25/04/2017: The previous CU I listed here is now gone from the Update Catalog. Here is the most recent one I&amp;rsquo;ve tested: &lt;a href=&#34;https://www.catalog.update.microsoft.com/Search.aspx?q=kb4015217&#34;&gt;https://www.catalog.update.microsoft.com/Search.aspx?q=kb4015217&lt;/a&gt;. As before the CU is for both Windows 10 1607 and Windows Server 2016 so you don&amp;rsquo;t need to download both versions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KB4015217 info from Microsoft - &lt;a href=&#34;https://support.microsoft.com/en-us/help/4015217/windows-10-update-kb4015217&#34;&gt;https://support.microsoft.com/en-us/help/4015217/windows-10-update-kb4015217&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Original Post To build it into your MDT install sequence, download the update from the Microsoft Update Catalog and follow the steps below. Please note that the update for Windows 10 x64 and Windows Server 2016 is the same - you only need to download one of them.&lt;/p&gt;
&lt;h3 id=&#34;import-the-update&#34;&gt;Import The Update&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Go to Deployment Workbench and create two new folders under the Packages node, one for Windows 10 1607 x64 and one for Windows Server 2016.&lt;/li&gt;
&lt;li&gt;Right click on the Windows 10 1607 x64 folder you just created and select Import OS Packages.&lt;/li&gt;
&lt;li&gt;Browse to the location of the update (you will need to put it in a folder by itself) and click Next through the wizard and wait for the Update to be imported.&lt;/li&gt;
&lt;li&gt;As this update is the same for both Windows 10 1607 x64 and for Windows Server 2016, you can right click on the imported package and paste it into the Windows Server 2016 folder.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;create-a--selection-profile&#34;&gt;Create A  Selection Profile&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;In Deployment Workbench, go to the Advanced Configuration node and expand it, then go to the Selection Profiles.&lt;/li&gt;
&lt;li&gt;Right click and create a new Selection Profile. Name it Windows 10 1607 x64, tick the Windows 10 1607 x64 folder under Packages and click Next through the rest of the wizard.&lt;/li&gt;
&lt;li&gt;Repeat the steps above for a Windows Server 2016 Selection Profile choosing the Windows Server 2016 folder.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;enable-the-selection-profile-in-a-task-sequence&#34;&gt;Enable The Selection Profile In A Task Sequence&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Create a Standard Task Sequence to install Windows 10 1607 x64.&lt;/li&gt;
&lt;li&gt;Right click on the Task Sequence, go to Properties, go to the Task Sequence tab.&lt;/li&gt;
&lt;li&gt;Expand the Preinstall node, and select the Apply Patches item. In the Properties tab on the right, under Selection profile, change it to Windows 10 1607 x64.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/mdt-ts-selection-profile.webp&#34; alt=&#34;Task Sequence Selection Profile&#34; /&gt;&lt;/p&gt;
&lt;p&gt;The Task Sequence will now deploy Windows 10 1607 x64 and install the Cumulative Update as part of the build.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, please leave them below.&lt;/p&gt;
&lt;p&gt;-Mike&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Windows 10 1607 Anniversary Update</category>
            
          
            
              <category>Windows Server 2016</category>
            
          
            
              <category>WSUS</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Installing Windows Server Update Services from scratch!</title>
        <link>https://gal.vin/posts/old/wsus-from-scratch/</link>
        <pubDate>Fri, 28 Oct 2016 17:23:24 +0000</pubDate>
        
        <atom:modified>Fri, 28 Oct 2016 17:23:24 +0000</atom:modified>
        <guid>https://gal.vin/posts/old/wsus-from-scratch/</guid>
        <description>Update 2018-04-20 I&amp;rsquo;ve rolled the information in this post, and updated it, into a new post about setting up a WSUS server from scratch on Windows Server 2016 Core. The post is also suitable for a regular Windows Server 2016 server with a GUI. You can read it here.
Update I&amp;rsquo;ve tested and updated this post for Windows Server 2016.
In this post, I&amp;rsquo;m going to walk through setting up a WSUS server from scratch on Windows Server 2012 R2 or Windows Server 2016.</description>
        <content:encoded>&lt;h3 id=&#34;update-2018-04-20&#34;&gt;Update 2018-04-20&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve rolled the information in this post, and updated it, into a new post about setting up a WSUS server from scratch on Windows Server 2016 Core. The post is also suitable for a regular Windows Server 2016 server with a GUI. &lt;a href=&#34;https://gal.vin/wsus-windows-server-core-walkthrough/&#34;&gt;You can read it here.&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;update&#34;&gt;Update&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve tested and updated this post for Windows Server 2016.&lt;/p&gt;
&lt;p&gt;In this post, I&amp;rsquo;m going to walk through setting up a WSUS server from scratch on Windows Server 2012 R2 or Windows Server 2016. I will not be covering WSUS with System Center Configuration Manager, just a standalone WSUS installation.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the specification of the Virtual Machine I&amp;rsquo;m using for this walk through:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hyper-V, Generation 2, V8.0 VM&lt;/li&gt;
&lt;li&gt;4GB non-dynamic RAM&lt;/li&gt;
&lt;li&gt;Dynamically expanding 100GB VHDx for C:\ drive&lt;/li&gt;
&lt;li&gt;Dynamically expanding 100GB VHDx for E:\ drive&lt;/li&gt;
&lt;li&gt;Windows Server 2012 R2 Standard/Windows Server 2016 Standard&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;preparation&#34;&gt;Preparation&lt;/h3&gt;
&lt;p&gt;First we&amp;rsquo;ll download the prerequisites. To view reports from WSUS, you&amp;rsquo;ll need the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For Windows Server 2012 R2: &lt;a href=&#34;https://www.microsoft.com/en-gb/download/details.aspx?id=6576&#34;&gt;Microsoft Report Viewer Redistributable 2008&lt;/a&gt; - requires .NET 2.0 which is a feature installed through the Server Manager.&lt;/li&gt;
&lt;li&gt;For Windows Server 2016/Windows 10: &lt;a href=&#34;https://www.microsoft.com/en-gb/download/details.aspx?id=35747&#34;&gt;Microsoft Report Viewer 2012 Runtime redistributable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft System CLR Types for Microsoft SQL Server 2012 - required for Microsoft Report Viewer 2012. This is a bit trickier to find, so here&amp;rsquo;s a direct link: &lt;a href=&#34;http://go.microsoft.com/fwlink/?LinkID=239644&amp;amp;clcid=0x409&#34;&gt;x64 version&lt;/a&gt;, &lt;a href=&#34;http://go.microsoft.com/fwlink/?LinkID=239643&amp;amp;clcid=0x409&#34;&gt;x86 version&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In case the links to Microsoft System CLR Types fail in future, here is the main &lt;a href=&#34;https://www.microsoft.com/en-gb/download/details.aspx?id=29065&#34;&gt;download page link&lt;/a&gt;. This page links to components from the Microsoft SQL Server 2012 Feature Pack, you have to go to the Install Instructions section and download the specific component you need. If you want to run the SUSDB in a local SQL Express instance rather than the built in Windows Internal Database, then you&amp;rsquo;ll need to download the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.microsoft.com/en-gb/download/details.aspx?id=52679&#34;&gt;SQL Express 2016&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?redirectedfrom=MSDN&amp;amp;view=sql-server-ver15&#34;&gt;SQL Server Management Studio 16.5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sql-express--sql-server-management-studio-installation&#34;&gt;SQL Express &amp;amp; SQL Server Management Studio Installation&lt;/h3&gt;
&lt;p&gt;Running the SQL Express setup will give you the option of Basic, Custom, or Download Media. Click Basic and go through the installation wizard as you normally would. On my demo machine, I ran the custom install and installed SQL Express on a separate drive, where I will also put the WSUS content. So I have E:\Microsoft SQL Server and E:\Microsoft SQL Server x86 folders. When the installation is completed, restart, then run the SQL Server Management Studio install executable that you downloaded earlier and run through the install, once again restart the server when prompted.&lt;/p&gt;
&lt;h3 id=&#34;wsus-installation&#34;&gt;WSUS Installation&lt;/h3&gt;
&lt;p&gt;Go to Server Manager &amp;gt; Manage &amp;gt; Add Roles and Features &amp;gt; Role-based or feature-based installation &amp;gt; Select a server from the server pool &amp;gt; select Windows Server Update Services &amp;gt; accept the defaults in the Add Features dialogue box &amp;gt; click Next on the Features section &amp;gt; click Next on the WSUS info screen.&lt;/p&gt;
&lt;h3 id=&#34;role-services&#34;&gt;Role Services&lt;/h3&gt;
&lt;p&gt;Select WID if you intend to use the Windows Internal Database. Select Database if you intend to use a local SQL Express installation or have an full SQL Server install.&lt;/p&gt;
&lt;h3 id=&#34;content&#34;&gt;Content&lt;/h3&gt;
&lt;p&gt;I recommend storing the WSUS content on a separate disk. For me I use E:\wsus_content.&lt;/p&gt;
&lt;h3 id=&#34;db-instance&#34;&gt;DB Instance&lt;/h3&gt;
&lt;p&gt;If using a SQL Server or SQL Express instance, select the server and the instance name here. For SQL Express you will need to enter &amp;ldquo;Machine name\sqlexpress&amp;rdquo; and click Check connection. Click through and accept the defaults of the Web Server Role (IIS) &amp;gt; Role Services &amp;gt; Confirmation. Check the Restart the destination server automatically if required box, click Yes to the dialogue box, then click Install and go make a drink.&lt;/p&gt;
&lt;h3 id=&#34;post-install&#34;&gt;Post Install&lt;/h3&gt;
&lt;p&gt;After installation, go to Server Manager and click the flag and run the Post-Installation tasks.&lt;/p&gt;
&lt;p&gt;When they complete go to Administrative Tools and open the Windows Server Update Services MMC. You should see a Before You Begin wizard. Click Next &amp;gt; Join the Microsoft Update Improvement Program if you wish &amp;gt; Choose Upstream server, as this is the first WSUS server you&amp;rsquo;ll choose Synchronize from Microsoft Update &amp;gt; Specify the Proxy Server settings if needed &amp;gt; Start Connecting, and then wait, this may take a while!&lt;/p&gt;
&lt;p&gt;When WSUS has connected, select the applicable languages for your environment, select the applicable Products - I select all products as we&amp;rsquo;ll only be downloading updates that we actually need. Select the Classifications, I select all, EXCEPT drivers, you do &lt;em&gt;not&lt;/em&gt; want drivers through WSUS - they increase the size of the database immensely, better to manage drivers through another method. Configure the Sync Schedule - I leave this on manual until the server is setup. Check the Begin initial synchronization box, then Finish.&lt;/p&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;When your server has performed the initial synchronization, you can finish off the configuration.&lt;/p&gt;
&lt;h3 id=&#34;synchronization-schedule&#34;&gt;Synchronization Schedule&lt;/h3&gt;
&lt;p&gt;You&amp;rsquo;ll want to set up an automatic sync schedule, here&amp;rsquo;s where you can do it, I usually have two sync&amp;rsquo;s per day.&lt;/p&gt;
&lt;h3 id=&#34;automatic-approvals&#34;&gt;Automatic Approvals&lt;/h3&gt;
&lt;p&gt;There&amp;rsquo;s a rule already here to automatically approve Critical and Security updates meaning that they will be downloaded and distributed via WSUS automatically without any admin interaction. I recommended enabling this, but don&amp;rsquo;t run the rule. I add an additional rule for definition updates for Exchange, Office, Forefront Endpoint Protection, and Windows Defender. I recommended adding in the definition updates for any products that are relevant to you. Once again, don&amp;rsquo;t run the rule.&lt;/p&gt;
&lt;h3 id=&#34;computers&#34;&gt;Computers&lt;/h3&gt;
&lt;p&gt;This is something that tripped me up in the early days a lot. Clients wouldn&amp;rsquo;t appear in WSUS, even after I&amp;rsquo;d set the correct settings in Group Policy. The solution here is to set the option here to &amp;ldquo;Use Group Policy or registry settings on computers&amp;rdquo; and to create the groups in WSUS under Computers, that you&amp;rsquo;ve configured in your GPO&amp;rsquo;s for Windows Update.&lt;/p&gt;
&lt;h3 id=&#34;group-policy&#34;&gt;Group Policy&lt;/h3&gt;
&lt;p&gt;To enable your clients to get updates from WSUS, you&amp;rsquo;ll need to configure the group policy for them. You&amp;rsquo;ll find the settings in group policy Computer Configuration &amp;gt; Policies &amp;gt; Administrative Templates &amp;gt; Windows Components &amp;gt; Windows Update. The key settings here are Specify intranet Microsoft update service location and Enable client-side targeting. For Specify intranet Microsoft update service location you&amp;rsquo;ll need to enter &lt;code&gt;http://machine name:8530&lt;/code&gt; in both text boxes. For Enable client-side targeting you&amp;rsquo;ll need to enter the name of the group and it must match the name of the computer group you created in WSUS.&lt;/p&gt;
&lt;h3 id=&#34;managing-updates&#34;&gt;Managing Updates&lt;/h3&gt;
&lt;p&gt;After a while your clients should have contacted the WSUS server and be in the correct group and have reported the updates they require. Now you need to approve the updates required for your environment. On the overview of your WSUS server click on Updates needed by computers and on the new screen change the drop down menu Approval: to Unapproved and wait for the list to refresh. Now, right-click on the Title bar and enable the Supersedence column and click on the very tiny column to sort the updates by Supersedence. Now approve the &amp;ldquo;top&amp;rdquo; critical, security and any other updates you want to be installed on your clients.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/wsus-supersedence.webp&#34; alt=&#34;Sorting updates in WSUS by supersedence&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Take care not to approve any updates, service packs or feature packs that you do not want to be pushed out via WSUS. For example if you do not require .NET installed on your clients, then don&amp;rsquo;t approve it. All you&amp;rsquo;re doing is potentially increasing the attack surface of that device and also the amount of updates that it has to download and install in future. Scroll right to the bottom and once again approve the updates you want to be installed. All the other updates can be ignored for now. The updates you just approved should be all your clients require to be up to date. Once the clients download, install, and then report back to the WSUS server, you will have a better idea of what is required.&lt;/p&gt;
&lt;h3 id=&#34;maintenance-and-troubleshooting&#34;&gt;Maintenance and Troubleshooting&lt;/h3&gt;
&lt;p&gt;Keeping WSUS running well over time is a matter of keeping the IIS application running happily and the database clean. I currently run a PowerShell script every week that cleans up the database, declines and deletes old updates and I&amp;rsquo;ve had to increase the memory available to the WSUS Application Pool to 6GB.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the PowerShell script I&amp;rsquo;ve scheduled to run every Friday via Task Scheduler.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-WsusServer&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Machine&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-PortNumber&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;8530&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;Get-WsusServer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Invoke-WsusServerCleanup&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;–&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CleanupObsoleteUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-CleanupUnneededContentFiles&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-CompressUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DeclineExpiredUpdates&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-DeclineSupersededUpdates&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The script is pretty simple. First we get the WSUS server information, the Machine name should be changed to the name of the WSUS server. The script then deletes obsolete updates from the database and the downloaded files, deletes obsolete, expired, and superseded updates from the database. You can do this all manually using the Server Cleanup Wizard, but you really need to run it regularly, and running it from PowerShell is quicker and automated. As a reminder, to run PowerShell scripts from Task Scheduler you need to run the following action:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;PowerShell.exe -ExecutionPolicy Bypass E:\scripts\wsus-maintenance.ps1
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You may get an error when trying to connect to the WSUS server one day that says &amp;ldquo;Error: Unexpected Error&amp;rdquo; and appears as Event ID 7053 in the Event Viewer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/wsus-error.webp&#34; alt=&#34;WSUS Unexpected Error&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Here are the two solutions that have always fixed that for me: Increase the memory allocated to the WSUS application pool in IIS. The server in question had the WSUS DB installed in WID and 8GB of RAM available, I increased the pool to 6000000 KB (6 GB) which is probably overkill, but it solved the issue on that system. Try running this WSUSUtil command. WSUSUtil is located in %systemdrive%\Program Files\Update Services\Tools.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&amp;#34;%systemdrive%\Program Files\Update Services\Tools\wsusutil&amp;#34; postinstall /servicing
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In this instance the server only had 4 GB of RAM and was running the WSUS DB in SQL Express. That&amp;rsquo;s it! You should have a fully functioning WSUS server, that will stay in good health over time. Be sure to check up on your updates at least once a week and don&amp;rsquo;t forget to test them out on a small group of clients and servers before installing them on your entire estate.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, please leave them below.&lt;/p&gt;
&lt;p&gt;-Mike&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Guide</category>
            
          
            
              <category>Windows Server</category>
            
          
            
              <category>WSUS</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Resolving Windows Server Update Services Connection Errors On Windows Server 2012 R2</title>
        <link>https://gal.vin/posts/old/wsus-errors/</link>
        <pubDate>Thu, 27 Oct 2016 20:43:12 +0000</pubDate>
        
        <atom:modified>Thu, 27 Oct 2016 20:43:12 +0000</atom:modified>
        <guid>https://gal.vin/posts/old/wsus-errors/</guid>
        <description>Update 2018-04-20: I&amp;rsquo;ve rolled the information in this post, and updated it, into a new post about setting up a WSUS server from scratch on Windows Server 2016 Core. The post is also suitable for a regular Windows Server 2016 server with a GUI. You can read it here.
Update 2017-05-03: If you&amp;rsquo;re looking to resolve similar problems with WSUS on Windows Server 2016, please see this post.
If you&amp;rsquo;ve been managing a WSUS server, you may have run into the well known MMC connection error above (appears as Event ID 7053 in the Event Viewer) by now.</description>
        <content:encoded>&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/wsus-error.webp&#34; alt=&#34;WSUS Unexpected Error&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Update 2018-04-20: I&amp;rsquo;ve rolled the information in this post, and updated it, into a new post about setting up a WSUS server from scratch on Windows Server 2016 Core. The post is also suitable for a regular Windows Server 2016 server with a GUI. &lt;a href=&#34;https://gal.vin/wsus-windows-server-core-walkthrough/&#34;&gt;You can read it here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Update 2017-05-03: If you&amp;rsquo;re looking to resolve similar problems with WSUS on Windows Server 2016, &lt;a href=&#34;https://gal.vin/posts/old/wsus-config-tweaks/&#34;&gt;please see this post.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve been managing a WSUS server, you may have run into the well known MMC connection error above (appears as Event ID 7053 in the Event Viewer) by now. I started experiencing it more often after installing Windows Server 2012 R2&amp;rsquo;s WSUS but was able to quickly solve my issue. Later when setting up another 2012 R2 WSUS server I had the same issue but the same fix didn&amp;rsquo;t work. I eventually solved the problem with that server though.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a small collection of resolutions and notes on this problem. On one of my WSUS servers, increasing the memory allocated to the WSUS application pool in IIS solved the problem. The server in question was a Hyper-V VM with 8GB of RAM (non dynamic) allocated. I increased the pool to 6000000 KB (6 GB) and thus far it&amp;rsquo;s solved the issue on this server.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://gal.vin/media/iis-priv-mem-limit.webp&#34; alt=&#34;IIS Private Memory Limit&#34; /&gt;&lt;/p&gt;
&lt;p&gt;On another WSUS server I setup recently, (which had less RAM) the issue was solved by running the &lt;code&gt;WSUSUtil&lt;/code&gt; command line utility. &lt;code&gt;WSUSUtil&lt;/code&gt; is located in &lt;code&gt;%systemdrive%\Program Files\Update Services\Tools&lt;/code&gt; folder.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&amp;#34;%systemdrive%\Program Files\Update Services\Tools\wsusutil&amp;#34; postinstall /servicing
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;From what I&amp;rsquo;ve read online a common cause of the problem seems to be the installation of certain updates and the reported solution is to uninstall these updates - I&amp;rsquo;ve never had to uninstall any updates to solve this issue, at the time of writing. To give you an idea of how strange this issue seems to be, I&amp;rsquo;ve had this exact problem when I&amp;rsquo;ve installed WSUS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;After a full Windows Update run from the internet.&lt;/li&gt;
&lt;li&gt;After a full Windows Update run from the internet.&lt;/li&gt;
&lt;li&gt;Using a local SQL Express instance to store the WSUS DB.&lt;/li&gt;
&lt;li&gt;Using Windows Internal Database to store the WSUS DB.&lt;/li&gt;
&lt;li&gt;Having a small number of clients.&lt;/li&gt;
&lt;li&gt;Having a large number of clients.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hopefully this helps you. I&amp;rsquo;ll make a post in future on how I install WSUS servers currently and some things that I&amp;rsquo;ve learned to look out for, but until then happy WSUS&amp;rsquo;ing! I think this is the worst way I&amp;rsquo;ve ever ended a blog post ever.&lt;/p&gt;
&lt;p&gt;If you have any questions or comments, please leave them below.&lt;/p&gt;
&lt;p&gt;-Mike&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Windows Server</category>
            
          
            
              <category>WSUS</category>
            
          
        
        
        
      </item>
      

    
  </channel>
</rss>