<?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>Batteries Not Included</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jletsch/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jletsch/feed.xml</link>
    <description>Notes on making things work...</description>
    <lastBuildDate>Mon, 09 Apr 2018 10:38:42 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Why can I browse the network with discovery off?</title>
      <link>https://docs.microsoft.com/archive/blogs/jletsch/why-can-i-browse-the-network-with-discovery-off</link>
      <pubDate>Mon, 09 Apr 2018 05:38:42 GMT</pubDate>
      <dc:creator><![CDATA[JLetsch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jletsch/?p=555</guid>
      <description><![CDATA[Quick Tip:

You open up file explorer and you click on network and you can browse items but you...]]></description>
      <content:encoded><![CDATA[Quick Tip:

You open up file explorer and you click on network and you can browse items but you have network discovery turned off.  Why????

I'm sure the first thing you do is to check that network discovery and file and print sharing are indeed off for the current profile.

<a href="https://msdnshared.blob.core.windows.net/media/2018/04/NetworkBrowse1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/04/NetworkBrowse1-1024x718.jpg" alt="" width="701" height="492" class="alignnone wp-image-565 " /></a>

If that is the case then most likely the issue is the firewall.  If the firewall is off or rules modified, then you will be able to browse the network even though network discovery and file / print sharing is off.

&nbsp;

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Let's Build A Standalone Deployment Server!</title>
      <link>https://docs.microsoft.com/archive/blogs/jletsch/lets-build-a-standalone-deployment-server</link>
      <pubDate>Wed, 15 Nov 2017 13:02:26 GMT</pubDate>
      <dc:creator><![CDATA[JLetsch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jletsch/?p=545</guid>
      <description><![CDATA[You have decided to deploy OS images over the network but you want to test it out or you want to...]]></description>
      <content:encoded><![CDATA[You have decided to deploy OS images over the network but you want to test it out or you want to create a small deployment lab.  Building a standalone deployment server is the way to go. Windows Deployment Service (WDS) and Microsoft Deployment Toolkit (MDT) are an easy way to accomplish that.  In this standalone setup the server is not part of a domain and has DNS (Domain Name System) and DHCP (Dynamic Host Configuration Protocol) on the same system as WDS and MDT.

In order to keep up with the demand of deploying workstation images to hundreds and thousands of systems quickly you need to have a deployment mechanism in place.  There are plenty of products out there that can deploy images.  But let's say you don't have those products.  How can you do it?  Well MDT and WDS do a great job together, also they are free (as long as you have a Windows Server license for WDS).
<h1><a></a>Assumption</h1>
Windows Server is fully installed on the system without any outstanding issues.  A basic understanding of Windows Server administration.  The IP address range has already been determined.  A user account on the server has been created with read access to the deployment share.
<h2><a></a>DNS</h2>
<h3><a></a>Installation</h3>
<ol>
 	<li>Open <strong>Server Manager</strong></li>
 	<li>Click <strong>Manage</strong></li>
 	<li>Click <strong>Add Roles and Features</strong></li>
 	<li>The <strong>Add Roles and Features Wizard</strong> window will appear
<ol>
 	<li>On the <strong>Before you begin</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Select installation type</strong> window click <strong><em>Role-based or feature-based installation</em></strong> and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Server destination server</strong> window select
<ol>
 	<li><strong><em>Select a server from the server pool</em></strong></li>
 	<li>Under <strong>Server Pool</strong> select the server name</li>
</ol>
</li>
</ol>
</li>
</ol>
<ul>
 	<li>Click <strong><em>Next</em></strong></li>
</ul>
<ol>
 	<li>On the <strong>Select server roles</strong> screen select <strong><em>DNS</em></strong>
<ol>
 	<li><em> </em>On the pop-up window click <strong><em>Add Features</em></strong></li>
 	<li>Click <strong><em>Next</em></strong></li>
</ol>
</li>
 	<li>On the <strong>Select features</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>DNS Server</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Confirm installation</strong> <strong>selections</strong> screen click<strong> <em>Restart the detitanation server automatically if required</em></strong>. Click <strong><em>Yes</em></strong> to the pop-up then click <strong><em>Install</em></strong></li>
 	<li>Wait for the installation to complete.</li>
 	<li>Once the installation is complete click the <strong><em>Close</em></strong></li>
</ol>
<h3><a></a>Configuration</h3>
<ol>
 	<li>Click <strong><em>Start</em></strong> -&gt; <strong><em>Windows Administrative Tools</em></strong> -&gt; <strong><em>DNS</em></strong>.</li>
 	<li>In the <strong>DNS Manager</strong> window click on the server name.</li>
 	<li>In the right pane, right-click <strong><em>Forward Lookup Zones</em></strong> and then click <strong><em>New Zone…</em></strong></li>
 	<li>In the <strong>New Zone Wizard</strong> on the <strong>Welcome</strong> screen click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Zone Type</strong> screen select <strong><em>Primary zone</em></strong> and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Zone Name</strong> screen enter the name of the Zone and click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Zone File</strong> screen leave the default selections and click <strong>Next</strong>.</li>
 	<li>On the <strong>Dynamic Update</strong> screen select <strong><em>Allow both nonsecure and secure dynamic updates</em></strong> and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Complete the New Zone Wizard</strong> screen click <strong><em>Finish</em></strong>.</li>
</ol>
<h2><a></a>DHCP</h2>
<h3><a></a>Installation</h3>
<ol>
 	<li>Open <strong>Server Manager</strong></li>
 	<li>Click <strong>Manage</strong></li>
 	<li>Click <strong>Add Roles and Features</strong></li>
 	<li>The <strong>Add Roles and Features Wizard</strong> window will appear
<ol>
 	<li>On the <strong>Before you begin</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Select installation type</strong> window click <strong><em>Role-based or feature-based installation</em></strong> and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Server destination server</strong> window select
<ol>
 	<li><strong><em>Select a server from the server pool</em></strong></li>
 	<li>Under <strong>Server Pool</strong> select the server name</li>
</ol>
</li>
</ol>
</li>
</ol>
<ul>
 	<li>Click <strong><em>Next</em></strong></li>
</ul>
<ol>
 	<li>On the <strong>Select server roles</strong> screen select <strong><em>DHCP</em></strong>
<ol>
 	<li><em> </em>On the pop-up window click <strong><em>Add Features</em></strong></li>
 	<li><em> </em>Click <strong><em>Next</em></strong></li>
</ol>
</li>
 	<li>On the <strong>Select features</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>DHCP Server</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Confirm installation</strong> <strong>selections</strong> screen click<strong> <em>Restart the detitanation server automatically if required</em></strong>. Click <strong><em>Yes</em></strong> to the pop-up then click <strong><em>Install</em></strong></li>
 	<li>Wait for the installation to complete.</li>
 	<li>Once the installation is complete click the <strong><em>Close</em></strong></li>
</ol>
<ol start="5">
 	<li>On the Server Manager window click the Warning icon at the top and then click <strong><em>Complete DHCP Configuration</em></strong>.</li>
 	<li>The <strong>DHCP Post-Install configuration wizard</strong> opens up.
<ol>
 	<li>On the <strong>Description </strong>screen click <strong><em>Commit</em></strong>.</li>
 	<li>On the <strong>Summary</strong> screen click <strong><em>Close</em></strong>.</li>
</ol>
</li>
</ol>
<h3> <a></a>Configuration</h3>
<ol>
 	<li>Click <strong><em>Start</em></strong> -&gt; <strong><em>Windows Administrative Tools</em></strong> -&gt; <strong><em>DHCP</em></strong>.</li>
 	<li>In DHCP window expand the server in the left pane.</li>
 	<li>Right-click <strong><em>IPv4</em></strong> and click <strong><em>New Scope…</em></strong></li>
 	<li>The <strong>New Scope Wizard</strong> window appears.
<ol>
 	<li>Click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Scope Name</strong> screen enter a name and description for the scope and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>IP Address Range</strong> screen enter the <strong>Start IP address</strong> and <strong>End IP address</strong> Verify that the <strong>Subnet mask</strong> is correct and then click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Add Exclusions and Delay</strong> screen do not enter any information, click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Lease Duration</strong> screen change the <strong>Days to 1</strong>, click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Configure DHCP Options</strong> screen select <strong><em>Yes</em></strong> and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Router (Default Gateway)</strong> screen do not enter an IP address, click <strong><em>Next</em></strong>.</li>
 	<li>On the Domain Name and DNS Servers screen enter the IP address of the server and click <strong><em>Add</em></strong>, then click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>WINS Servers</strong> screen do not enter any IP address, click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Activate Scope</strong> screen select <strong><em>Yes</em></strong> and then click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Completing the New Scope Wizard</strong> screen click <strong><em>Finish</em></strong>.</li>
</ol>
</li>
 	<li>Reboot the server.</li>
</ol>
<h2><a></a>MDT</h2>
<h3><a></a>Installation</h3>
<ol>
 	<li>Install ADK
<ol start="10">
 	<li>Go to <a href="https://developer.microsoft.com/en-us/windows/hardware/windows-assessment-deployment-kit">Windows ADK website</a> and download the latest Windows ADK for Windows 10.</li>
 	<li>Run <strong>exe</strong></li>
 	<li>The <strong>Windows Assessment and Deployment Kit – Windows 10 </strong>window opens.</li>
 	<li>On the <strong>Specify Location </strong>screen
<ol>
 	<li>select the <strong><em>Download the Windows Assessment and Deployment Kit – Windows 10 for installation on a separate computer </em></strong>radio button.</li>
 	<li>Browse to the desired download path to save the files.</li>
</ol>
</li>
</ol>
</li>
</ol>
<ul>
 	<li>Click <strong><em>Next</em></strong></li>
</ul>
<ol>
 	<li>On the <strong>Windows Kits Privacy</strong> screen select <strong><em>No</em></strong> and then click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>License Agreement</strong> screen click <strong><em>Accept</em></strong>.</li>
 	<li>On the <strong>Download is complete</strong> screen click <strong><em>Close</em></strong>.</li>
 	<li>Copy the files to the server if needed.</li>
 	<li>Open the folder with the downloaded files.</li>
 	<li>Run adksetup.exe</li>
 	<li>The <strong>Windows Assessment and Deployment Kit – Windows 10 </strong>window opens.</li>
 	<li>On the <strong>Specify Location</strong> screen browse to the desired install path and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Windows Kits Privacy</strong> screen select <strong><em>No</em></strong> and then click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>License Agreement</strong> screen click <strong><em>Accept</em></strong>.</li>
 	<li>On the <strong>Select the features you want to install</strong> screen select the following items and then click <strong><em>Install</em></strong>
<ol>
 	<li>Deployment Tools</li>
 	<li>Windows Preinstallation Environment (Windows PE)</li>
</ol>
</li>
</ol>
<ul>
 	<li>User State Migration Tool (USMT)</li>
</ul>
<ol>
 	<li>Wait for the installation to complete.</li>
 	<li>Uncheck <strong>Learn more about the Windows Assessment and Deployment Kit</strong> and then click <strong><em>Close</em></strong>.</li>
</ol>
<ol start="2">
 	<li>Install MDT
<ol>
 	<li>Go to the <a href="https://technet.microsoft.com/en-us/windows/dn475741.aspx">Microsoft Deployment Toolkit site</a> and download the latest version of MDT.</li>
 	<li>Run the MDT setup.</li>
 	<li>On the Welcome screen click Next.</li>
 	<li>On the <strong>End-User License Agreement</strong> screen select <strong><em>I accept the terms in the License Agreement</em></strong> and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Custom Setup</strong> screen select the desired installation location and click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Customer Experience Improvement Program</strong> screen select <strong><em>I don’t want to join the program at this time</em></strong> and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Ready to install</strong> screen click <strong><em>Install</em></strong>.</li>
 	<li>When the installation completes click <strong><em>Finish</em></strong>.</li>
</ol>
</li>
</ol>
<h3><a></a>Configuration</h3>
<h4>Adding Deployment Share</h4>
<ol>
 	<li>Click <strong>Start</strong> <strong>-&gt; Microsoft Deployment Toolkit</strong> -&gt; <strong>Deployment Workbench</strong>.</li>
 	<li>The Deployment Workbench window opens.</li>
 	<li>An existing deployment share can be added or a new one can be created.
<ol>
 	<li>Opening an existing deployment share.
<ol>
 	<li>Right-click <strong>Deployment Shares</strong> and click <strong>Open Deployment Share</strong>.</li>
 	<li>The Open Deployment Share Wizard appears.</li>
</ol>
</li>
</ol>
</li>
</ol>
<ul>
 	<li>On the <strong>Path</strong> screen browse to the deployment share and click Next.</li>
</ul>
<ol>
 	<li>On the <strong>Summary</strong> screen click Next.</li>
 	<li>When the operation completes click <strong>Finish</strong> on the <strong>Confirmation</strong> screen.</li>
</ol>
<ol>
 	<li>Creating a new deployment share.
<ol>
 	<li>Right-click <strong>Deployment</strong> <strong>Shares</strong> and click <strong>New</strong> <strong>Deployment</strong> <strong>Share</strong>.</li>
 	<li>The New Deployment Share Wizard appears.</li>
</ol>
</li>
</ol>
<ul>
 	<li>On the <strong>Path</strong> screen browse to the desired location for the new deployment share and then click Next.</li>
</ul>
<ol>
 	<li>On the <strong>Share</strong> screen type in the desired name of the share or leave the default and then click Next.</li>
 	<li>On the <strong>Descriptive</strong> <strong>Name</strong> screen type in a description for the share and then click Next.</li>
 	<li><em> </em>On the <strong>Options</strong> screen select the options you would like to have the deployment perform and then click Next. <em>Note: these can be changed later.</em></li>
</ol>
<ul>
 	<li>On the <strong>Summary</strong> screen review the selections and then click Next.</li>
 	<li>Once complete click Finish on the <strong>Confirmation</strong> screen.</li>
</ul>
<h4>Update username and password for Deployment Share</h4>
A username and password are required for the boot image from MDT to access the MDT share.
<ol>
 	<li>Create Deployment service account
<ol>
 	<li>Click <strong>Start</strong> -&gt; <strong>Windows</strong> <strong>Administrative</strong> <strong>Tools</strong> -&gt; <strong>Computer</strong> <strong>Management</strong>.</li>
 	<li>Expand <strong>System</strong> <strong>Tools</strong> -&gt; <strong>Local</strong> <strong>Users</strong> <strong>and</strong> <strong>Groups</strong>.</li>
 	<li>Right-click <strong>Users</strong> and click <strong>New</strong> <strong>User…</strong></li>
 	<li>On the New User window enter the information for the MDT Deployment service account and then click <strong>Create</strong>.</li>
 	<li>Close the <strong>Computer</strong> <strong>Management</strong> window</li>
</ol>
</li>
 	<li>Set Share and Security Permissions
<ol>
 	<li>Open File Explorer.</li>
 	<li>Navigate to the deployment share.</li>
 	<li>Right-click on the deployment share and click <strong>Properties</strong>.</li>
 	<li>Set the following permissions for the Deployment service account on the Deployment share.
<ol>
 	<li>Share permissions – Read</li>
 	<li>Security permissions – Read &amp; Execute, List Folder Contents, Read</li>
</ol>
</li>
 	<li>Add Deployment service account to the Bootstrap.ini file.
<ol>
 	<li>Open the MDT Deployment Workbench.</li>
 	<li>Right-click the deployment share and then click <strong>Properties</strong>.</li>
 	<li>Click the <strong>Rules</strong> tab and then click <strong>Edit</strong> <strong>ini</strong> in the lower right of the <strong>Properties</strong> windows.</li>
 	<li>The Bootstrap.ini file will open in Notepad.</li>
 	<li>Under the [Default] section of the Bootstrap.ini file enter the following information.
<ol>
 	<li><strong> </strong><strong>UserID=<em>Deployment service account name</em></strong></li>
 	<li><strong> </strong><strong>UserDomain=<em>Name of the deployment server</em></strong></li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
<ul>
 	<li><strong> </strong><strong>UserPassword=<em>Password for the deployment service account</em></strong></li>
</ul>
<ol>
 	<li>Save and close the Bootstrap.ini file.</li>
 	<li>Close the deployment share Properties window.</li>
 	<li>Right-click on the Deployment share and click <strong>Update Deployment Share</strong>.</li>
 	<li>On <strong>Options</strong> screen of the Update Deployment Share Wizard select <strong><em>Completely regenerate the boot images</em></strong> and then click <strong>Next</strong>.</li>
 	<li>Click <strong>Next</strong> on the <strong>Summary</strong></li>
 	<li>Click <strong>Finish</strong> on the <strong>Confirmation</strong></li>
</ol>
<h2><a></a>Windows Deployment Services (WDS)</h2>
WDS facilitates the Preboot Execution Environment (PXE) portion of the network deployment of the Windows 10 image to the laptops.   PXE facilitates the network booting of a computer to be able to pull down a bootable image file.
<h3><a></a>Installation</h3>
<ol>
 	<li>Open <strong>Server Manager</strong></li>
 	<li>Click <strong>Manage</strong></li>
 	<li>Click <strong>Add Roles and Features</strong></li>
 	<li>The <strong>Add Roles and Features Wizard</strong> window will appear
<ol>
 	<li>On the <strong>Before you begin</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Select installation type</strong> window click <strong><em>Role-based or feature-based installation</em></strong> and click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Server destination server</strong> window select
<ol>
 	<li><strong><em>Select a server from the server pool</em></strong></li>
 	<li>Under <strong>Server Pool</strong> select the server name</li>
</ol>
</li>
</ol>
</li>
</ol>
<ul>
 	<li>Click <strong><em>Next</em></strong></li>
</ul>
<ol>
 	<li>On the <strong>Select server roles</strong> screen select <strong><em>Windows Deployment Services</em></strong>
<ol>
 	<li><em> </em>On the pop-up window click <strong><em>Add Features</em></strong></li>
 	<li><em> </em>Click <strong><em>Next</em></strong></li>
</ol>
</li>
 	<li>On the <strong>Select features</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>WDS </strong>screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Select role services</strong> screen select both <strong><em>Deployment Server</em></strong> and <strong><em>Transport Server</em></strong>, click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Confirm installation</strong> <strong>selections</strong> screen click<strong> <em>Restart the detitanation server automatically if required</em></strong>. Click <strong><em>Yes</em></strong> to the pop-up then click <strong><em>Install</em></strong></li>
 	<li>Wait for the installation to complete.</li>
 	<li>Once the installation is complete click the <strong><em>Close</em></strong></li>
</ol>
<h3><a></a>Configuration</h3>
<ol>
 	<li>Click <strong><em>Start</em></strong> -&gt; <strong><em>Windows Administrative Tools</em></strong> -&gt; <strong><em>Windows Deployment Services</em></strong>.</li>
 	<li>The <strong>Windows Deployment Services</strong> window opens.</li>
 	<li>In the left pane expand Servers</li>
 	<li>Right-click on the server and click <strong><em>Configure Server</em></strong></li>
 	<li>The <strong>Windows Deployment Service Configuration Wizard</strong>
<ol>
 	<li>On the <strong>Before You Begin</strong> screen click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Install Options</strong> screen select <strong><em>Standalone server</em></strong>, click <strong><em>Next</em></strong></li>
 	<li>On the <strong>Remote Installation Folder Location</strong> screen select the location path and then click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Proxy DHCP Server</strong> screen select both options and then click <strong><em>Next</em></strong></li>
 	<li>On the <strong>PXE Server Initial Settings</strong> screen select <strong><em>Respond to all client computers (known and unknown)</em></strong>, click <strong><em>Next</em></strong>.</li>
 	<li>On the <strong>Task Progress</strong> screen, click <strong><em>Finish</em></strong> when it completes.</li>
</ol>
</li>
 	<li>If the WDS server did not start, right-click the server and select <strong><em>All Tasks -&gt; Start</em></strong>.</li>
 	<li>Right-click on the server and click Properties.</li>
 	<li>On the server properties page go to the Boot tab.
<ol>
 	<li>Under the PXE Boot Policy section select <strong>Continue the PXE boot unless the user presses the ESC key</strong> for both Known and Unknown clients.</li>
 	<li>Click OK</li>
</ol>
</li>
 	<li>Under the server right-click <strong><em>Boot Images</em></strong> and click <strong><em>Add Boot Image…</em></strong></li>
 	<li>The Add Image Wizard window appears.
<ol>
 	<li>On the <strong>Image</strong> <strong>File</strong> screen browse to the file location of the MDT boot image (it is in the boot folder in the deployment share) and then click <strong>Next</strong>.</li>
 	<li>On the <strong>Image</strong> <strong>Metadata</strong> screen type in the name and description for the image and then click <strong>Next</strong>.</li>
 	<li>On the <strong>Summary</strong> screen review the information and then click <strong>Next</strong>.</li>
 	<li>On the <strong>Task</strong> <strong>Progress</strong> screen click <strong>Finish</strong> when complete.</li>
</ol>
</li>
</ol>
Note: If you receive and Access Denied error make sure that the share permissions on the RemoteInstall have the user account that is being used listed and have at least Read and Change permissions.
<h2><a></a>Finished</h2>
The server is now configured to answer PXE requests and deploy an image that is configured in MDT.  An imaged must be developed in MDT before it can be deployed.]]></content:encoded>
    </item>
    <item>
      <title>Configuration Manager Console Crashes</title>
      <link>https://docs.microsoft.com/archive/blogs/jletsch/configuration-manager-console-crashes</link>
      <pubDate>Tue, 10 Jan 2017 07:03:37 GMT</pubDate>
      <dc:creator><![CDATA[JLetsch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jletsch/?p=525</guid>
      <description><![CDATA[Have you ever had the System Center Configuration Manager Current Branch console crash on launch but...]]></description>
      <content:encoded><![CDATA[Have you ever had the System Center Configuration Manager Current Branch console crash on launch but you cannot figure out why?  There could be several reasons that the console crashes on launch.  I just found out an uncommon reason that the console crashes, the Event Viewer.  If the Event Viewer logs are full and not allowing old logs to overwrite that can cause the console to crash.  If the console needs write anything to the Event Viewer and cannot it will crash the console.

&nbsp;

Hope this helps.]]></content:encoded>
    </item>
    <item>
      <title>The hidden directory of SCCM client on Linux / Unix</title>
      <link>https://docs.microsoft.com/archive/blogs/jletsch/the-hidden-directory-of-sccm-client-on-linux-unix</link>
      <pubDate>Tue, 27 Dec 2016 10:01:11 GMT</pubDate>
      <dc:creator><![CDATA[JLetsch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jletsch/?p=465</guid>
      <description><![CDATA[If you are ever troubleshooting a package deployment from SCCM (Configuration Manager) to a Linux...]]></description>
      <content:encoded><![CDATA[If you are ever troubleshooting a package deployment from SCCM (Configuration Manager) to a Linux system there is a hidden directory where the packages are staged on the Linux system.  I have not found a whole lot of documentation about his but thought I would just put a note out about it.

If you are using the default install location for the SCCM client on a Linux system then the directory is /opt/microsoft/configmgr/.cache.  If you are not using the default, look for the .cache directory in the configmgr directory.]]></content:encoded>
    </item>
    <item>
      <title>Let's Deploy SCCM Linux Client via PowerShell</title>
      <link>https://docs.microsoft.com/archive/blogs/jletsch/deploy-sccm-linux-via-powershell</link>
      <pubDate>Tue, 27 Dec 2016 09:36:42 GMT</pubDate>
      <dc:creator><![CDATA[JLetsch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jletsch/?p=505</guid>
      <description><![CDATA[So installing the System Center Configuration Manager client for Linux is simple.  It doesn't...]]></description>
      <content:encoded><![CDATA[So installing the System Center Configuration Manager client for Linux is simple.  It doesn't require a reboot, there are few parameters, and it can be scriptable.  So typically most Linux admins will have some sort of remote automation tool, such as Puppet.  But sometimes they don't or it's not Linux admins doing the install.  That's where PowerShell can help.  If you have a lot of Linux systems that need to have the client installed the first time, upgraded, or you are changing site code / management point you need a way to automate it.  I ran into these issues.  So I developed a PowerShell script that helped me so I thought I would share it.  It's not a script that is 100% universal.  It will most likely need to be customized but it's not difficult to customize.  The parts that will need to be modified are "shell.Read()".  Shell.Read() reads the output on the screen of the Linux system and in some places of the script it is looking for something in particular from the output.  This is where you will have to customize it for the output of your Linux system.  There is one catch with it, once you read the screen that portion of the screen essentially disappears and if you do another read you will get blank results.

First of all, the script uses Posh-SSH to to connect to the remote Linux system and send commands to the Linux system.  Instructions can be found <a href="https://www.powershellgallery.com/packages/Posh-SSH/">here</a> to install the Posh-SSH module.

The script can accept a text doc with a list of system names/ip addresses or a single system name / ip address.

I recommend testing this against a single system first before running against multiple systems.

Check it out and if you have questions please comment and I will respond.
<pre>##################################################################
# Microsoft provides programming examples for illustration only, 
# without warranty either expressed or implied, including, but not 
# limited to, the implied warranties of merchant-ability and/or 
# fitness for a particular purpose. 
#
# This sample assumes that you are familiar with the programming 
# language being demonstrated and the tools used to create and debug 
# procedures. Microsoft support professionals can help explain the 
# functionality of a particular procedure, but they will not modify 
# these examples to provide added functionality or construct 
# procedures to meet your specific needs. If you have limited 
# programming experience, you may want to contact a Microsoft 
# Certified Partner or the Microsoft fee-based consulting line at 
# (800) 936-5200. 
#
# For more information about Microsoft Certified Partners, please 
# visit the following Microsoft Web site:
# https://partner.microsoft.com/global/30000104
#
###################################################################
</pre>
<pre>Param(
[Parameter(Mandatory=$true)][string]$object
)

#This will load the PowerShell SSH module.
if (Import-Module -name posh-ssh -ErrorAction Ignore) {write-host "Module is loaded"}
else {
    write-host "Module is not loaded"
    write-host "Module is being loaded"
    #############################################################################
    #The Posh-SSH.zip file needs to be copied to the Modules directory prior to running.
    #DO NOT CHANGE THIS
    $targetondisk = "$($env:USERPROFILE)\Documents\WindowsPowerShell\Modules"
    ##############################################################################
    $directory = Get-Location
    $file = $directory.Path + "\Posh-SSH.zip"
    New-Item -ItemType Directory -Force -Path $targetondisk | out-null
    $shell_app=new-object -com shell.application
    $zip_file = $shell_app.namespace($file)
    Write-Host "Uncompressing the Zip file to $($targetondisk)" -ForegroundColor Cyan
    $destination = $shell_app.namespace($targetondisk)
    $destination.Copyhere($zip_file.items(), 0x10)
    Write-Host "Module has been installed" -ForegroundColor Green
    Import-Module -Name Posh-SSH
}



#This function will copy the tar file and install file to the target system and then install them.
Function InstallSCCM ($linuxsystem, $creds)
{
    #####################################################
    #Update these variables for your environment.  The Tar file and install file are to be local to the systme running the script.
    $CCMTarFile = "C:\temp\script\ccm-Universalx64.tar"
    $CCMInstallFile = "C:\temp\script\install.sh"
    $SiteCode = "STC"
    $MP = "MP-FQDN"
    #####################################################
    $tempdir = "/tmp/sccmInstall"
    [securestring]$passwd = $creds.Password.Copy()
    $session = New-SSHSession -ComputerName $linuxsystem -Credential $creds
    $shell = New-SSHShellStream -SessionId $session.SessionId

    If ($session.Connected) {

        Write-Host "Installing SCCM on " $linuxsystem
        $shell.Read()
        Start-Sleep -Seconds 2
        $shell.Read()
        Invoke-SSHStreamExpectSecureAction -ShellStream $shell -Command "sudo su -" -ExpectString "ssword" -SecureAction ($passwd) &gt; $null
        $shell.Read()

        $shell.WriteLine("mkdir $($tempdir)")
        $shell.Read()
        $shell.WriteLine("chmod 777 $($tempdir)")
        $shell.Read()

        Set-SCPFile -ComputerName $linuxsystem -Credential $creds -LocalFile $CCMTarFile -RemotePath $tempdir
        Set-SCPFile -ComputerName $linuxsystem -Credential $creds -LocalFile $CCMInstallFile -RemotePath $tempdir

        $shell.writeline("ls $($tempdir)")
        $shell.Read()
        Start-Sleep -s 2
       

        $fileexist = $shell.Read()
    
        IF ($fileexist -match "ccm-Universalx64.tar" -and $fileexist -match "install.sh") {
    
            $shell.WriteLine("chmod +x $($tempdir)/install.sh")
            write-host "Starting Installation..."
            $shell.WriteLine("$($tempdir)/install.sh -mp " + $MP + " -sitecode " + $SiteCode + " -clean $($tempdir)/ccm-Universalx64.tar")
    
            Do {
                $output = $shell.Read()
               } until ($output -match "complete")
            
            $output
            write-host "Performing Clean-up"
            Start-Sleep -s 5
            $shell.WriteLine("rm -rf $($tempdir)")
            Start-Sleep -s 5
            $shell.Close()
            Remove-SSHSession -SessionId $session.SessionId &gt; $null
        }
        Else {
            write-host "Files do not exist on system"
            $shell.WriteLine("rm -rf $($tempdir)")
            $shell.Close()
            Remove-SSHSession -SessionId $session.SessionId &gt; $null
        }
    }
    Else {
        write-host "Failure to connect to system"
        get-sshsession | Remove-SSHSession &gt; $null
    }
}

#Asks for Linux Credentials
$creds = Get-Credential

#tests if the parameter is a single system name or a file with a list of systems.
If (Test-Path $object) {
    foreach ($linuxsystem in Get-Content -Path $object){
        InstallSCCM $linuxsystem $creds
        }
    $creds.Password.Dispose()
    }
Else {
    $linuxsystem = $object
    InstallSCCM $linuxsystem $creds
    $creds.Password.Dispose()
    }</pre>]]></content:encoded>
    </item>
    <item>
      <title>Why is DISM Growing My WIM When Running StartComponentCleanup?</title>
      <link>https://docs.microsoft.com/archive/blogs/jletsch/why-is-dism-growing-my-wim-when-running-startcomponentcleanup</link>
      <pubDate>Thu, 19 May 2016 15:32:29 GMT</pubDate>
      <dc:creator><![CDATA[JLetsch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jletsch/?p=445</guid>
      <description><![CDATA[Have you ever tried to clean up a wim with the /startcomponentcleanup parameter only to have it grow...]]></description>
      <content:encoded><![CDATA[Have you ever tried to clean up a wim with the /startcomponentcleanup parameter only to have it grow the wim instead of shrink it?  If you have and you are not sure why it didn't work then I can help you out.

I was trying to shrink a Sysprep'd offline Windows Server 2012 R2 WIM and when I ran the command <em><strong>DISM /image:&lt;path to image&gt; /cleanup-image /analyzecomponentstore </strong></em>it recommended running the <em><strong>/StartComponentCleanup.  </strong></em>

So I ran the command <strong>DISM /image:&lt;path to image&gt; /Cleanup-Image /StartComponentCleanup /ResetBase</strong>.

After running the DISM command the WIM grew from ~8GB to ~10GB.  That puzzled me because it was suppose to shrink the image.

So I started over and deployed the image again.  This time I did not sysprep the image and instead ran <strong>DISM /online /Cleanup-Image /StartComponentCleanup /ResetBase </strong>from the active OS I want to skrink.  After the command completed I did notice that the used space on the system root drive (C:) went down.

I then rebooted the system into a Windows PE environment and captured the WIM.  It went from being a ~8GB image before to now ~5GB.

So lesson to learn here is DISM will not shrink an offline sysprep'd image.

I do want to try to perform the DISM Component Store cleanup on an offline image that is not sysprep'd to see if it shrinks or grows it (I'm hoping it will shrink and will update this blog after I do it).

&nbsp;

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Let's Configure Azure Site-to-Site VPN with RRAS in Azure Resource Manager!</title>
      <link>https://docs.microsoft.com/archive/blogs/jletsch/lets-configure-azure-site-to-site-vpn-with-rras-in-azure-resource-manager</link>
      <pubDate>Tue, 15 Mar 2016 06:35:42 GMT</pubDate>
      <dc:creator><![CDATA[JLetsch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jletsch/?p=43</guid>
      <description><![CDATA[UPDATE 12/20/2016: The correct port forwarding rules need to be in place in order for the VPN to...]]></description>
      <content:encoded><![CDATA[<em><strong>UPDATE 12/20/2016: The correct port forwarding rules need to be in place in order for the VPN to work.  Here is a <a href="https://blogs.technet.microsoft.com/rrasblog/2006/06/14/which-ports-to-unblock-for-vpn-traffic-to-pass-through/">link</a> to a blog with more information about which ports need to be configured on the router.</strong></em>

There are several blog posts about configuring an Azure site-to-site VPN with Microsoft RRAS in the old Azure portal.  I did find that Cheryl McGuire wrote an article about creating a site-to-site VPN in Azure Resource Manager with PowerShell <a href="https://azure.microsoft.com/en-us/documentation/articles/vpn-gateway-create-site-to-site-rm-powershell/">here</a>. However this post is more specific about configuring RRAS and Azure site-to-site VPN.

In the old Azure portal once you configured a site-to-site VPN it would generate a script that would configure RRAS on a Windows Server.  I have not been able to find where or even if that script is created in the new Azure portal.  So we are going to manually configure RRAS.

<em>NOTE: In this post I will be disabling IPv6 because it is not used.</em>

Before you begin you will need a Windows Server 2012 R2 that has 2 NICs.
<h2>Configuring the RRAS Server's NICs...</h2>
Label one NIC to be <em>External</em> and one to be <em>Internal.</em>

Go into the properties of the External adapter.
<ul>
 	<li>Uncheck everything except for TCP/IPv4.</li>
 	<li>Go into the properties of TCP/IPv4 and configure:
<ul>
 	<li>IP Address</li>
 	<li>Gateway</li>
 	<li>DNS Servers</li>
 	<li>Advanced Settings -&gt; WINS -&gt; Disable NetBIOS over TCP</li>
</ul>
</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_2.jpg"><img width="237" height="300" class=" size-medium wp-image-63 aligncenter" alt="Site-to-Site_2" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_2-237x300.jpg" /></a>

Click <strong>OK</strong> to close out the External adapter properties.

Go into properties of the Internal adapter.
<ul>
 	<li>Uncheck TCP/IPv6.</li>
 	<li>Go into the properties of TCP/IPv4 and configure:
<ul>
 	<li>IP Address</li>
 	<li>DNS Servers</li>
</ul>
</li>
</ul>
<em>NOTE: If you configure a gateway for your Internal adapter then you will need to manually add a static route.  This will ensure all traffic is routed through the External adapter.</em>

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_3.jpg"><img width="238" height="300" class=" size-medium wp-image-71 aligncenter" alt="Site-to-Site_3" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_3-238x300.jpg" /></a>In other articles about setting up a site-to-site VPN with Azure it is recommended that you assign the External IP address in the DMZ on the router.  I did not do that because this is just a home lab and it still works fine.  However without the External adapter in the DMZ, Azure is unable to initiate the connection.
<h2>Installing the RRAS Roles and Features...</h2>
Now that the networking has been configured.  Make sure that the server has the latest updates.

Open <strong>Server Manager</strong>. Select <strong>Manage</strong> -&gt; <strong>Add Roles and Features</strong>.

On the <strong>Add Roles and Features Wizard </strong>
<ul>
 	<li>Before You Begin: Click <strong>Next</strong></li>
 	<li>Installation Type: Role-based -&gt; Click <strong>Next</strong></li>
 	<li>Server Selection: Select a server from the server pool -&gt; RRAS-Server -&gt; Click <strong>Next</strong></li>
 	<li>Server Roles: Check <strong>Remote Access</strong> -&gt; Click <strong>Next</strong></li>
 	<li>Features: Click <strong>Next</strong></li>
 	<li>Remote Access: Click <strong>Next</strong>
<ul>
 	<li>Role Services:
<ul>
 	<li>Direct Access and VPN (RAS)
<ul>
 	<li>Click <strong>Add Features </strong>on the pop-up window<strong>
</strong></li>
</ul>
</li>
 	<li>Routing</li>
 	<li>Click <strong>Next</strong></li>
</ul>
</li>
</ul>
</li>
 	<li>Web Server Role (IIS): Click <strong>Next</strong>
<ul>
 	<li>Role Services
<ul>
 	<li>Accept Defaults: Click <strong>Next</strong></li>
</ul>
</li>
</ul>
</li>
 	<li>Confirmation: Click <strong>Install</strong></li>
</ul>
While that installs let's head over to Azure
<h2>Setting up / configuring the VPN in Azure...</h2>
<em>NOTE: For this walk-through all resources will be specified in East US.  As my own person best practice I place all my resources in the same location.</em>

Go to <strong>Virtual Networks</strong> and click <strong>Add</strong>.

On the <strong>Create virtual network</strong> blade fill in the following:
<ul>
 	<li>Name - RRAS-S2S-Vnet</li>
 	<li>Address space - 10.2.0.0/16
<ul>
 	<li>There will need to be 2 subnets created so the address space here will have to be big enough for your 2 subnets.  I am going to have 2 /24 subnets under this to help clarify the differences in the 2 subnets.</li>
</ul>
</li>
 	<li>Subnet name - default
<ul>
 	<li>This is the subnet you will use for your Azure VMs.</li>
</ul>
</li>
 	<li>Subnet address range - 10.2.0.0/24
<ul>
 	<li>This is the address range that will be used for the Azure VMs.</li>
</ul>
</li>
 	<li>Subscription - pick your subscription</li>
 	<li>Resource group - S2S-Test
<ul>
 	<li>This is creating a resource group that we will use for the rest of the resources.</li>
</ul>
</li>
 	<li>Location - Pick the location you want your Virtual Network to reside.</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_4.jpg"><img width="90" height="300" class=" wp-image-103 size-medium aligncenter" alt="" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_4-90x300.jpg" /></a>

Click <strong>Create</strong>.

Next you need to create a subnet for the virtual network gateway.  Click on Virtual Networks.

On the Virtual Networks blade click the RRAS-S2S-Vnet network.  Then click on <strong>All settings -&gt; Subnets -&gt; Add</strong>.

On the <strong>Add subnet</strong> blade fill in the following:
<ul>
 	<li>Name - GatewaySubnet
<ul>
 	<li>This has to be the name of the subnet for the Virtual Network Gateway.</li>
</ul>
</li>
 	<li>Address Range - 10.2.1.0/24
<ul>
 	<li>This is the IP range for the RRAS server to use.</li>
</ul>
</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_7.jpg"><img width="515" height="247" class="aligncenter wp-image-123" alt="" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_7-300x144.jpg" /></a>

Click <strong>OK</strong>

After the Virtual Network is deployed click on Virtual network gateways.

Click on <strong>Add</strong>

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_6.jpg"><img width="220" height="158" class="aligncenter wp-image-104 size-full" alt="" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_6.jpg" /></a>

On the <strong>Create virtual network gateway</strong> blade type in the name of the virtual network gateway, <strong>RRAS-S2S-VnetGW</strong>. Then click <em><strong>choose virtual network </strong></em>and select the virtual <strong>RRAS-S2S-Vnet</strong> virtual network.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_8.jpg"><img width="284" height="195" class="aligncenter wp-image-131 size-full" alt="" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_8.jpg" /></a>

&nbsp;

Back on the <strong>Create virtual network gateway</strong> blade click <em><strong>Choose public a IP address</strong></em>. Then on the <strong>Choose public IP address </strong>blade click <strong>Create new</strong>.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_9.jpg"><img width="279" height="175" class=" size-full wp-image-133 aligncenter" alt="Site-to-Site_9" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_9.jpg" /></a>On the <strong>Create public IP address</strong> blade type in the name for the public IP address resource and click <strong>OK</strong>.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_10.jpg"><img width="272" height="193" class="aligncenter wp-image-143 size-full" alt="" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_10.jpg" /></a>

Back on the <strong>Create virtual network gateway</strong> blade select the following:
<ul>
 	<li>Gateway type: <strong>VPN</strong></li>
 	<li>VPN type: <strong>Route-based</strong></li>
 	<li>Subscription: <em>your Azure subscription</em></li>
</ul>
Click on <em>Select existing </em>under Resource group and then on the <strong>Resource group</strong> blade select the <strong>S2S-Test</strong>, click <strong>OK</strong>.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_11.jpg"><img width="266" height="177" class="aligncenter wp-image-144 size-full" alt="" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_11.jpg" /></a>

Back on the <strong>Create virtual network gateway</strong> blade select <strong>East US</strong> as the <strong>Location</strong> and then click <strong>OK</strong>.

Back on the <strong>Create virtual network gateway</strong> blade review the options and then click <strong>Create</strong>.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_12.jpg"><img width="90" height="300" class=" size-medium wp-image-153 aligncenter" alt="Site-to-Site_12" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_12-90x300.jpg" /></a>

After the Virtual Network Gateway is created select Virtual network gateways and then select <strong>RRAS-S2S-VnetGW</strong>.  The settings blade will appear. Make note of the Public IP address, this will be needed later.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_24.jpg"><img width="300" height="181" class=" size-medium wp-image-434 aligncenter" alt="Site-to-Site_24" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_24-300x181.jpg" /></a>

&nbsp;

Next go to <strong>Local network gateways </strong>and click <strong>Add</strong>.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_14.jpg"><img width="209" height="107" class=" size-medium wp-image-164 aligncenter" alt="Site-to-Site_14" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_14.jpg" /></a>

On the <strong>Create local network gateway</strong> blade enter in the following information:
<ul>
 	<li>Name: RRAS-S2S-LclNetGW</li>
 	<li>IP address: <em>Enter the public IP address of network that the RRAS server is on</em></li>
 	<li>Address space: <em>This is where the on prem network address space is set (e.g. 192.168.1.0/24).</em><em>
</em></li>
 	<li>Subscription: <em>Select your Azure subscription</em></li>
 	<li>Resource group: S2S-Test</li>
 	<li>Location: East US</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_15.jpg"><img width="130" height="300" class=" size-medium wp-image-173 aligncenter" alt="Site-to-Site_15" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_15-130x300.jpg" /></a>

Click <strong>Create</strong>.

After the Local network gateway is created, go to <strong>Local network gateways</strong> -&gt; <strong>RRAS-S2S-LclNetGW</strong>-&gt; <strong>Settings</strong> -&gt; <strong>Connections.</strong>

Click <strong>Add</strong>.
<p style="text-align: center"><a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_17.jpg"><img width="150" height="109" class="alignnone size-full wp-image-183" alt="Site-to-Site_17" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_17.jpg" /></a></p>
<p style="text-align: left">On the <strong>Add connection</strong> blade fill in the following:</p>

<ul>
 	<li style="text-align: left">Name: <strong>RRAS-S2S-LclNetGW-Connection</strong></li>
 	<li style="text-align: left">Connection type: <strong>Site-tosite (IPsec)</strong></li>
 	<li style="text-align: left">Virtual network gateway: <strong>RRAS-S2S-VnetGW</strong></li>
 	<li style="text-align: left">Local network gateway: <strong>RRAS-S2S-LclNetGW</strong></li>
 	<li style="text-align: left">Shared key (PSK): <em>Enter in any alphanumeric key as the key</em></li>
 	<li style="text-align: left">Resource group: <strong>S2S-Test</strong></li>
 	<li style="text-align: left">Location: <strong>East US</strong></li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_18.jpg"><img width="127" height="300" class=" size-medium wp-image-193 aligncenter" alt="Site-to-Site_18" src="https://msdnshared.blob.core.windows.net/media/2016/03/Site-to-Site_18-127x300.jpg" /></a>

Click <strong>OK</strong>.

The site-to-site VPN configuration in Azure is now complete.
<h2>Now we go back to the RRAS server...</h2>
After the install of the Remote Access role is complete, open up <strong>Routing and Remote Access</strong>.

Right-click the RRAS-Server and click <strong>Configure and Enable Routing and Remote Acess</strong>.

<a href="https://msdnshared.blob.core.windows.net/media/2016/03/S2S-7.jpg"><img width="300" height="213" class=" size-medium wp-image-293 aligncenter" alt="S2S-7" src="https://msdnshared.blob.core.windows.net/media/2016/03/S2S-7-300x213.jpg" /></a>

The <strong>Routing and Remote Access Server Setup Wizard </strong>will appear.
<ol>
 	<li>Welcome to the Routing and Remote Access Server Setup Wizard: Click <strong>Next</strong></li>
 	<li>Configuration: Select <strong>Secure connection between two private networks</strong>, click <strong>Next</strong></li>
 	<li>Demand-Dial Connections: Select <strong>Yes</strong>, click <strong>Next</strong></li>
 	<li>IP Address Assignment: Select <strong>Automatically</strong>, click <strong>Next</strong></li>
 	<li>Completing the Routing and Remote Access Server Setup Wizard: Click <strong>Finish</strong></li>
</ol>
The <strong>Demand-Dial Interface Wizard</strong> will appear.
<ol>
 	<li>Welcome to the Demand-Dial Interface Wizard: Click <strong>Next</strong></li>
 	<li>Interface Name: Type in <strong>Azure S2S</strong>, click <strong>Next</strong></li>
 	<li>Connection Type: Select <strong>Connect using virtual private network (VPN)</strong>, click <strong>Next</strong></li>
 	<li>VPN Type: Select <strong>IKEv2</strong>, click <strong>Next</strong></li>
 	<li>Destination Address: Enter in the Public IP address of the Azure Virtual Network Gateway, click <strong>Next</strong></li>
 	<li>Protocols and Security: Check <strong>Route IP packets on this interface</strong>, click <strong>Next</strong></li>
 	<li>Static Routes for Remote Networks: Click <strong>Add</strong>
<ul>
 	<li>Static Route: Select Remote Network Support using IPv4:
<ul>
 	<li>Destination: 10.2.0.0</li>
 	<li>Network Mask: 255.255.255.0</li>
 	<li>Metric: 24</li>
 	<li>Click <strong>OK</strong></li>
</ul>
</li>
 	<li>Click <strong>Next</strong></li>
</ul>
</li>
 	<li>Dial-Out Credentials: Type <strong>Azure</strong> for the User name, click <strong>Next</strong></li>
 	<li>Completing the Demand-Dial Interface Wizard: Click <strong>Finish</strong></li>
</ol>
In the <strong>Routing and Remote Access</strong> window select <strong>RRAS-Server </strong>-&gt; <strong>Network Interfaces</strong>.  Right-click on <strong>Azure S2S </strong>and select <strong>Properties</strong>.

Select the <strong>Security </strong>tab and under <strong>Authentication </strong>select <strong>Use preshared key for authentication</strong>. Type in the preshared key that was entered on the <strong>RRAS-S2S-LclNetGW-Connection</strong>.  Click <strong>OK</strong>.

Right-click on the <strong>Azure S2S</strong> network interface and click <strong>Connect</strong>.

After it connects open up a command prompt and ping 10.2.0.0.  You should get a response.

Now any Azure VM that you put on <strong>RRAS-S2S-Vnet</strong> will be able to communicate directly with your on-premise systems.

In order for any on-premise systems to communicate with the Azure VMs you will need to either setup a route for the Azure subnet to route through the RRAS server or set the gateway on your systems to be the RRAS server.

&nbsp;
<h1>Troubleshooting</h1>
If you can connect to the VPN but cannot ping the Azure network then make sure that the route to your Azure external IP is set correctly.  You can view this by right clicking on static routes under IPv4 in RRAS.  Then select Show IP Route Table.  If you do not see your Azure Public IP listed and going to the External network adapter then you need to manually add the route.

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Configuration Manager 2012 R2 Linux OpenSSL Centrify Error</title>
      <link>https://docs.microsoft.com/archive/blogs/jletsch/configuration-manager-2012-r2-linux-openssl-centrify-error</link>
      <pubDate>Thu, 03 Mar 2016 09:54:32 GMT</pubDate>
      <dc:creator><![CDATA[JLetsch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jletsch/?p=21</guid>
      <description><![CDATA[While installing SCCM Linux clients I have come across issues.  Some are well documented some are...]]></description>
      <content:encoded><![CDATA[While installing SCCM Linux clients I have come across issues.  Some are well documented some are not documented at all. It has been one of those fun and continuing adventures in Linux and SCCM.  One of the toughest issues that I discovered had to do with Centrify.  I originally added this information to the <a target="_blank" href="https://social.technet.microsoft.com/wiki/contents/articles/28548.unix-and-linux-clients-for-system-center-2012-r2-configuration-manager-common-error-wiki.aspx">Linux SCCM Troubleshooting Wiki</a>.  I felt as though I should try to put this information in as many places as possible since this was one of those "not documented at all" issues.   Also I can add a bit more context to the issue here.
<h2>Background:</h2>
While installing the Linux SCCM client on several different flavors of Linux I started to experience some issues with some of them.  The client would install but the service would not start.  In the log I was receiving a kernel general protection error.  After scouring the Internet and sending emails back and forth with others, I still did not have an answer as to the cause of the error.  The system logs did not show any issues.  I checked to make sure that the openssl version installed was supported and it was.  But then I decided to look a bit further into the openssl I found something was not right.  Versions of files and packages did not match.
<p style="text-align: center"><strong>Something seemed a bit off...</strong></p>
<p style="text-align: center"><strong>AHA! I realized what the issue was...</strong></p>
The problem is that Centrify installs its own version of OpenSSL and then changes some global defaults to the systems OpenSSL. In order for the SCCM client to work it must link its libraries to the Centrify ones and not the system OpenSSL libraries. A better resolution would be to change the global defaults so that the SCCM client does not need to be modified and uses the systems OpenSSL libraries.
<h2>Symptoms:</h2>
<ul>
 	<li>CCMEXEC service will not stay running.
<ul>
 	<li>[root@system ~]# service ccmexecd status
<strong>Checking for service ccmexec ccmexec.bin is stopped</strong></li>
</ul>
</li>
 	<li>Centrify is installed on the system.</li>
 	<li>In the scxcm.log
<ul>
 	<li>You see that the client begins to run and discovers the management points</li>
 	<li>There are no errors and may only be a couple of warnings about STATEID</li>
 	<li>The log files ends without error</li>
</ul>
</li>
 	<li>In the /var/log/messages file the following errors are shown
<ul>
 	<li><strong>kernel: ccmexec.bin[xxxx]: segfault at xxxxxx ip xxxxxxx sp xxxxxxx error 15</strong></li>
 	<li><strong>kernel: ccmexec.bin[xxxx]: general protection ip:xxxxxxx sp:xxxxxxxxx error:0 in libcrypto.so.1.0.1e[xxxxxxxxxxxxxx]</strong></li>
</ul>
</li>
</ul>
<h2>Troubleshooting:</h2>
To determine if Centrify re-configured OpenSSL run the following commands.
<ul>
 	<li>[root@system ~]# locate libcrypto
<span style="color: #ff0000"><strong>/opt/microsoft/omi/lib/libcrypto.so.0.9.8</strong></span>
<strong> /usr/lib64/.libcrypto.so.1.0.1e.hmac</strong>
<strong> /usr/lib64/.libcrypto.so.10.hmac</strong>
<span style="color: #ff0000"><strong> /usr/lib64/libcrypto.so.1.0.1e</strong></span>
<strong> /usr/lib64/libcrypto.so.10</strong>
<strong> /usr/share/centrifydc/lib/libcrypto.so</strong>
<span style="color: #ff0000"><strong> /usr/share/centrifydc/lib/libcrypto.so.0.9.8</strong></span></li>
</ul>
You will see that there is a newer version of libcrypto library in the /usr/lib64/ directory compared to the ones in the Microsoft and Centrify directories.
<ul>
 	<li>[root@system ~]# rpm –qa openssl
<strong>openssl-1.0.1e-30</strong></li>
</ul>
This shows the version of OpenSSL that the OS originally installed.
<ul>
 	<li>[root@system ~]# openssl version
<strong>OpenSSL 0.9.8w-fips</strong></li>
</ul>
This shows that the currently registered version of OpenSSL is the one that Centrify installs and overrides the version that was originally installed on the system.
<ul>
 	<li>[root@system ~]# ls -lh /opt/microsoft/omi/lib
<strong>libcrypto.so.0.9.8 -&gt; /usr/lib64/libcrypto.so</strong>
<strong> libssl.so.0.9.8 -&gt; /usr/lib64/libssl.so</strong></li>
</ul>
This will show all the files in the directory. Notice that the libcrypto.so.0.9.8 and libssl.so.0.9.8 files are links to the library files in the /usr/lib64/ directory (the system’s OpenSSL files).
<ul>
 	<li>[root@system ~]# find / -name "libcrypto*" -exec ls -l {} \;
<strong>/opt/microsoft/omi/lib/libcrypto.so.0.9.8 -&gt; /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so -&gt; libcrypto.so.1.0.1e /usr/lib64/libcrypto.so.1.0.1e /usr/share/centrifydc/lib64/libcrypto.so -&gt; libcrypto.so.0.9.8 /usr/share/centrifydc/lib64/libcrypto.so.0.9.8</strong></li>
</ul>
This shows all the libcrypto files on the system. It shows that the Microsoft libcrypto file is linked to the /usr/lib64/libcrypto.so file and that file is linked to the libcrypto.so.1.0.1e library file. It also shows the Centrify libcrypto files are linked to its own version of the libcrypto file (the version that is Centrify registers with the system and overrides the original version of OpenSSL that was installed).
<h2>Resolution:</h2>
Now this is a problem because the OS has OpenSSL version 0.9.8 registered but the Microsoft SCCM client is linked to libraries associated with OpenSSL version 1.x. In order to fix this the links to the libcrypto and libssl files need to be changed to point to the Centrify version.

<strong>NOTE:</strong> <em>The better way to fix this would be to change the global defaults to that the registered version of OpenSSL is the one that originally came with the system.</em>

<strong>NOTE:</strong> <em>This issue will not be noticed if the OS originally had OpenSSL 0.9.8 installed. Such as CentOS 5 or RHEL 5. I have only seen this issue with CentOS 6.x+ or RHEL 6.x+.</em>
<ul>
 	<li>Verify that the CCMEXEC service is stopped.
<ul>
 	<li>[root@system ~]# service ccmexecd status
<strong>Checking for service ccmexec ccmexec.bin is stopped</strong></li>
</ul>
</li>
 	<li>Change the ln (link) reference for both libssl and libcrypto in the /opt/microsoft/omi/lib/ directory.
<ul>
 	<li>[root@system ~]# cd /opt/microsoft/omi/lib/
[root@system lib]# rm libssl.so.0.9.8 rm: remove symbolic link `libssl.so.0.9.8'? y [root@system lib]# rm libcrypto.so.0.9.8 rm: remove symbolic link `libcrypto.so.0.9.8'? y
[root@system lib]# ln -s /usr/share/centrifydc/lib64/libcrypto.so libcrypto.so.0.9.8 [root@system lib]# ln -s /usr/share/centrifydc/lib64/libssl.so libssl.so.0.9.8</li>
</ul>
</li>
 	<li>Start the CCMEXEC service
[root@system lib]# service ccmexecd start
<strong>Starting ccmexec: Starting ccmexec: [ OK ] </strong>
[root@system lib]# Logging Configuration File for SCX CM::/opt/microsoft/configmgr/etc/scxcm.conf</li>
 	<li>Check to see if the CCMEXEC service is running of if it stopped
[root@system lib]# service ccmexecd status
<strong>Checking for service ccmexec ccmexec.bin (pid xxxx) is running...</strong></li>
</ul>]]></content:encoded>
    </item>
  </channel>
</rss>