<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Minfang's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/minfangl/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/minfangl/feed.xml</link>
    <description>All about System Center</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:24:22 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Understanding FEP 2010 Deployment Status Collections</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/understanding-fep-2010-deployment-status-collections</link>
      <pubDate>Wed, 30 Apr 2014 15:24:12 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2014/04/30/understanding-fep-2010-deployment-status-collections/</guid>
      <description><![CDATA[Starting from this month, you can either install FEP platform updates through Microsoft Update or...]]></description>
      <content:encoded><![CDATA[<p>Starting from this month, you can either install FEP platform updates through Microsoft Update or standalone FEP hotfix. <a href="https://blogs.technet.com/b/configmgrteam/archive/2014/03/27/anti-malware-platform-updates-for-endpoint-protection-will-be-released-to-mu.aspx">https://blogs.technet.com/b/configmgrteam/archive/2014/03/27/anti-malware-platform-updates-for-endpoint-protection-will-be-released-to-mu.aspx</a>. The latest FEP platform updates on MU is of version 4.5.0215.0. The latest standalone FEP hotfix is also of version 4.5.0.215.0: <a href="https://support.microsoft.com/kb/2952678" target="_blank">https://support.microsoft.com/kb/2952678</a>.</p>
<p>You can validating the FEP deployment using dashboard: <a href="https://technet.microsoft.com/en-us/library/ff823784.aspx">https://technet.microsoft.com/en-us/library/ff823784.aspx</a>. You might already know that the deployment dashboard is actually a representation<br />of the deployment status collections. The number of each category in the deployment dashboard is the count of the corresponding FEP deployment status collections. So if you feel that the dashboard is not as expected, you should check the collections.</p>
<p>This article will explain what each FEP 2010 Deployment status collection is and what the criteria for each collections is.</p>
<p>There are total 6 deployment status collections:</p>
<p><strong>Deployment Succeeded: </strong>This collection will show all systems that have the latest FEP client agent installed.</p>
<p><strong>Out of Date: </strong>This collection will show all systems that have an out-of-date FEP client installed</p>
<p><strong>Not Target: </strong>This collection will show all systems that don&rsquo;t have FEP client installed and is not targeted by the deployment advertisement.</p>
<p><strong>Locally Removed: </strong>This collection will show all systems that whose FEP client agent is removed locally (either by a user with local administrator permission or by another software, eg: malware).</p>
<p><strong>Deployment Pending: </strong>This collection will show all systems that are targeted by the deployment advertisement, but not yet started installing. This could be because the system is offline.</p>
<p><strong>Deployment Failed</strong>: This collection will show all systems that the FEP deployment advertisement is failed.</p>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="232">
<p><strong>Collection Name</strong></p>
</td>
<td valign="top" width="600">
<p><strong>Criteria</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="232">
<p><strong>Deployment&nbsp; Succeeded</strong></p>
</td>
<td valign="top" width="600">
<p>ClientDeployed = 1<strong></strong></p>
</td>
</tr>
<tr>
<td valign="top" width="232">
<p><strong>Out of Date</strong></p>
</td>
<td valign="top" width="600">
<p>ClientOutDated = 1 &amp; (LastOperationInstall = 0 || Last State = 13)<strong></strong></p>
</td>
</tr>
<tr>
<td valign="top" width="232">
<p><strong>Not Target</strong></p>
</td>
<td valign="top" width="600">
<p>ClientDeployed = 0 and ClientOutdated = 0 and LastOperationIsInstall = 0<strong></strong></p>
</td>
</tr>
<tr>
<td valign="top" width="232">
<p><strong>Locally Removed</strong></p>
</td>
<td valign="top" width="600">
<p>ClientDeployed = 0 and ClientOutdated = 0 and&nbsp; LastOperationIsInstall = 1 and LastState = 13<strong></strong></p>
</td>
</tr>
<tr>
<td valign="top" width="232">
<p><strong>Deployment Pending</strong></p>
</td>
<td valign="top" width="600">
<p>ClientDeployed = 0 and LastOperationIsInstall = 1 and&nbsp; LastState not in (4,7,11,13)<strong></strong></p>
</td>
</tr>
<tr>
<td valign="top" width="232">
<p><strong>Deployment Failed</strong>&nbsp; <strong></strong></p>
</td>
<td valign="top" width="600">
<p>ClientDeployed = 0 and LastOperationIsInstall = 1 and&nbsp; LastState in (4,7,11,13)<strong></strong></p>
</td>
</tr>
</tbody>
</table>
<p><strong>&nbsp;</strong></p>
<p><strong>Note:</strong></p>
<p>ClientDeployed &amp; ClientOutDated information is get from v_Add_Removed_Programs. This view is populated by the hardware inventory data.</p>
<p>It will look for record whose DsiplayName00 = &lsquo;Microsoft Forefront Endpoint Protection 2010 Server Management&rsquo;.</p>
<p>If the record exists and version is &gt;= expected version, then <strong>ClientDeployed</strong> = 1 else 0</p>
<p>If the record exists and version is &lt; expected version, then <strong>ClientOutDated</strong> =1 else 0</p>
<p>If the program is not found, then it&rsquo;s null, both are set to 0 (as in the Locally Removed scenario)</p>
<p>LastOperationIsInstall &amp; LastState information is get from v_ClientAdvertisementStatus</p>
<p><strong>LastOperationIsInstall</strong>: check whether the last program from the FEP &ndash; Deployment packages that run on the client is the &ldquo;Install&rdquo; program.</p>
<p><strong>LastState</strong>: check the last return code for the FEP deployment program: match by Package MIFName = &ldquo;FEP &ndash; Deployment&rdquo;.</p>
<p>If you install standalone FEP hotfix, it will update the expected version in the collections query and the FEP installation bits on the server. So whenever a new CCM client comes, it will install the new FEP client.</p>
<p>If you depend on MU to install FEP platform update, then the expected version on FEP server will not be changed. And whenever a new CCM client comes, it will still install the old FEP client and wait for SUM to<br />install the new FEP platform update.</p>
<p>So now back to the real problem:</p>
<p><span style="text-decoration: underline;">What you would expect, when you deploy FEP client update through hotfix?</span></p>
<p>After site server install the hotfix and before the client re-run the advertisement to update FEP agent: ClientDeployed = 0; ClientOutDated = 1;</p>
<p>Depending on the last advertisement run status, it could be in any of the following catalogs:</p>
<p><strong>Out of Date</strong></p>
<p><strong>Deployment Pending </strong>&ndash; I&rsquo;d expect most will fall into this catalog<strong></strong></p>
<p><strong>Deployment Failed</strong>&nbsp;</p>
<p><span style="text-decoration: underline;">What you would expect, when you deploy FEP client update through MU:</span></p>
<p>If you install the update through MU and not install the FEP hotfix on site server, so that the expected version will not change, then a client has been in the Deployment Succeded collection before, it should be<br />still there;</p>
<p>If a client is in other collections, then it should be moved into the Deployment Succeeded collection after the latest hardware inventory information is sent back to server.</p>]]></content:encoded>
    </item>
    <item>
      <title>System Center Update Publisher 2011 Troubleshoot Series 3: Publish fail when SCUP 2011 is remote and WSUS is using UNC as Content Folder</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/system-center-update-publisher-2011-troubleshoot-series-3-publish-fail-when-scup-2011-is-remote-and-wsus-is-using-unc-as-content-folder</link>
      <pubDate>Tue, 28 Jan 2014 14:22:14 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2014/01/28/system-center-update-publisher-2011-troubleshoot-series-3-publish-fail-when-scup-2011-is-remote-and-wsus-is-using-unc-as-content-folder/</guid>
      <description><![CDATA[We saw several reports that SCUP publishing fail under this configuration: SCUP 2011 is installed on...]]></description>
      <content:encoded><![CDATA[<p>We saw several reports that SCUP publishing fail under this configuration: SCUP 2011 is installed on a remote machine from WSUS and WSUS is installed to use an UNC path as Content Folder.</p>
<p>There&rsquo;re actually two problems when WSUS is using UNC path as Content Folder.</p>
<p><strong>1. The UNC Content Folder needs to be 2 levels deep.</strong></p>
<p>That is you&rsquo;ll need to set the UNC Content Folder as this: <a href="file:///\\%3cremoteserver%3e\WSUSContentFolder">\\&lt;remoteserver&gt;\WSUSContentFolder</a>.</p>
<p>If you only set the UNC Content Folder to be one level deep like: <a href="file:///\\%3cremoteserver">\\&lt;remoteserver</a>&gt;</p>
<p>You will meet error when trying to publish even from a local SCUP</p>
<p><span style="color: #3366ff;"><em>Publish: A fatal error occurred during publishing :Object reference not set to an instance of an object. </em></span></p>
<p><strong><em>2. </em>When WSUS is using UNC path as Content Folder, you have to use SCUP locally.</strong></p>
<p>Otherwise, you&rsquo;ll meet error:</p>
<p><span style="color: #3366ff;"><em>Publish: :<strong> </strong>Exception occurred during publishing: Unable to find database configuration value.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </em></span></p>
<p>There is no workaround for this so far. You need either run SCUP locally on the WSUS server or use a local folder as the WSUS Content Folder. You can use WSUS utility tool wsusutil.exe to move the content folder location.</p>]]></content:encoded>
    </item>
    <item>
      <title>System Center Updates Publisher 2011 and Windows Server 2012 R2</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/system-center-updates-publisher-2011-and-windows-server-2012-r2</link>
      <pubDate>Tue, 28 Jan 2014 13:57:52 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2014/01/28/system-center-updates-publisher-2011-and-windows-server-2012-r2/</guid>
      <description><![CDATA[Published on configuration manager team blog as well:...]]></description>
      <content:encoded><![CDATA[<p>Published on configuration manager team blog as well: <a href="https://blogs.technet.com/b/configmgrteam/archive/2013/12/11/system-center-updates-publisher-2011-support-statement-update.aspx">https://blogs.technet.com/b/configmgrteam/archive/2013/12/11/system-center-updates-publisher-2011-support-statement-update.aspx</a></p>
<p>&nbsp;</p>
<p>System Center Updates Publisher 2011 (SCUP) is supported for use on computers with Windows Server 2012 R2 with the following known limitations:</p>
<p>1. Windows Server 2012 R2 includes Windows Server Update Services (WSUS) 4.1. WSUS 4.1 cannot communicate with WSUS 3.0 and WSUS 4.0.&nbsp; If you install System Center Updates Publisher 2011 on a machine with pre-WSUS 4.1 admin console and try to publish to Windows Server 2012 R2 based WSUS Server with WSUS 4.1, you&rsquo;ll get a WSUS version mismatch error in the SCUP log.</p>
<p>This issue doesn&rsquo;t occur when System Center Updates Publisher 2011 is installed on Windows 8.1 for use with a Windows Server 2012 R2 based WSUS server.&nbsp; To install System Center Updates Publisher 2011 on a Windows 8.1 system the Remote Server Administration Tools for Windows 8.1 (RSAT) <a href="https://www.microsoft.com/en-us/download/details.aspx?id=39296"><span style="color: #0000ff;">https://www.microsoft.com/en-us/download/details.aspx?id=39296</span></a> is required.&nbsp; Installation of RSAT 8.1 includes the WSUS 4.1 version of the WSUS admin console binary for Windows 8.1 and allows applications like System Center Updates Publisher 2011 to connect to a Windows Server 2012 R2 based WSUS Server.</p>
<p>2. To allow local administrators to publish updates from System Center Updates Publisher 2011 to Windows Server 2012 R2, you still need the same workaround for Windows Server 2012 as described here: <a href="https://technet.microsoft.com/en-us/library/hh134747.aspx#PublishToServer2012"><span style="color: #0000ff;">https://technet.microsoft.com/en-us/library/hh134747.aspx#PublishToServer2012</span></a></p>
<p>3. The updated version of WSUS for Windows Server 2012 R2 no longer issues self-signed certificates as described here: <a href="https://blogs.technet.com/b/wsus/archive/2013/08/15/wsus-no-longer-issues-self-signed-certificates.aspx"><span style="color: #0000ff;">https://blogs.technet.com/b/wsus/archive/2013/08/15/wsus-no-longer-issues-self-signed-certificates.aspx</span></a></p>
<p>When using System Center Updates Publisher 2011 this change to WSUS affects the &ldquo;Create&rdquo; button for the Signing Certificate group in the Update Server configuration settings (see picture).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/6746.1614_SCUPCert.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/6746.1614_5F00_SCUPCert.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/6746.1614_SCUPCert.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/6746.1614_5F00_SCUPCert.jpg" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>By default because the updated version of WSUS no longer issues self-signed certificates this button will not work.&nbsp; The recommended way to work around this is to use a Certificate Authority to generate the signing certificate. You can refer to this blog for a step-by-step guidance to create a signing certificate with Windows Certificate Authority:&nbsp; <a href="https://blogs.technet.com/b/jasonlewis/archive/2011/07/12/system-center-updates-publisher-signing-certificate-requirements-amp-step-by-step-guide.aspx"><span style="color: #0000ff;">https://blogs.technet.com/b/jasonlewis/archive/2011/07/12/system-center-updates-publisher-signing-certificate-requirements-amp-step-by-step-guide.aspx</span></a>.&nbsp; In addition to this recommended approach there is a way to configure the new version of WSUS to issue self-signed certificates described in the update to the WSUS Product Team blog entry referenced <a href="https://blogs.technet.com/b/wsus/archive/2013/08/15/wsus-no-longer-issues-self-signed-certificates.aspx"><span style="color: #0000ff;">above</span></a>. Once this is configured, the &ldquo;Create&rdquo; button should work as before. However as mentioned the issue of self-signed certificates by WSUS remains a deprecated feature and may be removed in the future.</p>]]></content:encoded>
    </item>
    <item>
      <title>Step by Step: Install Mobile Device Legacy Client in System Center 2012 Configuration Manager</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/step-by-step-install-mobile-device-legacy-client-in-system-center-2012-configuration-manager</link>
      <pubDate>Fri, 06 Sep 2013 15:41:00 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2013/09/06/step-by-step-install-mobile-device-legacy-client-in-system-center-2012-configuration-manager/</guid>
      <description><![CDATA[In System Center 2012 Configuration Manager, there&rsquo;re multiple ways to manage a device:...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri; font-size: small;">In System Center 2012 Configuration Manager, there&rsquo;re multiple ways to manage a device: </span><a href="https://technet.microsoft.com/en-us/library/gg682022.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;">https://technet.microsoft.com/en-us/library/gg682022.aspx</span></a><span style="font-size: small;"><span style="font-family: Calibri;">. In this blog, we will give the detailed step by step guidance on how to install the mobile device legacy client.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In general, there&rsquo;re five steps:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">1.</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Prepare the necessary PKI certificate</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">Follow the link </span><a href="https://technet.microsoft.com/en-us/library/gg699362.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;">https://technet.microsoft.com/en-us/library/gg699362.aspx</span></a><span style="font-size: small;"><span style="font-family: Calibri;"> for the PKI certificate requirements for Management Point, Distribution Point and mobile devices.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">Follow the link </span><a href="https://technet.microsoft.com/en-us/library/gg682023.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;">https://technet.microsoft.com/en-us/library/gg682023.aspx</span></a><span style="font-size: small;"><span style="font-family: Calibri;"> for step by step guidance on deploy the certificate for Management Point, Distribution Point, and mobile device.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">2.</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Configure CA Web Enrollment server to use SSL</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">This is required for CM 2012</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">3.</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Enable Device Management Point and Configure Distribution Point on CM Site Server</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">4.</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Prepare client installation files</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">5.</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Transfer the installation files to device and start install</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Now we will give the details on step 3 &amp; 4.</span></span></p>
<h2><span style="font-family: Cambria; font-size: large;">Enable Device Management P</span><span style="font-size: large;"><span style="font-family: Cambria;">oint (DMP)</span></span></h2>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Open SCCM Admin Console, and go to Administration \ Overview \ Site Operations \ Servers and Site Systems roles. In the Site System Roles panel, right click &ldquo;Management Point&rdquo;, and choose &ldquo;Allow mobile devices to use this management point&rdquo;. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span><span style="font-size: small;"><span style="font-family: Calibri;">To verify DMP is installed successfully, you can either check the DMPSetup.log or use self-test URL: <strong><a href="https://%3csitesername%3e/devicemgmt?selftest"><span style="color: #0000ff;">https://&lt;siteserName&gt;/devicemgmt?selftest</span></a></strong></span></span></p>
<p align="left">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/4666.dmp.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/4666.dmp.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/4666.dmp.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/4666.dmp.png" alt="" border="0" /></a></p>
<h2><span style="font-family: Cambria; font-size: large;">Configure Distribution Point (DP) with HTTPS</span></h2>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Open SCCM Admin Console, and go to Administration \ Overview \ Site Operations \ Servers and Site Systems roles. In the Site System Roles panel, right click &ldquo;Distribution Point&rdquo;, in the &ldquo;General&rdquo; Panel, select &ldquo;Allow intranet and Internet connections&rdquo;</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<h1><span style="font-family: Calibri;">Prepare Client Installation Files </span></h1>
<p><span style="font-size: small;"><span style="font-family: Calibri;">To install mobile device legacy client, we need to prepare for the installation files. Each device platform has its own specific installation files. Generally, for all the platforms, they will need 7 files: </span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">EXE File to start the setup &ndash; dmclientsetup_$(arch).exe</span></span></li>
</ul>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">The file is located under </span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">%SCCM_Installed_Dir%\DeviceClientDeployment\ClientTransfer\00000409. </span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">EXE File to enroll the client authentication certificate &ndash; enroll_$(arch).exe</span></span></li>
</ul>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">The file is located under </span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">%SCCM_Installed_Dir%\DeviceClientDeployment\ClientTransfer\00000409. </span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;"><span style="background-color: #ffff00;">Re-name is required</span>. Please rename the file to &ldquo;enroll.exe&rdquo;.</span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">CAB File to install the client &ndash; deviceclient_$(platform)_$(arch).cab</span></span></li>
</ul>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">The file is located under </span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">%SCCM_Installed_Dir%\DeviceClientDeployment\ClientTransfer\00000409. </span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">Don&rsquo;t rename this file. It will fail to install if the file names changes.</span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">INI configuration file &ndash; clientsettings.ini</span></span></li>
</ul>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">The sample setting file is located under </span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">%SCCM_Installed_Dir%\DeviceClientDeployment\ClientTransfer\. </span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">Don&rsquo;t rename this file.</span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">In the ClientSettings.ini, we need configure below settings before kick-off the installation. </span></span></p>
<table style="padding-left: 30px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="186">
<p><strong><span style="font-size: small;"><span style="font-family: Calibri;">Setting name</span></span></strong></p>
</td>
<td valign="top" width="524">
<p><strong><span style="font-size: small;"><span style="font-family: Calibri;">How to configure</span></span></strong></p>
</td>
</tr>
<tr>
<td valign="top" width="186">
<p align="left"><strong><span style="font-size: small;"><span style="font-family: Calibri;">CertEnrollServer</span></span></strong></p>
</td>
<td valign="top" width="524">
<p><span style="font-size: small;"><span style="font-family: Calibri;">FQDN of the machine which hosts the CA. </span></span></p>
</td>
</tr>
<tr>
<td valign="top" width="186">
<p align="left"><strong><span style="font-size: small;"><span style="font-family: Calibri;">DMServerName</span></span></strong></p>
</td>
<td valign="top" width="524">
<p><span style="font-size: small;"><span style="font-family: Calibri;">FQDN of the machine which hosts the DMP site system role</span></span></p>
</td>
</tr>
<tr>
<td valign="top" width="186">
<p align="left"><strong><span style="font-size: small;"><span style="font-family: Calibri;">SiteCode</span></span></strong></p>
</td>
<td valign="top" width="524">
<p><span style="font-size: small;"><span style="font-family: Calibri;">Site code the primary site which DMP belongs to. </span></span></p>
</td>
</tr>
<tr>
<td valign="top" width="186">
<p align="left"><strong><span style="font-size: small;"><span style="font-family: Calibri;">FSPServerName</span></span></strong></p>
</td>
<td valign="top" width="524">
<p><span style="font-size: small;"><span style="font-family: Calibri;">FQDN of the machine which hosts the FSP site system role. If your site has no FSP, please ignore this setting</span></span></p>
</td>
</tr>
<tr>
<td valign="top" width="186">
<p align="left"><strong><span style="font-size: small;"><span style="font-family: Calibri;">SMSPublicRootKey</span></span></strong></p>
</td>
<td valign="top" width="524">
<p><span style="font-size: small;"><span style="font-family: Calibri;">You can get the key from file </span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">%SCCM_Installed_Dir%\bin\i386\MobileClient.tcf (open the file with notepad) </span></span></p>
</td>
</tr>
</tbody>
</table>
<p style="padding-left: 30px;"><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">CA&rsquo;s root certificate to trust all the certificates this CA issues.</span></span></li>
</ul>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Site Server Signing Certificate(SSSC.cer)---The site server cert. It's under SMS in the computer cert store and has subject name hard coded to "Site Server"</span></span></li>
</ul>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">MPCERT.cer---The Web Server certificate of the DMP machine</span></span></li>
</ul>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">After file preparation, we will have 7 files for each platform. Let&rsquo;s take WinCE 6.0 for example, and assuming the CE machine is ARM. We will have below files. </span></span></p>
<ol>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Dmclientsetup_arm.exe</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Enroll.exe (renamed from enroll_arm.exe)</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Deviceclient_wince6.0_arm.cab</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Clientsettings.ini</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Root.cer</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">SSSC.cer</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">MPCERT.cer</span></span></li>
</ol>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Now to install client agent becomes easier. </span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Copy files to the device</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Kick off the process dmclientsetup_arm.exe</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Log files are located at CE machine&rsquo;s \Temp\ folder. If the installation failed, please check the network connectivity between CE machine and CA, between CE machine and DMP. </span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">--Nina Qin</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Guidance on install anti-malware platform updates for FEP 2010 SU1 and SCEP 2012 SP1</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/guidance-on-install-anti-malware-platform-updates-for-fep-2010-su1-and-scep-2012-sp1</link>
      <pubDate>Wed, 14 Aug 2013 14:41:00 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2013/08/14/guidance-on-install-anti-malware-platform-updates-for-fep-2010-su1-and-scep-2012-sp1/</guid>
      <description><![CDATA[&lt;updated on 9/18/2013 to update the latest anti-malware platform update link&gt;
Configuration...]]></description>
      <content:encoded><![CDATA[<div>
<p><span style="font-size: small;"><span style="font-family: Calibri;">&lt;updated on 9/18/2013 to update the latest anti-malware platform update link&gt;</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Configuration Team has released anti-malware platform update for FEP 2010 SU1 and SCEP 2012 SP1 CU2:</span></span></p>
</div>
<p><a href="https://support.microsoft.com/kb/2865173">https://support.microsoft.com/kb/2865173</a></p>
<p>&nbsp;</p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">These updates are server side hotfixes and should be installed on the Configuration Manager Site servers. After you install the updates, you will need to do some operations on the site to make the CCM clients automatically install the anti-malware platform update. In this blog, I will show what you should do. </span></span></p>
<p><strong><span style="font-size: small;"><span style="font-family: Calibri;">FEP 2010 SU1</span></span></strong></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">After you install the update on FEP 2010 SU1 (KB282764), you will need to create a new FEP client installation deployment or re-advertise the old one.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">If you doesn&rsquo;t have an FEP client installation deployment created, you can following the link </span><a href="https://technet.microsoft.com/en-us/library/ff823885.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;">https://technet.microsoft.com/en-us/library/ff823885.aspx</span></a><span style="font-size: small;"><span style="font-family: Calibri;"> to deploy the FEP client software.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">If you have already an FEP client installation deployment created, you can re-use the deployment. Go to <strong>advertisements</strong> node and you can see the FEP-Deployment advertisement and then click <strong>Re-run Advertisement</strong>. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/6747.1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/6747.1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/6747.1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/6747.1.png" alt="" border="0" /></a></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Wait till the client receives the policy changes and install the latest FEP client software. </span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">It takes time for the client to update to the latest FEP client software. During the intermittent, these computers will be moved out of the Deployment Succeeded collection and be temporally moved to other collections (depending on the previous status of these clients, the computers may be move to any collections, but most likely they will be moved into &ldquo;Deployment Pending&rdquo; collection). Once the install succeeds and the next hardware inventory cycle returns back the new inventory data, these computers will be moved back to the &ldquo;Deployment Succeeded&rdquo; collection.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<p><strong><span style="font-size: small;"><span style="font-family: Calibri;">SCEP 2012 SP1</span></span></strong></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">After you install the SCEP hotfix, you will need to enable Automatic Client Upgrade.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Automatic Client Upgrade is new feature introduced in SCCM 2012 SP1. It can be used in the following scenarios:</span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">The client version is lower that the version being used in the hierarchy.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">The client on the central administration site has a language pack installed and the existing client does not.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">A client prerequisite in the hierarchy is a different version than the one installed on the client.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">One or more of the client installation files are a different version.</span></span></li>
</ul>
<p><span style="font-size: small;"><span style="font-family: Calibri;">As SCEP client software is one of CCM client&rsquo;s prerequisite, so we can leverage this new feature here.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">To enable the client auto upgrade </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">1)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: Calibri;">&nbsp;<span style="font-size: small;">In the Configuration Manager console, click <strong>Administration</strong>.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">2)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">In the <strong>Administration</strong> workspace, click <strong>Site Configuration</strong>.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">3)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Click <strong>Sites</strong>.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">4)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">On the <strong>Home</strong> tab, in the <strong>Properties</strong> group, click <strong>Hierarchy Settings</strong>.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">5)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Enable <strong>Upgrade client automatically when new client updates are available</strong> </span></span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/22220.2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/22220.2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/22220.2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/22220.2.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">After that, CCM client will find that there is a new SCEP client software available and install it automatically. Depending on the policy retrieval interval and the setting of &ldquo;Automatically upgrade client within days&rdquo;, it could be from 4 hours to several days.</span></span></p>
<p>&nbsp;</p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">--Nina Qin</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Manage Configuration Manager 2012 Cumulate Update (CU)</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/manage-configuration-manager-2012-cumulate-update-cu</link>
      <pubDate>Wed, 24 Apr 2013 16:39:10 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2013/04/24/manage-configuration-manager-2012-cumulate-update-cu/</guid>
      <description><![CDATA[Configuration Manager 2012&nbsp;introduced the Cumulate Update (CU) model for servicing. As you can...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: Calibri;">Configuration Manager 2012&nbsp;introduced the Cumulate Update (CU) model for servicing. As you can see, the CU installation executive is a little different from the one of Configuration Manager 2007 updates. For example:</span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">CU will not update the Admin Console even though it&rsquo;s on the same machine</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">CU will generate catalog to be consumed in SCUP 2011.</span></span></li>
</ul>
<p><span style="font-size: small;"><span style="font-family: Calibri;">One thing many people confuse is that they think of CU as a service pack. Actually, CU is lighter than a service pack. You can think of CU as a bigger update that contains more bug fixes and affects more files than normal hotfix. So it doesn&rsquo;t increase all the file versions or change the version in registry key as a service pack would do. </span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In this blog, I will take SCCM 2012 SP1 CU1 (KB2817245) as an example; show what you would expect to see and what you would not see after installing the update.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">There&rsquo;re three steps to upgrade your whole Configuration Manager 2012 SP1 infrastructure to CU1 level:</span></span></p>
<ol>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Install update on all sites: you need to install CU on all sites: Central Administrative Sites (CAS), Primary Sites, Secondary Sites and Providers.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Install update on all admin consoles</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Install update on all clients</span></span></li>
</ol>
<p><strong><span style="font-size: small;"><span style="font-family: Calibri;">Step 1&nbsp;&nbsp; Install hotfix on all sites.</span></span></strong></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">First, run the CU installation wizard on CAS or your single primary site. If you choose all the defaults, it will help you update the database and create the software distribution packages for SMS Site Server, Admin Consoles and Clients. You can choose to update the database later (run &lt;SMS Installation Folder&gt;\Hotfix\KB2817245\update.sql) or create the software distribution packages later. But it&rsquo;s more convenient for the installation wizard to do all the work for you. &nbsp;To troubleshoot, you can check the CU1 installation log under c:\windows\temp.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Now to upgrade all the other sites and providers, you can deploy the SP1 Cumulative update 1 &ndash; server update &ndash; XXX to all the primary sites, secondary sites and providers. Or, you can just run the installation executive on those machines.</span></span></p>
<p><em><span style="text-decoration: underline;"><span style="font-size: small;"><span style="font-family: Calibri;">To verify installation status, you can go to the following places to check:</span></span></span></em></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In Control Panel -&gt; Programs and Features -&gt; Installed Updates</span></span></p>
<p></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In SMS installation folder, you&rsquo;ll see a folder contains the updates for admin console, clients and the sql script:</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/1768.2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/1768.2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/1768.2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/1768.2.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Under &lt;SMS installation folder&gt;\bin\x64, some files are upgraded to 5.0.7804.1202. That is the version for CU1.</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/8321.3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/8321.3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/8321.3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/8321.3.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Open the Configuration Manager Console, the four packages are created under Packages-&gt; Configuration Manager Updates.</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/2112.4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/2112.4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/2112.4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/2112.4.png" alt="" width="371" height="92" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Note: You cannot upgrade Secondary Site by click the Upgrade in UI or see the version change in registry key or in database. As is stated before, CU is lighter than Service Pack. It&rsquo;s not a major upgrade.</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/3566.5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/3566.5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/3566.5.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/3566.5.png" alt="" width="261" height="262" border="0" /></a></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/0068.6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/0068.6.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/0068.6.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/0068.6.png" alt="" border="0" /></a></p>
<p><strong><span style="font-size: small;"><span style="font-family: Calibri;">Step 2 Install hotfix on all admin consoles.</span></span></strong></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">You can use the packages created above to deploy admin console update to all admin consoles, or you can just run the configmgr2012adminui-sp1-kb2817245-i386.msp from the folder &lt;SMS Installation folder&gt;\hotfix\ KB2817245\AdminConsole\i386.</span></span></p>
<p><em><span style="text-decoration: underline;"><span style="font-size: small;"><span style="font-family: Calibri;">To verify installation status, you can go to the following places to check:</span></span></span></em></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In Control Panel -&gt; Programs and Features -&gt; Installed Updates</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/8780.7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/8780.7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/8780.7.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/8780.7.png" alt="" width="389" height="45" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Under &lt;SMS installation folder&gt;\AdminConsole\bin, some files will be upgraded to version 5.0.7804.1202. It&rsquo;s the version of CU1.</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/1050.8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/1050.8.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/1050.8.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/1050.8.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In Configuration Manager Console -&gt; About</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/6330.9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/6330.9.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/6330.9.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/6330.9.png" alt="" width="293" height="382" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><strong>Note: install the hotfix on a site server with admin console will not automatically upgrade the admin console.</strong> If you install the site update but don&rsquo;t install the admin console update, you&rsquo;ll still see 5.0.7804.1000 here. And you will not see some admin console fixes.</span></span></p>
<p><strong><span style="font-size: small;"><span style="font-family: Calibri;">Step 3 Install hotfix on all clients.</span></span></strong></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">You have three options:</span></span></p>
<ol>
<li><span style="font-size: small;"><span style="font-family: Calibri;">With SCUP: The installation wizard will help generate the SCUP catalog for each update: defining the installable rules and installed rules. You can use SCUP 2011 to import and publish the update to WSUS and deploy it to CM client through Software Update Manager feature.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Software Distribution: The installation wizard will help generate two client update packages: one for 32-bit client and one for 64-bit client.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Manually run the client hotfix on the client. You can find the update under &lt;SMS Installation Folder&gt;\hotfix\KB2817245\Client</span></span></li>
</ol>
<p><em><span style="text-decoration: underline;"><span style="font-size: small;"><span style="font-family: Calibri;">To verify installation status, you can go to the following places to check:</span></span></span></em></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Under CCM Client folder, some files will be upgraded to 5.0.7804.1202. It&rsquo;s the CU1 build number.</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/7776.10.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/7776.10.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/7776.10.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/7776.10.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In Control Panel -&gt; Configuration Manager -&gt; Components, some component version will be updated:</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/2744.11.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/2744.11.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/2744.11.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/2744.11.png" alt="" width="323" height="381" border="0" /></a></p>
<p><strong><span style="font-size: small;"><span style="font-family: Calibri;">Note: You cannot upgrade the client by enabling the &ldquo;Automatic Client Upgrade&rdquo;. That feature is for major version of CM client upgrade and prerequisite upgrade: for example you can upgrade your CM07 &amp; CM2012 RTM client to SP1 version with this feature enabled; or you can upgrade you end point protection client to the latest version. But this feature will not install hotfix/update to the client.</span></span></strong></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/4744.12.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/4744.12.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/4744.12.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/4744.12.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">A summary of what you need to remember: CU is an update not a service pack level change. You need to install admin console update even if it&rsquo;s on the same machine with the site server.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Sample Script to Update FEP Service Policy</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/sample-script-to-update-fep-service-policy</link>
      <pubDate>Tue, 19 Mar 2013 10:16:41 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2013/03/19/sample-script-to-update-fep-service-policy/</guid>
      <description><![CDATA[Very occasionally, you may found that an FEP policy called &ldquo;FEP Service policy&rdquo; gets...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: Calibri;">Very occasionally, you may found that an FEP policy called &ldquo;FEP Service policy&rdquo; gets applied instead of the policy with highest precedence.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">&ldquo;FEP Service Policy&rdquo; is an undocumented policy. &ldquo;FEP Service Policy&rdquo; is not created by default when you install FEP 2010 (with or without Update Rollup 1). It is created when the last FEP policy associated with one collection is deleted. The purpose of this policy is to make sure FEP clients always have one policy applied.&nbsp;&nbsp;Upon FEP policy modification, the old advertisements/assignments related to that policy will be deleted and a new advertisement/assignment will be created. If there&rsquo;s a delay between the deletion and the creation of the assignment on the CM/FEP clients, these clients will end up applying the &ldquo;FEP Service Policy&rdquo;.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In most cases, applying &ldquo;FEP Service Policy&rdquo; accidently is fine. As the correct FEP policy will be applied at the next cycle. But some customers may find it unacceptable as it means they lose control on their clients at the intermit time. Because they don&rsquo;t have control on &ldquo;FEP Service Policy&rdquo; as it&rsquo;s not shown on UI and they cannot update it. For these customers, I wrote the following script for them to configure the &ldquo;FEP Service Policy&rdquo;.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">The usage of this script is to:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">1)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Run FEPServicePolicy.vbs export FEPServicePolicy.xml to export the policy file</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">2)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Update FEPServicePolicy.xml as needed.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">3)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Run FEPServicePolicy.vbs import FEPServicePolicy.xml to import the updated policy file.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">If the script shows there&rsquo;s no &ldquo;FEP Service Policy&rdquo;, you can trigger the creation of &ldquo;FEP Service Policy&rdquo; by:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">1)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Create a fake collection</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">2)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Create a FEP Policy and assign to that collection.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">3)</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Delete that policy.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;Sample Scripts:</span></p>
<p><span style="font-family: Calibri;">'Usage: FEPServicePolicy &lt;export|import&gt; &lt;policyfilename&gt;</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">'Parse Parameters</span></p>
<p><span style="font-family: Calibri;">if (WScript.arguments.count&lt;&gt;2) then</span></p>
<p><span style="font-family: Calibri;">&nbsp;Wscript.echo "Usage: FEPServicePolicy &lt;export|import&gt; &lt;policyfilename&gt;"</span></p>
<p><span style="font-family: Calibri;">&nbsp;wscript.quit</span></p>
<p><span style="font-family: Calibri;">end if</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">Command = Wscript.arguments(0)</span></p>
<p><span style="font-family: Calibri;">FileName = Wscript.arguments(1)</span></p>
<p><span style="font-family: Calibri;">ProgramName = "FEP Service Policy"</span></p>
<p><span style="font-family: Calibri;">Dim PackageID</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">Wscript.Echo "Impurt Parameters: " &amp; Command &amp; " " &amp; FileName</span></p>
<p><span style="font-family: Calibri;">Wscript.Echo "Connecting to SMS WMI namespace.."</span></p>
<p><span style="font-family: Calibri;">Set Conn = Connect</span></p>
<p><span style="font-family: Calibri;">Wscript.Echo "Getting the PackageID for the FEP Service Policy Program"</span></p>
<p><span style="font-family: Calibri;">Set Programs = Conn.ExecQuery("select * from SMS_Program where ProgramName='FEP Service Policy'")</span></p>
<p><span style="font-family: Calibri;">if Programs.Count &lt;&gt; 1 Then</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp; Wscript.Echo "FEO Service Policy not found or instances are more than 1. Fatal Error, quit."</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp; Wscript.quit</span></p>
<p><span style="font-family: Calibri;">End If</span></p>
<p><span style="font-family: Calibri;">For Each objItem In Programs</span></p>
<p><span style="font-family: Calibri;">&nbsp; PackageID = objItem.PackageID</span></p>
<p><span style="font-family: Calibri;">&nbsp; Wscript.Echo "Found Program. PackageID = " &amp; PackageID</span></p>
<p><span style="font-family: Calibri;">Next</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">if&nbsp; Command = "export" Then</span></p>
<p><span style="font-family: Calibri;">&nbsp;Wscript.Echo "Export the existing FEP service Policy"</span></p>
<p><span style="font-family: Calibri;">&nbsp;Export Conn, FileName</span></p>
<p><span style="font-family: Calibri;">&nbsp;Wscript.quit</span></p>
<p><span style="font-family: Calibri;">end if</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">If Command = "import" Then</span></p>
<p><span style="font-family: Calibri;">&nbsp;Wscript.Echo "Import the FEP service Policy from file " &amp; FileName</span></p>
<p><span style="font-family: Calibri;">&nbsp;Import Conn, FileName</span></p>
<p><span style="font-family: Calibri;">&nbsp;Wscript.quit</span></p>
<p><span style="font-family: Calibri;">end if</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">Function Export(connection, exportFileName)</span></p>
<p><span style="font-family: Calibri;">&nbsp; Dim oFilesys, oFileLog, sFilename, sPath </span></p>
<p><span style="font-family: Calibri;">&nbsp; Set oFilesys = CreateObject("Scripting.FileSystemObject") </span></p>
<p><span style="font-family: Calibri;">&nbsp; Set oFiletxt = oFilesys.CreateTextFile(exportFileName, True) </span></p>
<p><span style="font-family: Calibri;">&nbsp; Set FEPServicePolicyProgram = connection.Get("SMS_Program.PackageID='" &amp; PackageID &amp; "',ProgramName='" &amp; ProgramName &amp; "'")</span></p>
<p><span style="font-family: Calibri;">&nbsp; hexarray = FEPServicePolicyProgram.ISVData</span></p>
<p><span style="font-family: Calibri;">&nbsp; 'wscript.echo UBound(hexarray)</span></p>
<p><span style="font-family: Calibri;">&nbsp; For i = 0 To UBound(hexarray)</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; 'oFiletxt.Write(HexToString(HEX(hexarray(i))))</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; oFiletxt.Write(Chr("&amp;h" &amp; (HEX(hexarray(i)))))</span></p>
<p><span style="font-family: Calibri;">&nbsp; Next</span></p>
<p><span style="font-family: Calibri;">&nbsp; oFiletxt.Close</span></p>
<p><span style="font-family: Calibri;">&nbsp; Wscript.Echo "Export succeed"</span></p>
<p><span style="font-family: Calibri;">End Function</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">Function Import(connection, importFileName)</span></p>
<p><span style="font-family: Calibri;">&nbsp; Dim oFilesys, oFileLog, sFilename, sPath </span></p>
<p><span style="font-family: Calibri;">&nbsp; Set oFilesys = CreateObject("Scripting.FileSystemObject") </span></p>
<p><span style="font-family: Calibri;">&nbsp; Set oFilereader = oFilesys.OpenTextFile(importFileName,1,False) </span></p>
<p><span style="font-family: Calibri;">&nbsp; contents = oFilereader.ReadAll</span></p>
<p><span style="font-family: Calibri;">&nbsp; Length = Len(contents)</span></p>
<p><span style="font-family: Calibri;">&nbsp; 'Wscript.Echo Length</span></p>
<p><span style="font-family: Calibri;">&nbsp; dim hexarray()</span></p>
<p><span style="font-family: Calibri;">&nbsp; ReDim hexarray(Length)</span></p>
<p><span style="font-family: Calibri;">&nbsp; For i = 1 To Length</span></p>
<p><span style="font-family: Calibri;">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sub_string = Mid(contents,i,1)</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'hexarray(i-1) = CInt("&amp;h" &amp; StringToHex(sub_string))</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hexarray(i-1) = CInt("&amp;h" &amp; Hex(Asc(sub_string)))</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Wscript.Echo hexarray(i-1)</span></p>
<p><span style="font-family: Calibri;">&nbsp; Next</span></p>
<p><span style="font-family: Calibri;">&nbsp; Set FEPServicePolicyProgram = connection.Get("SMS_Program.PackageID='" &amp; PackageID &amp; "',ProgramName='" &amp; ProgramName &amp; "'")</span></p>
<p><span style="font-family: Calibri;">&nbsp; FEPServicePolicyProgram.ISVData=hexarray</span></p>
<p><span style="font-family: Calibri;">&nbsp; FEPServicePolicyProgram.Put_</span></p>
<p><span style="font-family: Calibri;">&nbsp; oFilereader.Close</span></p>
<p><span style="font-family: Calibri;">&nbsp; WScript.Echo "Import succeed"</span></p>
<p><span style="font-family: Calibri;">End Function</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">Function Connect()</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; On Error Resume Next</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Dim net</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Dim localConnection</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Dim swbemLocator</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Dim swbemServices</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Dim providerLoc</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Dim location</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; ' Connect to the server.</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Set swbemServices= swbemLocator.ConnectServer(".", "root\sms")</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; If Err.Number&lt;&gt;0 Then</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Wscript.Echo "Couldn't connect: " + Err.Description</span></p>
<p><span style="font-family: Calibri;">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connect = null</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; ' Determine where the provider is and connect.</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Set providerLoc = swbemServices.InstancesOf("SMS_ProviderLocation")</span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Each location In providerLoc</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If location.ProviderForLocalSite = True Then</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set swbemServices = swbemLocator.ConnectServer(location.Machine, "root\sms\site_" + location.SiteCode)</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Err.Number&lt;&gt;0 Then</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Wscript.Echo "Couldn't connect:" + Err.Description</span></p>
<p><span style="font-family: Calibri;">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connect = Null</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set Connect = swbemServices</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Wscript.Echo "Successfully comment to root\sms\site_" &amp; location.SiteCode</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="font-family: Calibri;">&nbsp;&nbsp;&nbsp; Set Connect = null ' Failed to connect.</span></p>
<p><span style="font-family: Calibri;">End Function</span></p>
<p><span style="font-family: Calibri; font-size: small;">-- This script is provided AS IS. Please test it out before apply to production.</span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>System Center Update Publisher 2011 and Windows Server 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/system-center-update-publisher-2011-and-windows-server-2012</link>
      <pubDate>Fri, 30 Nov 2012 10:10:00 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2012/11/30/system-center-update-publisher-2011-and-windows-server-2012/</guid>
      <description><![CDATA[Windows Server 2012 is released recently. System Center Update Publisher 2011 can work well on...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: Calibri;">Windows Server 2012 is released recently. System Center Update Publisher 2011 can work well on Windows Server 2012 except for the following known issues:</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">1. On Windows Server 2012, the WSUS version is 4.0. While on all other OSes, you can only install WSUS 3.0 (with or without service pack). WSUS 3.0 &amp; WSUS 4.0 cannot communicate with each other. So if you install SCUP on a machine with WSUS 3.0 admin console and try to publish to Windows Server 2012 with WSUS 4.0, you&rsquo;ll get a WSUS version mismatch error in the SCUP log. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">You can, however, install SCUP 2011 on Windows 8 and publish to the WSUS on Windows Server 2012. You need to install Remote Server Administration Tools for Win 8 </span><a href="https://www.microsoft.com/en-us/download/details.aspx?id=28972"><span style="font-family: Calibri; font-size: small;">https://www.microsoft.com/en-us/download/details.aspx?id=28972</span></a><span style="font-size: small;"><span style="font-family: Calibri;"> on Windows 8 machine. It will install the WSUS 4.0 version of the WSUS admin console binary on Win 8. And with that, you can talk with WSUS 4.0 on Windows Server 2012.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">2. Low right user scenario is broken currently on Windows Server 2012. Normally, the user should only be in the WSUS administrative group to publish updates successfully. But the user to use and publish update to Windows Server 2012 must be a member of the local administrator.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Workaround for this: (do the followings on the Windows Server 2012)</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">(1)</span>&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Change the ownership of HKEY_CLASSES_ROOT\AppID\{8F5D3447-9CCE-455C-BAEF-55D42420143B} to Administrators</span></span></p>
<p><a href="https://technet.microsoft.com/en-us/library/cc786173(v=WS.10).aspx"><span style="font-family: Calibri; color: #0000ff; font-size: small;">https://technet.microsoft.com/en-us/library/cc786173(v=WS.10).aspx</span></a></p>
<p><span style="font-family: Calibri; font-size: small;">(2)</span>&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Change the permission on that key. Make sure Administrators and System have full control on that.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">(3)</span>&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">launch Dcomcnfg.exe in elevated mode. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">(4)</span>&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Select &ldquo;Component Services&rdquo;</span>&agrave;<span style="font-family: Calibri;">Computer</span>&agrave;<span style="font-family: Calibri;">My Computer</span>&agrave;<span style="font-family: Calibri;">&rdquo;Dcom Config&rdquo;</span>&agrave;<span style="font-family: Calibri;">WSusCertServer. Right Click and select &ldquo;Properties&rdquo;. </span></span></p>
<p><span style="font-family: Calibri; font-size: small;">(5)</span>&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">&ldquo;WSusCertServer Properties&rdquo; dialog will show up. Switch to&ldquo;Security tab&rdquo;</span></span></p>
<p><span style="font-family: Calibri; font-size: small;">(6)</span>&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: Calibri;">Set &ldquo;Launch and Activation Permissions&rdquo; and &ldquo;Access Permissions&rdquo; like the following</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/5074.set1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/5074.set1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/5074.set1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/5074.set1.png" alt="" width="227" height="274" border="0" /></a>&nbsp;&nbsp; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/7674.set2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/7674.set2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/40/18/7674.set2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-18/7674.set2.png" alt="" width="236" height="273" border="0" /></a></span></span></p>
<p>(7)&nbsp;&nbsp;&nbsp;&nbsp;restart WSusCertServer (net stop/net start)</p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;Hope you enjoy using SCUP 2011 with Windows Server 2012.</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Script to Clean expired updates from update lists, packages and deployments</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/script-to-clean-expired-updates-from-update-lists-packages-and-deployments</link>
      <pubDate>Mon, 15 Oct 2012 13:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2012/10/15/script-to-clean-expired-updates-from-update-lists-packages-and-deployments/</guid>
      <description><![CDATA[&lt;---My college Kurt has pointed out to me that the code snip to trigger the update...]]></description>
      <content:encoded><![CDATA[<p>&lt;---My college Kurt has pointed out to me that the code snip to trigger the update synchronization has some problem. So I remove that. As a workaround, you can trigger a full update synchronization from the UI--&gt;</p>
<p>&nbsp;</p>
<p>If you use Software Update Point (SUP) in a System Center Configuration Manager 2007 hierarchy, you may face the problem of expired updates.</p>
<p>Consider the following scenario:</p>
<p>Updates are saved in the SMS database as CIs (Configuration Items). All CIs will flow downward to the child sites in the hierarchy.</p>
<p>If the updates are expired, the CI will also be marked as expired. Each site (central or child primary) has the Delete Aged Configuration Manager Data job that removes CIs that have been expired for 90 days (by default) which are not locally referenced. -- <em>&ldquo;Locally referenced&rdquo; means it&rsquo;s not used in any Update Lists created by this site.</em></p>
<p>So if you create Update Lists on the child site which contains a CI (Update) that has been expired, the CI is not removed from the child site since it is referenced by an local Update List; But the CI is removed from the parent site by the &ldquo;Delete Aged Configuration Manager Data&rdquo; job because Update Lists don&rsquo;t flow up to the parent site.</p>
<p>Now if there is a new third tier primary site (a grandchild site), its SUP <strong>WILL NOT</strong> get this CI from the central site&rsquo;s SUP because it has already been removed from the top-most SUP. Its SUP <strong>WILL</strong> get the Update List which contains the expired CI from its parent site. So the new grandchild site will fail to process this Update List that reference the now-missing CI.</p>
<p>To solve this problem, we have written a script that can clear expired updates from the Update Lists, Update Deployment and Update Packages. As a best practice, we&rsquo;d suggest to clear up the expired updates and in a one day schedule:</p>
<ul>
<li>Set the update cleanup age to 1 day. Site Settings-&gt;Site Maintenance-&gt;Tasks-&gt; Delete Aged Configuration Manager Data Properties-&gt;Set Delete data older than (days): to 1</li>
<li>Run the attached script on the site where you create Update Lists every day. You can use Windows Task Schedule to do it.</li>
</ul>
<p>Here comes the sample script:</p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Dim Debugging&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'If debug logging is enabled</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Dim connection &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'the Service Object</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Dim context&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'SMS WMI context</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Dim SMSSiteCode&nbsp;&nbsp;&nbsp; 'The site code of the site that we peform clear up</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Dim SMSServer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'The machine name of the site server</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Dim SMSProvider&nbsp;&nbsp;&nbsp;&nbsp; 'The machine name of the provider</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Dim UserName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'username used to connect to the remote server</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Dim Password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Password used to connect to the remote server</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">DebugLogging = false</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Set objArgs = WScript.Arguments</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">call ParseParameters(objArgs)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Log("SMSServer: "&amp;SMSServer)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Log("UserName: "&amp;UserName)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Log("Password: "&amp;Password)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Set context = CreateObject("WbemScripting.SWbemNamedValueSet")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">' Add the standard SMS context qualifiers to the context object.</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">context.Add "LocaleID", "MS\1033"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">context.Add "MachineName", SMSServer</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">context.Add "ApplicationName", "ClearExpiredUpdates"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Set connection = Connect(SMSServer,UserName,Password)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">If Err.Number&lt;&gt;0 Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Wscript.Echo "Call to connect failed"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">'collect all expired CIs </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">'save to Variable - ExpiredCIs</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Query = "SELECT * FROM SMS_SoftwareUpdate " &amp; _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "WHERE IsExpired='TRUE'"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Set ExpiredCIs = connection.ExecQuery(Query, ,wbemFlagForwardOnly Or wbemFlagReturnImmediately, Context)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Log("Expired CI IDs: ")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">For each ExpiredCI in ExpiredCIs </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Log(ExpiredCI.CI_ID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">'Remove from UpdateList</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">call RemoveExpiredUpdatesFromUpdateList(connection,context,SMSSiteCode,ExpiredCIs)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">'Remove from Deployment</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">call RemoveExpiredUpdatesFromDeploymens(connection,context,SMSSiteCode,ExpiredCIs)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">'Remove Expired updates' content from the packages</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">call RemoveExpiredUpdatesContent(connection,context,SMSSiteCode,ExpiredCIs)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">If Err.Number&lt;&gt;0 Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; WScript.Echo "Clear Failed"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Else</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; WScript.Echo "Clear Successfully, please trigger a Full Update Synchronization"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">WScript.Quit</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Function Connect(server, userName, userPassword)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Dim net</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Dim localConnection</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Dim swbemLocator</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Dim swbemServices</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Dim providerLoc</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Dim location</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; swbemLocator.Security_.AuthenticationLevel = 6 'Packet Privacy</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; ' If&nbsp; the server is local, don't supply credentials.</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Set net = CreateObject("WScript.NetWork") </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; If server = "." Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localConnection = true</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userName = ""</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userPassword = ""</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server = "."</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Connecting to local machine...")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Else</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Connect to remote machine: "&amp;server&amp;"...")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; ' Connect to the server.</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Set swbemServices= swbemLocator.ConnectServer _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (server, "root\sms",userName,userPassword)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; If Err.Number&lt;&gt;0 Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Wscript.Echo "Couldn't connect: " + Err.Description</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect = null</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Log("Connected successfully")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; ' Determine where the provider is and connect.</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Set providerLoc = swbemServices.InstancesOf("SMS_ProviderLocation")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Each location In providerLoc</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMSProvider = location.Machine</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SMSSiteCode = location.SiteCode</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If UCase(net.ComputerName) = UCase(SMSProvider) Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMSProvider = "."</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userName = ""</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userPassword = ""</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("SMSProvider: "&amp;SMSProvider)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("SMSSiteCode: "&amp;SMSSiteCode)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set swbemServices = swbemLocator.ConnectServer _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SMSProvider, "root\sms\site_" + _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMSSiteCode,userName,userPassword)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Err.Number&lt;&gt;0 Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Wscript.Echo "Couldn't connect:" + Err.Description</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect = Null</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Connected to provider")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set Connect = swbemServices</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Function</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Set Connect = null ' Failed to connect.</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End Function</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Sub ParseParameters(Parameters)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; For each objArg in Parameters</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CorrectParametersSofar = false</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objArgShort = left(objArg,2)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If objArgShort = "-d" Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DebugLogging = true</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CorrectParametersSofar = true</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If objArgShort = "-l" Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMSServer = "."</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserName = ""</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password = ""</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CorrectParametersSofar = true</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If objArgShort = "-r" Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMSServer = Right(objArg,Len(objArg)-3)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CorrectParametersSofar = true</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If objArgShort = "-u" Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserName = Right(objArg,Len(objArg)-3)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CorrectParametersSofar = true</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If objArgShort = "-p" Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password = Right(objArg,Len(objArg)-3)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CorrectParametersSofar = true</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If CorrectParametersSofar = false Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Echo "Wrong parameters"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call PrintUsage</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Quit</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End Sub</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Sub Log(message)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; If DebugLogging = true Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Echo message</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End Sub</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Sub PrintUsage</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; WScript.Echo "Usage of this script: "</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; WScript.Echo "cscript ExpireClear.vbs [-d] -l|-r:&lt;remoteserver&gt; -u:&lt;Username&gt; -p:&lt;password&gt;" </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; WScript.Echo "-d enable debug logging"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; WScript.Echo "-l connect to local machine"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; WScript.Echo "-r connect to remote machine"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; WScript.Echo "If you use -r, you need to specify the username and password"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End Sub</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Sub RemoveExpiredUpdatesFromUpdateList(swbemServices,&nbsp; swbemContext,&nbsp;&nbsp; siteCode, ExpiredCIs)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Log("====Removing Expired Updates From Update List====")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Query = "SELECT * FROM SMS_AuthorizationList " &amp; _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"WHERE SourceSite='" &amp; siteCode &amp; "'"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Set UpdateLists = swbemServices.ExecQuery(Query, ,wbemFlagForwardOnly Or wbemFlagReturnImmediately, swbemContext)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; For each UpdateList in UpdateLists </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Checking UpdateList CI_ID = "&amp;UpdateList.CI_ID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set UpdateListLazy = swbemServices.Get("SMS_AuthorizationList.CI_ID=" &amp; UpdateList.CI_ID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpdatesNumOrg = UBound(UpdateListLazy.Updates) + 1</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Updates Number Before: " &amp; UpdatesNumOrg)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultUpdates = UpdateListLazy.Updates</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For each ExpiredCI in ExpiredCIs </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Resultupdates = Filter(Resultupdates,ExpiredCI.CI_ID,FALSE)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpdatesNumAfter = UBound(Resultupdates) + 1</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Updates Number After: " &amp; UpdatesNumAfter)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpdateListLazy.Updates=Resultupdates</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpdateListLazy.Put_</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End Sub</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Sub RemoveExpiredUpdatesFromDeploymens(swbemServices, swbemContext, &nbsp;siteCode, &nbsp;ExpiredCIs)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Log("====Removing Expired Updates From Update Deployments====")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Query = "SELECT * FROM SMS_UpdatesAssignment " &amp; _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "WHERE SourceSite='" &amp; siteCode &amp; "'"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Set UpdateAssignments = swbemServices.ExecQuery(Query, ,wbemFlagForwardOnly Or wbemFlagReturnImmediately, swbemContext)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; For each UpdateAssignment in UpdateAssignments</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Checking UpdateAssignment AssignmentID = "&amp;UpdateAssignment.AssignmentID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set UpdateAssignmentLazy = swbemServices.Get("SMS_UpdatesAssignment.AssignmentID=" &amp; UpdateAssignment.AssignmentID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ContainsExpired = UpdateAssignmentLazy.ContainsExpiredUpdates</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If ContainsExpired = true Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Log("ContainsExpired=true")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CINumOrg = UBound(UpdateAssignmentLazy.AssignedCIs) + 1</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultCIs = UpdateAssignmentLazy.AssignedCIs</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Updates Number Before: " &amp; CINumOrg)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For each ExpiredCI in ExpiredCIs </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultCIs = Filter(ResultCIs,ExpiredCI.CI_ID,FALSE)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CINumAfter = UBound(ResultCIs) + 1</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Updates Number After: " &amp; CINumAfter)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpdateAssignmentLazy.AssignedCIs=ResultCIs </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpdateAssignmentLazy.Put_</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("ContainsExpired=false")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End Sub</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">Sub RemoveExpiredUpdatesContent(swbemServices, swbemContext, siteCode, ExpiredCIs)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Log("====Removing Expired Updates Content From Deployment Packates====")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; For each ExpiredCI in ExpiredCIs</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Checking ExpiredCI: "&amp;ExpiredCI.CI_ID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query = "SELECT * FROM SMS_CIToContent " &amp; _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "WHERE CI_ID=" &amp; ExpiredCI.CI_ID</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set ExpiredContents = swbemServices.ExecQuery(Query, ,wbemFlagForwardOnly Or wbemFlagReturnImmediately, swbemContext)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For each ExpiredContent in ExpiredContents</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("Corresponding ContentID = "&amp;ExpiredContent.ContentID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query = "SELECT * FROM SMS_SoftwareUpdatesPackage " &amp; _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "WHERE SourceSite='" &amp; siteCode &amp; "'"</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set Packages = swbemServices.ExecQuery(Query, ,wbemFlagForwardOnly Or wbemFlagReturnImmediately, swbemContext)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For each Package in Packages</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log("Checking Deployment Package PackageID= " &amp; Package.PackageID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query = "SELECT * FROM SMS_PackageToContent " &amp; _</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "WHERE PackageID = '" &amp; Package.PackageID &amp; "'"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set Contents = swbemServices.ExecQuery(Query, ,wbemFlagForwardOnly Or wbemFlagReturnImmediately, swbemContext)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For each Content in Contents</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("ContentID: "&amp;Content.ContentID)</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Content.ContentID = ExpiredContent.ContentID Then</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log("ExpiredContent: " &amp; Content.ContentID &amp; " - will be delete")</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content.Delete_</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;&nbsp;&nbsp; Next</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">End Sub</span></p>
<p><span style="color: #0000ff; font-family: Calibri; font-size: xx-small;">&nbsp;</span></p>
<p><span style="color: #0000ff; font-size: xx-small;"><em><span style="font-family: Calibri;">--- The script is provided as is. Please test before implement in the product environment</span></em></span></p>
<p><span style="font-family: Calibri;">&nbsp;</span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>KB2661254: August Security Release Cycle Will Block RSA Keys Under 1024 Bits – Impact to SCUP 2011</title>
      <link>https://docs.microsoft.com/archive/blogs/minfangl/kb2661254-august-security-release-cycle-will-block-rsa-keys-under-1024-bits-impact-to-scup-2011</link>
      <pubDate>Thu, 23 Aug 2012 16:47:02 GMT</pubDate>
      <dc:creator><![CDATA[Minfang Lu [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/minfangl/2012/08/23/kb2661254-august-security-release-cycle-will-block-rsa-keys-under-1024-bits-impact-to-scup-2011/</guid>
      <description><![CDATA[Microsoft recently released a security update to block RSA keys that are less than 1024 bits:...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">Microsoft recently released a security update to block RSA keys that are less than 1024 bits: KB2661254 </span><a href="https://technet.microsoft.com/en-us/security/advisory/2661254"><span style="color: #0000ff; font-family: Calibri; font-size: small;" color="#0000ff" face="Calibri" size="3">https://technet.microsoft.com/en-us/security/advisory/2661254</span></a></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This update is now released to download center only and not yet be enforced to MU. So customers have some time to review all their certificates used and see if they meet the key length requirement.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">System Center Update Publisher requires a certificate to sign the 3<sup>rd</sup> party updates and that certificate need to be trusted by all the WU Agent clients. We support two ways to create this signing certificate: Create one from an existing Public Key Infrastructure or create a self-sign certificate through SCUP console. The later one will call WSUS API to create the self-sign certificate.</span></span></p>
<p><a href="https://blogs.technet.com/b/jasonlewis/archive/2011/07/12/system-center-updates-publisher-signing-certificate-requirements-amp-step-by-step-guide.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" color="#0000ff" face="Calibri" size="3">https://blogs.technet.com/b/jasonlewis/archive/2011/07/12/system-center-updates-publisher-signing-certificate-requirements-amp-step-by-step-guide.aspx</span></a><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"> </span><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">shows the step to create a certificate from windows PKI. It mentions the minimum key size is 2048. </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Every modern security algorithm can be cracked by brute force. It&rsquo;s just a matter of the time. When the key length is longer enough, it can take decades to brute force crack it. Recent research shows: 512 is not a safe key length for RSA, so MS release the update to require key length of 1024. 1024 is safe for now, but with the development of computing capacity, it might not be safe in the future. So if you can control the length, we&rsquo;d suggest it to be at least 2048.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">If you choose to use self-sign certificate through SCUP, then you cannot decide the key length of the certificate you created. WSUS API will decide the key length.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">For WSUS 3.0 SP2 without hotfix, the key length will be 512. </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">For WSUS 3.0 SP2 with hotfix KB2530678 or KB2530709 (the two updates that are pre-requisites for SCUP 2011) or KB 2720211 (the WSUS hardening update which included the KB2530678 and KB2530709), the key length will be 1024.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">So check the SCUP signing certificate on your environment, if it&rsquo;s 512, then you&rsquo;ll need to re-create it. Otherwise, OS applied KB2661254 (the RSA key block update) will fail to install the 3<sup>rd</sup> party updates published with SCUP.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">You will see the following error in WUAHandler.log (and WindowsUpdate.log):</span></span></p>
<p><span style="color: #333300; font-size: x-small; background-color: #ffff00;" size="3"><span style="font-family: Calibri;" face="Calibri">Failed to download updates to the WUAgent datastore. Error = 0x80096004</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">0x80096004 means &ldquo;The signature of the certificate cannot be verified&rdquo;.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" face="Calibri" size="3">&nbsp;</span></p>]]></content:encoded>
    </item>
  </channel>
</rss>