<?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>Random Ramblings of a Microsoft Guy</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/dj/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/dj/feed.xml</link>
    <description>Microsoft Cloud, Automation, Manageability, Virtualization, and whatever else that comes to mind..</description>
    <lastBuildDate>Wed, 17 Apr 2019 04:05:35 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Extend Your Network to Azure With Site-to-Site VPN Quick and Cheap</title>
      <link>https://docs.microsoft.com/archive/blogs/dj/extend-your-network-to-azure-with-site-to-site-vpn-quick-and-cheap</link>
      <pubDate>Mon, 08 Jan 2018 19:00:11 GMT</pubDate>
      <dc:creator><![CDATA[djtech2k11]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/dj/?p=45</guid>
      <description><![CDATA[It had been a while since I originally worked with the Azure VPN options so I recently decided to...]]></description>
      <content:encoded><![CDATA[It had been a while since I originally worked with the Azure VPN options so I recently decided to dig back into it.  Like many of you, I have computers at home that are my "Lab" and I thought it would be great to be able to connect my home "Lab" network to Azure so that I could more easily move resources from my lab into the cloud.  Just to start, I wanted to be able to have a Domain Controller in Azure and have it connected to my Lab as well.  After doing some research and re-familiarizing myself, I figured out a good solution that doesn't cost a lot or take a lot of time.

I found several blogs or articles written on all sorts of methods of connecting to Azure.  I narrowed it down to a few that were similar to what I wanted to do.  What I found was that in order to get mine to work as I wanted, I needed to use certain pieces from different postings on the subject.  I will reference some of those sources in this post.  Here is my experience with this process and how I was able to make it work well.

First, here are the major data points we need to define before we get started:

<strong>On Prem Lab Network</strong>:
IP Subnet: 192.168.1.0 / 24 (255.255.255.0)
RRAS Server: 192.168.1.202

<strong>Azure</strong>:

Resource Group: My-Resource-Group
Virtual Network:
Address Space: 172.10.0.0 / 16 (255.255.0.0)
Subnet - "Backend": 172.10.1.0 / 24 (255.255.255.0)
Subnet - "GatewaySubnet": 172.10.0.0 / 24 (255.255.255.0)
Virtual Network Gateway:
Connection:
Local Network Gateway:
IP Address: 1.1.1.1 (Public IP of On Prem Lab)
Address Space: 192.168.1.0 / 24 (255.255.255.0)

Steps:
<ol>
 	<li> Create Azure Resource Group
<ol>
 	<li>In the Azure Portal, Click on Resource Groups.  Then Click Add.</li>
 	<li>Fill-In "Resource Group Name", Choose Your Subscription, Select Location, and Click Create.</li>
</ol>
</li>
 	<li>Create Virtual Network
<ol>
 	<li>In the Azure Portal, Click on Virtual Networks.  Then Click Add.</li>
 	<li>Fill-In Fields:
<ol>
 	<li>Name: My-Virtual-LAN</li>
 	<li>Address Space: 172.10.0.0 / 16 (255.255.0.0)</li>
 	<li>Subnet Name: Backend</li>
 	<li>Subnet Address Range: 172.10.1.0 / 24 (255.255.255.0)</li>
 	<li>Resource Group: Use Existing &gt; My-Resource-Group</li>
 	<li>Location: (Same Location as Resource Group)</li>
</ol>
</li>
 	<li>Now Create the Subnets:
<ol>
 	<li>Click on the New Virtual Network You Just Created.</li>
 	<li>Now Click "Subnets" on the left side.</li>
 	<li>Now on the right, click the "+ Gateway Subnet".</li>
 	<li>Fill-In:
<ol>
 	<li>Name: GatewaySubnet</li>
 	<li>Address Range: 172.10.0.0 / 24 (255.255.255.0)</li>
</ol>
</li>
 	<li>Click Create.</li>
</ol>
</li>
</ol>
</li>
 	<li>Create Virtual Network Gateway
<ol>
 	<li>In the Azure Portal, Click on Virtual Network Gateway.  Then Click Add.</li>
 	<li>Now Click Add.</li>
 	<li>Fill-In Fields:
<ol>
 	<li>Name: My-Virtual-Gateway</li>
 	<li>Virtual Network: Will Be Network You Created in Previous Step.</li>
 	<li>Public IP Address: Choose from list or Click Add IP.</li>
 	<li>Gateway Type: VPN</li>
 	<li>VPN Type: Route-Based</li>
 	<li>Location: Same as Above.</li>
 	<li>Click Create.  (May take a little while to finish.)</li>
</ol>
</li>
</ol>
</li>
 	<li>Create Local Network Gateway
<ol>
 	<li>In the Azure Portal, Click on Local Network Gateway.  Then Click Add.</li>
 	<li>Fill-In Fields:
<ol>
 	<li>Name: My-Local-Network-Gateway</li>
 	<li>IP Address: Public IP of Your Home/Lab</li>
 	<li>Address Space: 192.168.1.0 / 24 (255.255.255.0) (Your Home Network)</li>
 	<li>Resource Group: Resource Group Created Earlier</li>
 	<li>Location: Same Location</li>
 	<li>Click Create.</li>
</ol>
</li>
</ol>
</li>
 	<li>Create VPN Connection
<ol>
 	<li>In Azure Portal, Click on your Local Network Gateway (My-Local-Network-Gateway)</li>
 	<li>Click on Connections.</li>
 	<li>Click Add.</li>
 	<li>Fill-In Field:
<ol>
 	<li>You will need to specify the <strong>Virtual</strong> and <strong>Local LAN gateways</strong> we created in <strong>Step 3</strong> and <strong>Step 4</strong>, for the <strong>Virtual Network Gateway</strong> and <strong>Local Network Gateway</strong>, respectively.</li>
 	<li>Shared Key: Using a random 32-bit key is important.  This can easily be generated with something like powershell or like this <a target="_blank" href="https://identitysafe.norton.com/password-generator" rel="noopener">tool</a>.  Generate a 32-bin key and put it in the Shared Key PSK field.  Also keep the key because you will need it later in this tutorial.</li>
 	<li>Click Create.</li>
</ol>
</li>
</ol>
</li>
 	<li>This completes the Azure Configuration. Next Begin RRAS Configuration.</li>
 	<li>On any windows machine on your home/lab network, install the RRAS Role.
<ol>
 	<li>Powershell: Install-windowsfeature -name directaccess-vpn -IncludeManagementTools</li>
</ol>
</li>
 	<li>Configure RRAS:</li>
 	<li>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: 172.10.1.0</li>
 	<li>Network Mask: 255.255.255.0</li>
 	<li>Metric: 1</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>VPN Connection in Azure</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 any IP on any VM in your new Azure Network 172.10.1.x.  You should get a response.

Now any Azure VM that you put on 172.10.1.x 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 setup a static route on your home router.  In this configuration, I created a static route on my router configured like this:
<ol>
 	<li>Network: 172.10.0.0</li>
 	<li>Netmask: 255.255.0.0</li>
 	<li>Gateway: 192.168.1.202 (Internal IP of your RRAS Server)</li>
 	<li>Metric: 1</li>
</ol>
</li>
</ol>
&nbsp;

These were the precise steps I took to getting my networks connected.  In particular, I used these 2 articles as references, so I thought I should include a link-back to them here.  In my situation, I combined some of both of these articles and a bit of my own spin on it.  I think this way worked best for me.  I you find this helpful.

&nbsp;

References:

<a target="_blank" href="https://blogs.technet.microsoft.com/jletsch/2016/03/15/lets-configure-azure-site-to-site-vpn-with-rras-in-azure-resource-manager/" rel="noopener">https://blogs.technet.microsoft.com/jletsch/2016/03/15/lets-configure-azure-site-to-site-vpn-with-rras-in-azure-resource-manager/</a>

https://scomandothergeekystuff.com/2016/09/19/creating-a-site-to-site-vpn-with-azure-resource-manager-arm-and-windows-2012r2/

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>OCS 2007 to OCS 2007 R2 Migration</title>
      <link>https://docs.microsoft.com/archive/blogs/dj/ocs-2007-to-ocs-2007-r2-migration</link>
      <pubDate>Fri, 16 Apr 2010 08:03:00 GMT</pubDate>
      <dc:creator><![CDATA[djtech2k]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/dj/2010/04/16/ocs-2007-to-ocs-2007-r2-migration/</guid>
      <description><![CDATA[I recently had the pleasure of working on an environment that was working on a migration from OCS...]]></description>
      <content:encoded><![CDATA[<p><font size="3">I recently had the pleasure of working on an environment that was working on a migration from OCS 2007 Std to OCS 2007 R2 Ent.&nbsp; The 2 environments were installed in parallel and were not separated by any network firewalls or any other communication filtering.</font><p><font size="3">The issue that was occurring was that when any user was moved from the old pool to any of the pool's on the new R2 environment, that user would not be able to communicate with any user still in the old pool.&nbsp; Needless to say, this was a major problem for the migration.&nbsp; After some research, we were able to nail it down to an "old server" to "new server" communication problem.&nbsp; The communicator client worked no matter which server you pointed to or which pool your account was in.&nbsp; This further enforced server-to-server communication to us.&nbsp; Here is some error information that we were getting:</font></p><p><font size="3"></font>&nbsp;</p><textarea style="BACKGROUND-COLOR: #dedfdf; WIDTH: 729px; HEIGHT: 342px; style: " rows="20" cols="87" height: width:>Event Viewer:
EventID: 14428   Source: OCS Protocol Stack
TLS outgoing connection failures (SIPPROXY_E_ROUTING_UNKNOWN_SERVER) &ndash;error-code: 0xC3E93D6A while trying to connect to host &ldquo;ocs-enterprise-pool.FQDN&rdquo;


SIPStack Log:
Transport: M-TLS
Result-Code: 0x80072746 WSAECONNRESET

OLD SERVER SIPSTack Log:
&ldquo;No match for the peer identity result 0xC3E93D6A (SIPPROXY_E_ROUTING_UNKNOWN_SERVER)&rdquo;

Excerpt from old and new servers in SIPSTack Log:
Text: The FQDN in the peer&rsquo;s certificate subject name is not a configured server on this network interface.
Data: FQDN=ocs-enterprise-pool.FQDN
Result-Code: 0xc3e93d6a

There are other events and SIPStack logs that complain about not being able to find the CRL and also complaining about the certificate subject not matching the peer name.
</textarea><p style="MARGIN: 0in 0in 0pt" class="MsoNormal"><span style="COLOR: #1f497d"><font size="3"><font face="Calibri"><font color="#000000"></font></font></font></span>&nbsp;</p><p style="MARGIN: 0in 0in 0pt" class="MsoNormal"><span style="COLOR: #1f497d"><font size="3"><font face="Calibri"><font color="#000000">With some research and consultation, <?xml:namespace prefix = o /><p>&nbsp;we found that there were some patches that could have an impact, so we gave them a try.&nbsp; After installing hotfixes KB957465 KB956389 on the old server and the communicator client, we rebooted the old server and the server-to-server communication began working immediately.&nbsp; These patches and the reboot resolved the issue for us.&nbsp; Once that was working, we noticed that no more than 2 people could join a session on the new pool's.&nbsp; A few minutes of research later, and we found that KB974009 fixed the issue.&nbsp;</p></font></font></font></span></p><p style="MARGIN: 0in 0in 0pt" class="MsoNormal"><span style="COLOR: #1f497d"><font size="3"><font color="#000000" face="Calibri"><p>&nbsp;</p></font></font></span></p><p style="MARGIN: 0in 0in 0pt" class="MsoNormal"><span style="COLOR: #1f497d"><font size="3"><font color="#000000" face="Calibri"><p>So if you are having communication problems while doing an OCS migration, those hotfixes/procedures may help you.</p></font></font></span></p><p mce_keep="true">&nbsp;</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Simple Scripting Technique With VBScript and PowerShell</title>
      <link>https://docs.microsoft.com/archive/blogs/dj/simple-scripting-technique-with-vbscript-and-powershell</link>
      <pubDate>Thu, 13 Aug 2009 21:48:00 GMT</pubDate>
      <dc:creator><![CDATA[djtech2k]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/dj/2009/08/13/simple-scripting-technique-with-vbscript-and-powershell/</guid>
      <description><![CDATA[Although more time has passed since my last post than I had realized, I wanted to post something to...]]></description>
      <content:encoded><![CDATA[<p>Although more time has passed since my last post than I had realized, I wanted to post something to the point but still useful for some.&nbsp; One of the things that I have grown to enjoy over the years is scripting and automation.&nbsp; Sometimes it can save you hours of work and thousands of dollars and yet sometimes it may have been quicker to perform the task manually.&nbsp; In either event, I take opportunities as they come to automate tasks so I can save time or at the least, save it for a rainy day when I may need to do that same thing again.<p>&nbsp;So today I am going to do something very basic and simple.&nbsp; I am going to show some sample vbscript code that will read a specified directory and display out the names of all files inside of that directory.&nbsp; This is the very simple beginner script, so it does not do things like recurse subdirectories or account for things like the directory you specify being missing.&nbsp; Those are more complex and I will post some of those things in the future.</p><p>&nbsp;So to start off, I have made the script to allow you to feed it the directory to search, rather than hard-coding it into the code.</p><textarea style="BACKGROUND-COLOR: #dedfdf; WIDTH: 351px; HEIGHT: 138px" rows="4" cols="37" readonly scripting.filesystemobject value="








&lt;P&gt;Set fso = CreateObject(">sFolder = Wscript.Arguments.Item(0)

Set objFolders = fso.GetFolder(sFolder)
Set objFiles = objFolders.Files

For Each File In objFiles
wscript.echo File
Next </textarea><p>To run the above code successfully, I would run it in a command prompt with something like this:</p><p><strong>c:&gt;cscript script-name.vbs c:temp</strong></p><p>In that example, the script would scan "c:temp" and report back the files it find in that directory.&nbsp; Yes, running "dir c:temp" from any command prompt would accomplish similar results, but by doing it in vbscript it opens up all sorts of possibilites.&nbsp; Once I identify each file, I could provide a lot more data about each file and I could then perform other actions on them as I needed.&nbsp; Again, I will cover some of that later.</p><p>In contrast, to do a similar task in powershell, it would be:</p><textarea style="BACKGROUND-COLOR: #dedfdf; WIDTH: 340px; HEIGHT: 101px" rows="4" cols="37" readonly>GCI c:temp

or

Get-ChildItem c:temp</textarea><p>&nbsp;That code would do basically the same as a "dir" at a command prompt whereas the vbscript would ONLY list the files in the directory and not subdirectory.&nbsp; To make the above powershell recurse all the subdirectories, simply add "-R" to the command.</p><p>I hope to be able to post far more useful and complex scripts as time allows.&nbsp; I will also try to point out the differences between the scripting techniques, like vbscript or powershell, as I walk through them.</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>My Take: What Makes an IT Project Successful?</title>
      <link>https://docs.microsoft.com/archive/blogs/dj/my-take-what-makes-an-it-project-successful</link>
      <pubDate>Wed, 05 Aug 2009 18:31:00 GMT</pubDate>
      <dc:creator><![CDATA[djtech2k]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/dj/2009/08/05/my-take-what-makes-an-it-project-successful/</guid>
      <description><![CDATA[And so it begins....&nbsp;As I begin this very first Blog post, I had thought about writing about...]]></description>
      <content:encoded><![CDATA[<p>And so it begins....<p>&nbsp;As I begin this very first Blog post, I had thought about writing about many different topics.&nbsp; I had considered starting with a simply technical post with maybe some script code or a technical thought.&nbsp; Instead, I decided to write about something that I have been experiencing onsite with my customer and starting from that point to see where it leads.&nbsp; So I decided on the topic or question of "What makes an IT project successful?".</p><p>&nbsp;There are many factors that come into play in an IT Project.&nbsp; Some would say that a project manager or a quality engineer make it work while others would say that a good support person or a project sponsor are the key elements to success.&nbsp; In most cases, I could not argue that all of those things and many more are very important to have and arguably the most important.&nbsp; However, I have a slightly different view on the situation.&nbsp; I think the single most important thing to making an IT project a success is something that can be said for many things outside of IT.&nbsp; I think that its one of the simplest things that we rely on yet overlook constantly.&nbsp; I think the single most important thing to being successful is Relationships.&nbsp; Yes I think relationships can make or break an IT project just like it can make or break many other things as well.</p><p>&nbsp;If you sit back and think, you could have a room full of top quality engineers, program managers, support personnel, a passionate project sponsor, a CIO with a very healthy budget, and yet still have a failing project.&nbsp; With all the right pieces, how could a project fail?&nbsp; Well in my experience, without the right relationships in place, it will fail.&nbsp; You could have all of these key people and resources, but if they cannot communicate and have a productive working relationship then the project will fail.&nbsp; I have seen it happen time and time again.&nbsp; I have fortunately been able to resolve many situations and help get projects back on track even when I had little or no involvement in the project just because I was able to get different people to communicate or be a "bridge" between different people.&nbsp; Communication and relationships are truly what makes things happen.&nbsp; If your storage tech cannot effectively communicate with your PM or your backup tech, then you have a problem.&nbsp; If your engineers do not have a relationship with your implementation or&nbsp;O&amp;M people, then you have problem.&nbsp; The examples could go on for days.&nbsp; Although it seems so obvious and simple, it is so overlooked on so many IT Projects.&nbsp; Its often an easy thing to fix once the problem is identified and admitted by the people involved.&nbsp; Unfortunately it sometimes either comes too late or at the loss of millions of dollars due to lack of productivity.&nbsp; When relationships are not present, everyone loses.&nbsp;</p><p>&nbsp;So, if you find yourself working on a struggling project and want to do something to make it work, consider what relationships or communication lanes that may not be open in the project and what impact they have.&nbsp; Although it can sometimes be a struggle, getting people to put down their defenses and just talk sometimes resolves the majority of the problems.</p><p>&nbsp;So simple, yet so often overlooked.</p></p>
]]></content:encoded>
    </item>
  </channel>
</rss>