<?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>nettracer</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/nettracer/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/nettracer/feed.xml</link>
    <description />
    <lastBuildDate>Thu, 11 Jan 2018 11:28:32 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Windows 2012 R2 server fails to establish outbound connections</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/windows-2012-r2-server-fails-to-establish-outbound-connections</link>
      <pubDate>Thu, 11 Jan 2018 11:28:31 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/?p=805</guid>
      <description><![CDATA[Hi there,

It's been a very long while since I have blogged something here and it's time to come...]]></description>
      <content:encoded><![CDATA[Hi there,

It's been a very long while since I have blogged something here and it's time to come back and continue sharing our field experiences with the IT community hoping to shed light for similar problems.

I was tasked to deal with a customer problem where the end users were reporting various problems like "cannot access the file server, getting authentication prompts" and the IT admins were also observing various problems like the server wasn't properly applying GPOs, Netlogon service complaining about DC access issues and etc. At times, they were even able to manually reproduce the issue by issuing a "telnet DC-IP 389" command from the affected server.

There might be a lot of reasons behind, so I decided to collect a number of logs while the issue was reproduced:

a) TCPIP ETL trace:

You can collect it with the below commands on a Windows client/server: (from an elevated command prompt)

netsh start trace capture=yes scenario=internetclient

&lt;&lt;repro&gt;&gt;

netsh trace stop

b) Network trace:

This could be collected in different ways like using the above command, Wireshark, Network Monitor, Message Analyzer,...

c) Handle outputs

This could be collected as follows:

Note: Handle tool could be downloaded from the following link: <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftechnet.microsoft.com%2Fen-us%2Fsysinternals%2Fhandle.aspx&amp;data=02%7C01%7CMurat.Kayacan%40microsoft.com%7Cbca19187b4fc4521c06e08d55371b4ac%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636506670214396717&amp;sdata=%2FWyaXeTqFKz0W6FJoRryZdhJpt%2Fphgkkm7NSKi5pwgk%3D&amp;reserved=0">https://technet.microsoft.com/en-us/sysinternals/handle.aspx</a> Handle v4.1

<strong>handle.exe -a -u &gt;&gt; %computername%_handledetails.txt</strong>

<strong>handle.exe -s &gt;&gt; %computername%_handlesummary.txt</strong>

<strong>ANALYSIS:</strong>

<strong>========</strong>

The logs were collected while doing a repro with telnet command on the server. After the logs were shared with us, I checked various things to understand why the outbound connection might be failing (by the way, the file server not being able to authenticate the incoming users was also a side effect of this issue since the file server wasn't able to verify the client credentials via Netlogon secure channel)

1) I first checked network traces, but there were no outgoing connection attempts (TCP SYNs sent to the target server) which means the issue is local to the server itself

2) Then I checked the TCPIP ETL trace and observed the root cause:

Note: You can open up the ETL file that is generated as a result of running netsh command in Network Monitor or Message Analyzer

[0]03E0.5214::01/04/18-15:07:37.5237622 [Microsoft-Windows-TCPIP/Diagnostic] TCP: endpoint (sockaddr=0.0.0.0) <strong>bind failed: port-acquisition status</strong> = <span style="color: #ff0000"><strong>The transport address could not be opened because all the available addresses are in use</strong></span>..

[0]58F0.4558::01/04/18-15:07:51.8242042 [Microsoft-Windows-TCPIP/Diagnostic] TCP: endpoint (sockaddr=0.0.0.0) <strong>bind failed: port-acquisition status</strong> = <strong><span style="color: #ff0000">The transport address could not be opened because all the available addresses are in use.</span>.</strong>

[0]04D8.072C::01/04/18-15:07:52.0110322 [Microsoft-Windows-TCPIP/Diagnostic] TCP: endpoint (sockaddr=0.0.0.0) bind failed: port-acquisition status = The transport address could not be opened because all the available addresses are in use.. 1616260 [0]

...

<span style="color: #ff0000"><strong>Actually that clearly explained why the outbound connections were failing: PORT EXHAUSTION.</strong></span>

3) And the main reason behind the port failure was a socket leak caused by an outdated 3rd party AV software: (from handles.exe output)

Note: The process name was deliberately changed

92355 <span style="color: #ff0000"><strong>ABC.exe</strong> </span>pid: 1148 NT AUTHORITY\SYSTEM

92517   144: File  (---)   \Device\Afd

92519   148: File  (---)   \Device\Afd

92627   220: File  (---)   \Device\Afd

92629   224: File  (---)   \Device\Afd

92633   22C: File  (---)   \Device\Afd

92635   230: File  (---)   \Device\Afd

92689   29C: File  (---)   \Device\Afd

92701   2B4: File  (---)   \Device\Afd

92703   2B8: File  (---)   \Device\Afd

92705   2BC: File  (---)   \Device\Afd

92707   2C0: File  (---)   \Device\Afd

92743   308: File  (---)   \Device\Afd

92755   320: File  (---)   \Device\Afd

92761   32C: File  (---)   \Device\Afd

92767   338: File  (---)   \Device\Afd

92771   340: File  (---)   \Device\Afd

92773   344: File  (---)   \Device\Afd

92779   350: File  (---)   \Device\Afd

92881   420: File  (---)   \Device\Afd

92897   440: File  (---)   \Device\Afd

92899   444: File  (---)   \Device\Afd

92927   47C: File  (---)   \Device\Afd

92929   480: File  (---)   \Device\Afd

92933   488: File  (---)   \Device\Afd

92935   48C: File  (---)   \Device\Afd

92941   498: File  (---)   \Device\Afd

92977   4E0: File  (---)   \Device\Afd

92993   500: File  (---)   \Device\Afd

93053   578: File  (---)   \Device\Afd

93073   5A0: File  (---)   \Device\Afd

93075   5A4: File  (---)   \Device\Afd

93077   5A8: File  (---)   \Device\Afd

93079   5AC: File  (---)   \Device\Afd

93093   5C8: File  (---)   \Device\Afd

93113   5F0: File  (---)   \Device\Afd

93145   630: File  (---)   \Device\Afd

93165   658: File  (---)   \Device\Afd

93167   65C: File  (---)   \Device\Afd

93175   66C: File  (---)   \Device\Afd

93195   694: File  (---)   \Device\Afd

93199   69C: File  (---)   \Device\Afd

93217   6C0: File  (---)   \Device\Afd

93219   6C4: File  (---)   \Device\Afd

93227   6D4: File  (---)   \Device\Afd

93239   6EC: File  (---)   \Device\Afd

93249   700: File  (---)   \Device\Afd

93253   708: File  (---)   \Device\Afd

93265   720: File  (---)   \Device\Afd

93269   728: File  (---)   \Device\Afd

93271   72C: File  (---)   \Device\Afd

93273   730: File  (---)   \Device\Afd

93275   734: File  (---)   \Device\Afd

93277   738: File  (---)   \Device\Afd

93281   740: File  (---)   \Device\Afd

93283   744: File  (---)   \Device\Afd

93285   748: File  (---)   \Device\Afd

93297   760: File  (---)   \Device\Afd

93299   764: File  (---)   \Device\Afd

93301   768: File  (---)   \Device\Afd

93305   770: File  (---)   \Device\Afd

93307   774: File  (---)   \Device\Afd

93313   780: File  (---)   \Device\Afd

93317   788: File  (---)   \Device\Afd

93321   790: File  (---)   \Device\Afd

93323   794: File  (---)   \Device\Afd

93327   79C: File  (---)   \Device\Afd

93329   7A0: File  (---)   \Device\Afd

93331   7A4: File  (---)   \Device\Afd

93333   7A8: File  (---)   \Device\Afd

93335   7AC: File  (---)   \Device\Afd

93339   7B4: File  (---)   \Device\Afd

93343   7BC: File  (---)   \Device\Afd

93355   7D4: File  (---)   \Device\Afd

93357   7D8: File  (---)   \Device\Afd

93359   7DC: File  (---)   \Device\Afd

93361   7E0: File  (---)   \Device\Afd

93365   7E8: File  (---)   \Device\Afd

93373   7F8: File  (---)   \Device\Afd

93383   810: File  (---)   \Device\Afd

93389   81C: File  (---)   \Device\Afd

…

&nbsp;

<span style="color: #339966"><strong>RESOLUTION:</strong></span>

<span style="color: #339966"><strong>===========</strong></span>

So we advised the customer to update the 3rd party AV software. Apart from that, you can take the following actions to avoid possible port leak issues:

a) Please make sure that Windows OS runs with latest rollups/security updates

b) Please make sure that all 3rd party softwares are up to date (including Firewall, AV, backup or any kind of software that might have to frequently establish outbound connections)

c) Finally you may consider extending the port range for busy servers which are supposed to establish many outbound connections very frequently. The following is the maximum range that you can set, but you may extend the range in phases instead of maxing out at the very beginning: (from an elevated command prompt)

<b>netsh int ipv4 set dynamicport tcp start=1025 num=64500</b>

<b>netsh int ipv4 set dynamicport udp start=1025 num=64500</b>

and you can decrease the TCPTimedWaitDelay registry key on the servers: (you may lower it to 30 seconds)

<a href="https://technet.microsoft.com/en-us/library/cc757512(v=ws.10).aspx"><span>https://technet.microsoft.com/en-us/library/cc757512(v=ws.10).aspx</span></a><span> TcpTimedWaitDelay</span>

<i>The TcpTimedWaitDelay value determines the length of time that a connection stays in the TIME_WAIT state when being closed. While a connection is in the TIME_WAIT state, the socket pair cannot be reused. This is also known as the 2MSL state because the value should be twice the maximum segment lifetime on the network. To adjust the TcpTimedWaitDelay settings, you have to modify/create the registry settings as listed below: </i>

&nbsp;
<table>
<tbody>
<tr>
<td><i>Key:</i></td>
<td><b><i>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</i></b></td>
</tr>
<tr>
<td><i>Value:</i></td>
<td><b><i>TcpTimedWaitDelay</i></b></td>
</tr>
<tr>
<td><i>Data Type:</i></td>
<td><b><i>REG_DWORD</i></b></td>
</tr>
<tr>
<td><i>Range:</i></td>
<td><i>30-300 (decimal)</i></td>
</tr>
<tr>
<td><i>Default value:</i></td>
<td><i>0x78 (120 decimal)</i></td>
</tr>
<tr>
<td><i>Recommended value:</i></td>
<td><i>30</i></td>
</tr>
<tr>
<td><i>Value exists by default?</i></td>
<td><i>No, needs to be added.</i></td>
</tr>
</tbody>
</table>
Note: This change requires a server reboot

&nbsp;

Please note that the same techniques could be applied to virtually any Windows versions as of Windows 7/Windows 2008 R2 onwards easily.

&nbsp;

Hope this helps

Thanks,

Murat

&nbsp;

<em></em>]]></content:encoded>
    </item>
    <item>
      <title>Testing Lync server 2013 external URLs from Lync clients (external web service, meet, office webapps, lyncdiscover and dialin)</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/testing-lync-server-2013-external-urls-from-lync-clients-external-web-service-meet-office-webapps-lyncdiscover-and-dialin</link>
      <pubDate>Wed, 21 May 2014 06:32:27 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2014/05/21/testing-lync-server-2013-external-urls-from-lync-clients-external-web-service-meet-office-webapps-lyncdiscover-and-dialin/</guid>
      <description><![CDATA[Hi there,
&nbsp;
In this blog post, I&rsquo;ll be talking about another powershell based tool...]]></description>
      <content:encoded><![CDATA[<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">Hi there,</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">In this blog post, I&rsquo;ll be talking about another powershell based tool which could be used to check name resolution, TCP layer connectivity and SSL/TLS negotiation for various URLs that are accessible through your reverse proxy which are:</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">- External web services URL</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">- Meet URL</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">- Office WebApps URL</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">- Lyncdiscover URL</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">- Dialin URL</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">When the tool is run, you can see if the given URL is successfully resolved to a name. If name resolution succeeds, a TCP session is attempted to the target and if the TCP session successfully created an SSL/TLS negotiation is done with the target URL. And if that succeeds as well, the subject names and subject alternative names in the returned certificate are dumped by the tool. Also expiration time of each certificate is dumped.</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">You&rsquo;ll have to provide each URL manually (actually I was planning to read all such details from topology file removing the requirement of manual input but due to some issues I decided to enter the information manual for the time being).</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">Such URL details could be easily obtained from your topology file:</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">- External Web services FQDN:</span></span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"> </span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/3857.figure1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/3857.figure1.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/3857.figure1.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/3857.figure1.jpg" border="0" /></a><br /></span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">- Meet URL and Dialin URL:</span></span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/0508.figure2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/0508.figure2.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/0508.figure2.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/0508.figure2.jpg" border="0" /></a></span><br /></span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#333399;"><span style="font-family:Calibri;font-size:medium;">- Office WebApps URL:</span></span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure3.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure3.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure3.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure3.jpg" border="0" /></a></span><br /></span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">- Lyncdiscover URL:</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">Lyncdiscover URL is built by adding &ldquo;lyncdiscover&rdquo; to the beginning of sip domain. Examples:</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">lyncdiscover.contoso.com</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">lyncdiscover.fabrikam.com</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; Here is the full Powershell script source:</span></b></span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">#------------SCRIPT STARTS HERE-----------</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ResolveLyncNames() resolves various Lync names to IP addresses</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">function ResolveLyncNames {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">param($LyncFqdn)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">try {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$ipaddr&nbsp;&nbsp; = [System.Net.Dns]::GetHostAddresses($LyncFqdn)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;Successfully resolved $LyncFqdn to $ipaddr&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">return 1</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">catch {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$exception = New-Object system.net.sockets.socketexception</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$errorcode = $exception.ErrorCode</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;Name resolution failed, error code:$errorcode&quot; -foregroundcolor Red</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;Error details: $exception&quot; -foregroundcolor Red</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">return 0</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># TLSConnectionCheck() establishes TLS session to remote host at the given TCP port</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">function TLSConnectionCheck&nbsp; {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">param ($remotehost,$remoteport)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">try {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$TCPConnection = New-Object System.Net.Sockets.Tcpclient($remotehost, $remoteport)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;TCP connection has succeeded&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$TCPStream&nbsp;&nbsp;&nbsp;&nbsp; = $TCPConnection.GetStream()</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">try {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SSLStream&nbsp;&nbsp;&nbsp;&nbsp; = New-Object System.Net.Security.SslStream($TCPStream)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;SSL connection has succeeded&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">try {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SSLStream.AuthenticateAsClient($remotehost)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;SSL authentication has succeeded&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">catch {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;There&#39;s a problem with SSL authentication to $remotehost&quot; -ForegroundColor Red</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">return</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$certificate = $SSLStream.get_remotecertificate()</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$certificateX509 = New-Object system.security.cryptography.x509certificates.x509certificate2($certificate)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SANextensions = New-Object system.security.cryptography.x509certificates.x509Certificate2Collection($certificateX509)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SANextensions = $SANextensions.Extensions | Where-Object {$_.Oid.FriendlyName -eq &quot;subject alternative name&quot;}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Remote host certificate details:&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;Issuer:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot; $SSLStream.RemoteCertificate.Issuer -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;Subject name:&nbsp;&nbsp;&nbsp; &quot; $SSLStream.RemoteCertificate.Subject -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;Expiration time: &quot; $SSLStream.RemoteCertificate.GetExpirationDateString() -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;Serial number:&nbsp;&nbsp; &quot; $SSLStream.RemoteCertificate.GetSerialNumberString() -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Subject alternative names:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SANextensions.Format(1)</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;Please make sure that Subject name and Subject alternative names in the certificate are compatible with the names given in https://technet.microsoft.com/en-us/library/gg429704.aspx&quot; -BackgroundColor DarkCyan</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;Wildcard names in SAN are supported for meet, dialin and Lyncdiscover URLs. Please see https://technet.microsoft.com/en-us/library/hh202161.aspx for more details&quot; -BackgroundColor DarkCyan</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">catch {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;$remotehost doesn&#39;t support SSL connections at TCP port $remoteport&quot; -foregroundcolor Red</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">catch {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$exception = New-Object system.net.sockets.socketexception</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$errorcode = $exception.ErrorCode</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;TCP connection to $remotehost failed, error code:$errorcode&quot; -foregroundcolor Red</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;Error details: $exception&quot; -foregroundcolor Red</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">#</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># TESTING</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">#</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;Please enter your external Web services FQDN. This could be seen from your Lync topology. You can skip it by pressing Enter. Example: webext.contoso.com&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$LyncExternalWebserviceFqdn = Read-Host</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;Please enter your meet URL. This could be seen from your Lync topology. You can skip it by pressing Enter. Example: meet.contoso.com&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SimpleURL_meet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = Read-Host</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;Please enter your Office WebApp server FQDN. This could be seen from your Lync topology. You can skip it by pressing Enter. Example: wac.contoso.com&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$LyncWac&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = Read-Host</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;Please enter your Lyncdiscover URL. You can skip it by pressing Enter. Example: lyncdiscover.contoso.com&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SimpleURl_lyncdiscover&nbsp;&nbsp;&nbsp;&nbsp; = Read-Host</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">write-host &quot;Please enter your dialin URL. This could be seen from your Lync topology. You can skip it by pressing Enter. Example: dialin.contoso.com&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SimpleURL_dialin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = Read-Host</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># Resolve and access external web service fqdn</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;TEST 1: External Web service FQDN name resolution and access tests&quot; -ForegroundColor yellow</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$LyncExternalWebserviceFqdnport = 443</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">If([string]::IsNullOrEmpty($LyncExternalWebserviceFqdn)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;Write-Host &quot;External Web services URL is NULL. Bypassing External web services accessibility check&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">else&nbsp; {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to resolve External Web Service fqdn (&quot;$LyncExternalWebserviceFqdn&quot; )&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">if(ResolveLyncNames($LyncExternalWebserviceFqdn)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to connect to External Web Service fqdn (&quot;$LyncExternalWebserviceFqdn&quot; ) at TCP port $LyncExternalWebserviceFqdnport&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">TLSConnectionCheck $LyncExternalWebserviceFqdn $LyncExternalWebserviceFqdnport</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># Resolve and access Meet URL</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;TEST 2: Meet URL name resolution and access tests&quot; -ForegroundColor yellow</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">If([string]::IsNullOrEmpty($SimpleURL_meet)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;Write-Host &quot;Meet URL is NULL. Bypassing Meet URL accessibility check&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">else {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SimpleURL_meet_port = 443</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to resolve Meet URL (&quot;$SimpleURL_meet&quot; )&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">if(ResolveLyncNames($SimpleURL_meet)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to connect to Meet URL (&quot;$SimpleURL_meet&quot; ) at TCP port $SimpleURL_meet_port&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">TLSConnectionCheck $SimpleURL_meet $SimpleURL_meet_port</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># Resolve and access Office WebApps URL</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;TEST 3: Office WebApps server FQDN name resolution and access tests&quot; -ForegroundColor yellow</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$LyncWacport = 443</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">If([string]::IsNullOrEmpty($LyncWac)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;Write-Host &quot;Office WebApps URL is NULL. Bypassing Office WebApps services accessibility check&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">else&nbsp; {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to resolve Office WebApps server fqdn (&quot;$LyncWac&quot; )&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">if(ResolveLyncNames($LyncWac)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to connect to resolve Office WebApps server fqdn (&quot;$LyncWac&quot; ) at TCP port $LyncWacport&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">TLSConnectionCheck $LyncWac $LyncWacport</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># Resolve and access Lyncdiscover URL</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;TEST 4: Lyncdiscover URL name resolution and access tests&quot; -ForegroundColor yellow</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">If([string]::IsNullOrEmpty($SimpleURl_lyncdiscover)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;Write-Host &quot;Lyncdiscover URL is NULL. Bypassing Lyncdiscover URL accessibility check&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">else {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SimpleURL_lyncdiscover_port = 443</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to resolve Admin URL (&quot;$SimpleURl_lyncdiscover&quot; )&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">if(ResolveLyncNames($SimpleURl_lyncdiscover)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to connect to Admin URL (&quot;$SimpleURl_lyncdiscover&quot; ) at TCP port $SimpleURL_lyncdiscover_port&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">TLSConnectionCheck $SimpleURl_lyncdiscover $SimpleURL_lyncdiscover_port</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># Resolve and access Dialin URL</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;"># ==============================================================================================</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;TEST 5: Dialin URL name resolution and access tests&quot; -ForegroundColor yellow</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;================================================================================================================&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">If([string]::IsNullOrEmpty($SimpleURL_dialin)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;Write-Host &quot;Dialin URL is NULL. Bypassing Dialin URL accessibility check&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">else {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">$SimpleURL_dialin_port = 443</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to resolve Dialin URL (&quot;$SimpleURL_dialin&quot; )&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">if(ResolveLyncNames($SimpleURL_dialin)) {</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">Write-Host &quot;=&gt; Attempting to connect to Dialin URL (&quot;$SimpleURL_dialin&quot; ) at TCP port $SimpleURL_dialin_port&quot;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">TLSConnectionCheck $SimpleURL_dialin $SimpleURL_dialin_port</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">}</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></p>
<p><span style="color:#333399;">#------------SCRIPT ENDS HERE-----------</span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="color:#333399;font-family:Times New Roman;font-size:medium;"> </span><br /></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#203864;"><span style="font-family:Calibri;font-size:medium;">=&gt; You can also find a sample output below:</span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span><br /></span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5633.figure4.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5633.figure4.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5633.figure4.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5633.figure4.jpg" border="0" /></a><br /></span></span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;">&nbsp;</span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#203864;"><span style="font-family:Calibri;font-size:medium;">Hope this helps</span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#203864;"><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#203864;"><span style="font-family:Calibri;font-size:medium;">Thanks,</span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"> </span></span></span></p>
<p style="margin:0in 0in 0pt;"><span style="color:#203864;"><span style="font-family:Calibri;font-size:medium;">Murat</span></span><span style="font-family:Times New Roman;font-size:medium;"><span style="font-family:Times New Roman;font-size:medium;"><br /></span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Testing Exchange EWS service accessibility from internal/external Lync clients</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/testing-exchange-ews-service-accessibility-from-internalexternal-lync-clients</link>
      <pubDate>Wed, 21 May 2014 03:44:12 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2014/05/21/testing-exchange-ews-service-accessibility-from-internalexternal-lync-clients/</guid>
      <description><![CDATA[Hi there,
&nbsp;
In this blog post, I&rsquo;ll be talking about a powershell based tool which...]]></description>
      <content:encoded><![CDATA[<p><span style="color:#333399;font-family:Calibri;font-size:medium;">Hi there,</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">In this blog post, I&rsquo;ll be talking about a powershell based tool which could be used to check Exchange EWS connectivity especially from external Lync clients where the client might not be able to access Exchange EWS and hence cannot display meetings and similar.</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">The powershell tool uses Exchange EWS managed API to connect to EWS service, so you have to install the API to the test client from where you plan to run the script. The library could be downloaded at: </span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;"><a href="https://www.microsoft.com/en-us/download/details.aspx?id=35371"><span style="color:#333399;font-family:Calibri;font-size:medium;">https://www.microsoft.com/en-us/download/details.aspx?id=35371</span></a><span style="font-family:Calibri;font-size:medium;"> Microsoft Exchange Web Services Managed API 2.0 </span></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; Here is the full Powershell script source:</span></b></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;">#------------SCRIPT STARTS HERE-----------</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function TestExternalEWS () {</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param($emailaddress)</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-Type -Path &#39;C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll&#39;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;=&gt; Retrieving your credentials for EWS connectivity (Domain\User and password) ...&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $autod = New-Object Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Credentials = (Get-Credential)</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $creds=New-Object System.Net.NetworkCredential($Credentials.UserName.ToString(),$Credentials.GetNetworkCredential().password.ToString())</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $autod.Credentials=$creds</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $autod.EnableScpLookup = $false</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $autod.RedirectionUrlValidationCallback = {$true}</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $autod.TraceEnabled = $TraceEnabled</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;=&gt; Retrieving external EWS URL via Autodiscover service for the given smtp address &#39;$emailaddress&#39; ...&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write-Host</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $response = $autod.GetUserSettings(</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $emailaddress,</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Microsoft.Exchange.WebServices.Autodiscover.UserSettingName]::ExternalMailboxServer,</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Microsoft.Exchange.WebServices.Autodiscover.UserSettingName]::ExternalEcpUrl,</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Microsoft.Exchange.WebServices.Autodiscover.UserSettingName]::ExternalEwsUrl,</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Microsoft.Exchange.WebServices.Autodiscover.UserSettingName]::ExternalOABUrl,</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Microsoft.Exchange.WebServices.Autodiscover.UserSettingName]::ExternalUMUrl,</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Microsoft.Exchange.WebServices.Autodiscover.UserSettingName]::ExternalWebClientUrls</span></p>
<p><span style="color:#333399;">&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:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ExternalEwsUrl = $response.Settings[[Microsoft.Exchange.WebServices.Autodiscover.UserSettingName]::ExternalEwsUrl]</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($ExternalEwsUrl -eq $NULL) {</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;=&gt; Successfully contacted Exchange Autodiscover service but couldn&#39;t retrieve autodiscovery settings for the given smtp address &#39;$emailaddress&#39;&quot; -ForegroundColor Red</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;Error code:&quot; $response.errormessage</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write-Host&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return</span></p>
<p><span style="color:#333399;">&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:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {</span></p>
<p><span style="color:#333399;">&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:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;=&gt; Successfully contacted Autodiscover service and retrieved the external EWS URL for the given smtp address &#39;$emailaddress&#39;&quot; -ForegroundColor green</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host&nbsp; $externalEwsUrl -ForegroundColor Magenta</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host</span></p>
<p><span style="color:#333399;">&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:#333399;">&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:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch {</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;There was an error calling GetUserSettings() function, the error returned:&quot; $_.exception.message -ForegroundColor Red</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write-Host</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;"># Got the EWS URL information, now testing EWS access</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;=&gt; Now making a test call (retrieving given user&#39;s OOF settings) to Exchange Web Service to test external EWS connectivity against &#39;$externalEwsUrl&#39; ...&quot; -ForegroundColor Green</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write-Host</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2007_SP1)</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $uri=[system.URI] $ExternalEwsUrl</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $service.Url = $uri</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</span></p>
<p><span style="color:#333399;">&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:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oofsettings = $service.GetUserOofSettings($emailaddress)</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write-host &quot;=&gt; Successfully retrieved OOF settings.&quot; -foreground Green</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;OOF state: &quot; $oofsettings.State</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;External OOF reply:&quot;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;=============================================================================================================================================&quot;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host $oofsettings.externalreply</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;=============================================================================================================================================&quot;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch {</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write-host &quot;There was an error calling GetUserOofSettings() function, the error returned:&quot; $_.exception.message -ForegroundColor Red</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write-Host</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(($args[0] -eq $NULL))</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write-host &quot;Please specify e-mail address to test&quot;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write-Host &quot;Example: testlyncext.ps1 user-email@contoso.com&quot;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $emailaddress = $args[0]</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TestExternalEWS($emailaddress)</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;">#------------SCRIPT ENDS HERE-----------</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">You can find a sample output below:</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/testoutput.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/testoutput.jpg"><span style="color:#333399;"><img width="424" height="112" style="width:534px;height:123px;" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/testoutput.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/testoutput.jpg" border="0" /></span></a></span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">Hope this helps</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">Thanks,</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">Murat</span></p>
<p><span style="color:#333399;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#333399;font-family:Times New Roman;font-size:medium;"> </span></p>]]></content:encoded>
    </item>
    <item>
      <title>How it works on the wire: IIS HTTP Client certificate authentication</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/how-it-works-on-the-wire-iis-http-client-certificate-authentication</link>
      <pubDate>Mon, 30 Dec 2013 10:06:00 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2013/12/30/how-it-works-on-the-wire-iis-http-client-certificate-authentication/</guid>
      <description><![CDATA[I collaborated with a colleague recently&nbsp;where the IE client was failing to authenticate to IIS...]]></description>
      <content:encoded><![CDATA[<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure2.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure3.png"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure4.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure4.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/fig1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/fig1.jpg"></a>I collaborated with a colleague recently&nbsp;where the IE client was failing to authenticate to IIS and I was requested to analyze a few network traces collected while reproducing the issue. The main issue was that the client (IE) wasn&rsquo;t able to successfully authenticate to IIS server when&nbsp;certificate&nbsp;authentication was configured on IIS side&nbsp;and was getting the HTTP error 403.7.</span></p>
<p></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">First of all, I asked my colleague to setup a lab environment with IIS client certificate authentication configured so that we should be able to see how it works under normal circumstances. After the requested logs were collected, we had a chance to analyze the working traffic. Also I should note that we used server certificate with its private key to decrypt the SSL traffic. </span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; Here is how it works in summary:</span></b></span></p>
<p></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">1) Client establishes an SSL session to the server.</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">2) Client then sends the initial HTTP Get request inside this SSL tunnel</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">3) Server responds to that request with a new SSL re-negotiate request since client certificate authentication is configured on the IIS server side.</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">4) Client establishes a new SSL session inside the original SSL session. This time IIS server also asks the client to send a certificate (IIS server also provides the client with the list of possible CAs from which the client certificate should be obtained)</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">5) Client sends its certificate and then the second SSL negotiation finishes successfully and the server returns HTTP 200 response right after the second SSL negotiation is finished successfully.</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; The&nbsp;TCP 3-way handshake to the IIS server:</span></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">No.&nbsp;&nbsp;&nbsp;&nbsp; Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Delta&nbsp;&nbsp;&nbsp; Source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Protocol Ack number Info</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 68 2013-12-26 13:03:51.654 0.000&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49685 &gt; 443 [SYN] Seq=923564226 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 69 2013-12-26 13:03:51.654 0.000&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 923564227&nbsp; 443 &gt; 49685 [SYN, ACK] Seq=4236088449 Ack=923564227 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 71 2013-12-26 13:03:51.657 0.003&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236088450 49685 &gt; 443 [ACK] Seq=923564227 Ack=4236088450 Win=131400 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; The initial SSL negotiation between the client and the IIS server:</span></b></span></p>
<p></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 72 2013-12-26 13:03:51.657 0.000&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 4236088450 Client Hello</span></p>
<p></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; Please note that IIS server doesn&rsquo;t ask the client send a certificate at the initial SSL negotiation as there&rsquo;s no &ldquo;Certificate request&rdquo; &nbsp;in the server response</span></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 73 2013-12-26 13:03:51.657 0.000&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 923564384&nbsp; <span style="background-color:#ffff00;">Server Hello, Certificate, Server Hello Done</span></span></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 74 2013-12-26 13:03:51.660 0.002&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236089827 49685 &gt; 443 [ACK] Seq=923564384 Ack=4236089827 Win=130020 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 75 2013-12-26 13:03:51.660 0.000&nbsp;&nbsp; &nbsp;10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 4236089827 Client Key Exchange, Change Cipher Spec, Finished</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 76 2013-12-26 13:03:51.664 0.004&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 923564710&nbsp; Change Cipher Spec, Finished</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 77 2013-12-26 13:03:51.666 0.002&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236089886 49685 &gt; 443 [ACK] Seq=923564710 Ack=4236089886 Win=129964 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;"><b><span style="font-family:Calibri;font-size:medium;">Note:&nbsp;To be able to see traffic in clear text from this point on, you need to decrypt the SSL traffic in a way or another.&nbsp; I used the method that I mentioned in a previous blog post of mine: </span></b></span></p>
<p><span style="color:#0000ff;"><b><a href="/b/nettracer/archive/2013/10/12/decrypting-ssl-tls-sessions-with-wireshark-reloaded.aspx"><span style="color:#0000ff;font-family:Calibri;font-size:medium;">https://blogs.technet.com/b/nettracer/archive/2013/10/12/decrypting-ssl-tls-sessions-with-wireshark-reloaded.aspx</span></a></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; The initial GET request (sent inside the SSL channel)</span></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 78 2013-12-26 13:03:51.666 0.000&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTTP&nbsp;&nbsp;&nbsp;&nbsp; 4236089886 GET /1.aspx HTTP/1.1 </span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;"><span style="color:#0000ff;font-family:Calibri;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure2.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure3.png"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure4.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure4.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/fig1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/fig1.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/fig1.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/fig1.jpg" border="0" /></a></span>&nbsp;</span><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; Instead of sending an HTTP response back to the client, the IIS server asks the client to re-negotiate SSL:</span></b></span></p>
<p></p>
<p><span style="color:#0000ff;font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 79 2013-12-26 13:03:51.666 0.000&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 923565216&nbsp; Hello Request</span></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 80 2013-12-26 13:03:51.668 0.001&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236089923 49685 &gt; 443 [ACK] Seq=923565216 Ack=4236089923 Win=131400 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 81 2013-12-26 13:03:51.668 0.000&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 4236089923 Client Hello</span></span></p>
<p></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; This time the IIS server requires the client to send a certificate (as opposed to initial SSL negotiation) by adding &ldquo;Certificate Request&rdquo; to the response that it sends to client. It also includes the names of the accepted CA names from which a client certificate should be issued:</span></b></span></p>
<p><span style="color:#0000ff;"><b><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 82 2013-12-26 13:03:51.669 0.000&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 923565413&nbsp; <span style="background-color:#ffff00;">Server Hello, Certificate, <b>Certificate Request</b>, Server Hello Done</span></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;<span style="color:#0000ff;font-family:Calibri;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure2.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure2.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure2.jpg" border="0" /></a></span></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 83 2013-12-26 13:03:51.676 0.007&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236092088 49685 &gt; 443 [ACK] Seq=923565413 Ack=4236092088 Win=131400 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 84 2013-12-26 13:03:51.684 0.008&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236092088 [TCP segment of a reassembled PDU]</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; The client chooses an appropriate certificate from its certificate store (it should be a client certificate that should be issued by one of those CAs pointed to by the server and it also should have &ldquo;client authentication&rdquo; key usage. And then it sends it to the server within the response packet:</span></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 85 2013-12-26 13:03:51.684 0.000&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 4236092088 Certificate, Client Key Exchange, Certificate Verify</span></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;"><span style="color:#0000ff;font-family:Calibri;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure2.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure3.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure3.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure3.png" border="0" /></a></span></span><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp; 86 2013-12-26 13:03:51.684 0.000&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 923567204&nbsp; 443 &gt; 49685 [ACK] Seq=4236092088 Ack=923567204 Win=131328 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;"><b><span style="font-family:Calibri;font-size:medium;"><span style="background-color:#ffff00;">=&gt; The second SSL negotiation is finished successfully at this point:</span> </span></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 87 2013-12-26 13:03:51.691 0.006&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 923567204&nbsp; Change Cipher Spec, Finished</span></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 88 2013-12-26 13:03:51.694 0.002&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236092178 49685 &gt; 443 [ACK] Seq=923567204 Ack=4236092178 Win=131308 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">=&gt; Then the server returns the response to the initial HTTP Get request:</span></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;"><span style="font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 89 2013-12-26 13:03:51.695 0.001&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTTP&nbsp;&nbsp;&nbsp;&nbsp; 923567204&nbsp; HTTP/1.1 200 OK&nbsp; (text/html)</span></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;<span style="background-color:#ffff00;"><span style="color:#0000ff;font-family:Calibri;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure1.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure2.jpg"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure3.png"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure4.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure4.jpg"><span style="background-color:#ffff00;"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/figure4.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/figure4.jpg" border="0" /></span></a></span><span style="color:#203864;font-family:&#39;Calibri&#39;,&#39;sans-serif&#39;;font-size:11pt;"></span></span></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;background-color:#ffff00;"><b><span style="font-family:Calibri;font-size:medium;">Note: The web page includes the word &ldquo;Hello&rdquo;</span></b></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="background-color:#ffff00;"><strong><span style="color:#0000ff;font-family:Calibri;font-size:medium;">=&gt; Then the client tries to retrieve favicon.ico file which doesn&#39;t exist on the server and finally the session is gracefully terminated by the client:</span></strong></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 90 2013-12-26 13:03:51.701 0.005&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236092599 49685 &gt; 443 [ACK] Seq=923567204 Ack=4236092599 Win=130888 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 91 2013-12-26 13:03:51.795 0.094&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTTP&nbsp;&nbsp;&nbsp;&nbsp; 4236092599 GET /favicon.ico HTTP/1.1 </span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;92 2013-12-26 13:03:51.834 0.039&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTTP&nbsp;&nbsp;&nbsp;&nbsp; 923567582&nbsp; HTTP/1.1 404 Not Found&nbsp; (text/html)</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 93 2013-12-26 13:03:51.844 0.009&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236094044 49685 &gt; 443 [ACK] Seq=923567582 Ack=4236094044 Win=131400 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp; &nbsp;&nbsp;94 2013-12-26 13:03:51.844 0.000&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236094044 49685 &gt; 443 [FIN, ACK] Seq=923567582 Ack=4236094044 Win=131400 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 95 2013-12-26 13:03:51.844 0.000&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 923567583&nbsp; 443 &gt; 49685 [FIN, ACK] Seq=4236094044 Ack=923567583 Win=130816 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;&nbsp;&nbsp;&nbsp; 96 2013-12-26 13:03:51.851 0.007&nbsp;&nbsp;&nbsp; 10.10.10.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.10.15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4236094045 49685 &gt; 443 [ACK] Seq=923567583 Ack=4236094045 Win=131400 Len=0</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">After that, we collected the same set of logs from the customer environment and we realized that the IIS server wasn&rsquo;t returning the CA name of which issued the client certificate&nbsp; to the client in the accepted CAs list even though that root CA certificate existed in the trusted root certificates store on the IIS server. So the IE client wasn&rsquo;t sending the user certificate located at the user certificate store on its end.</span></p>
<p></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">Then we realized that the amount of root CA names were about 16 KB which seems to be an upper limit. After deleting some of the expired and unused root CAs from the IIS server the issue was resolved. You can find more details on this issue at the below article:</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><strong><span style="color:#0000ff;"><a href="https://support.microsoft.com/kb/933430/EN-US"><span style="color:#0000ff;font-family:Calibri;font-size:medium;">https://support.microsoft.com/kb/933430/EN-US</span></a><span style="font-family:Calibri;font-size:medium;"> Clients cannot make connections if you require client certificates on a Web site or if you use IAS in Windows Server 2003</span></span></strong></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;"><i><span style="font-family:Calibri;"><span style="font-size:medium;"><span style="background-color:#ffff00;">The hotfix increases the Schannel security buffer to 16k.</span> If you exceed this limit, you will still have issues that are described in the symptoms section of this article. This change has also been included with Windows Server 2008 and Windows Server 2008 R2. The workarounds described below will apply to <span style="background-color:#ffff00;">Windows Server 2008 and Windows Server 2008 R2</span> as well.</span></span></i></span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">But we were already hitting the 16 KB limit and hence the only solution seemed to be removing some expired or unused root certificates from the IIS server.</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">Hope this helps</span></p>
<p></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">Thanks,</span></p>
<p><span style="color:#0000ff;font-family:Calibri;font-size:medium;">Murat</span></p>]]></content:encoded>
    </item>
    <item>
      <title>DNS SRV lookup from Powershell</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/dns-srv-lookup-from-powershell</link>
      <pubDate>Sun, 13 Oct 2013 09:14:00 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2013/10/13/dns-srv-lookup-from-powershell/</guid>
      <description><![CDATA[[After posting this blog, I have realized that Powershell 3.0 already provides a built-in cmdlet...]]></description>
      <content:encoded><![CDATA[<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><span style="font-family: Calibri;">[After posting this blog, I have realized that Powershell 3.0 already provides a built-in cmdlet called Resolve-DnsName which could help you make any kind of DNS queries. But I still wanted to leave this blog post active for those who might want to see&nbsp;how it could be done with Win32 API. Also Powershell 3.0 is available only on Windows 8/Windows server 2012 and forward&nbsp;which means you still need another way of doing your own SRV queries for earlier OS versions]</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Hi there,</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">While working on another tool that I mentioned in the previous blog post, I needed to lookup SRV records from powershell script. Under normal circumstances, we should be able to call any .Net API through powershell and considering that there&rsquo;s a Dns class already implemented in the System.net namespace, this shouldn&rsquo;t be a tough thing. But when you check the Dns class, you&rsquo;ll see that it doesn&rsquo;t allow you to make SRV queries:</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><a href="https://msdn.microsoft.com/en-us/library/system.net.dns_methods.aspx"><span style="color: #000080; font-family: Calibri;">https://msdn.microsoft.com/en-us/library/system.net.dns_methods.aspx</span></a><span style="font-family: Calibri;"> Dns Methods</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">After some research I have concluded that it might be easier and faster to implement it with Win32 code.&nbsp; The below code just returns the host part of DNS SRV response as I only needed that part but it&rsquo;s just a matter of uncommenting the printf() statements in the below code. Here is the full code that could be complied from Visual studio:</span></span></p>
<p>&nbsp;</p>
<pre class="scroll"><span style="font-size: medium;"><code class="cplusplus"><span style="color: #000080;">// dnssrvclient.cpp : Defines the entry point for the console application.</span><br /><span style="color: #000080;">//</span><br /> <br /><span style="color: #000080;"> #include "stdio.h"</span><br /><span style="color: #000080;"> #include "winsock2.h"</span><br /><span style="color: #000080;"> #include "windows.h"</span><br /><span style="color: #000080;"> #include "windns.h"</span><br /> <br /> <br /><span style="color: #000080;"> int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )</span><br /> <br /><span style="color: #000080;"> {</span><br /> <br /> <br /><span style="color: #000080;"> PWSTR resultname;</span><br /> <br /><span style="color: #000080;"> PDNS_RECORD ppQueryResultsSet = NULL;</span><br /> <br /><span style="color: #000080;"> // ppQueryResultsSet = (PDNS_RECORD) malloc(sizeof(DNS_RECORD));</span><br /><span style="color: #000080;"> // memset(ppQueryResultsSet,'\0',sizeof(DNS_RECORD));</span><br /> <br /><span style="color: #000080;"> int retvalue;</span><br /> <br /><span style="color: #000080;"> // printf("Sending SRV query for the name '%S'. Please wait...\n",argv[1]);</span><br /> <br /><span style="color: #000080;"> retvalue = DnsQuery(</span><br /><span style="color: #000080;"> argv[1],</span><br /><span style="color: #000080;"> DNS_TYPE_SRV,</span><br /><span style="color: #000080;"> DNS_QUERY_BYPASS_CACHE,</span><br /><span style="color: #000080;"> NULL,</span><br /><span style="color: #000080;"> &amp;ppQueryResultsSet,</span><br /><span style="color: #000080;"> NULL</span><br /> <br /><span style="color: #000080;"> );</span><br /><span style="color: #000080;"> if(!retvalue)</span><br /> <br /><span style="color: #000080;"> {</span><br /><span style="color: #000080;"> resultname = ppQueryResultsSet-&gt;Data.SRV.pNameTarget;</span><br /><span style="color: #000080;"> printf("%S",resultname);</span><br /><span style="color: #000080;"> // printf("SRV query succeeded.\n");</span><br /><span style="color: #000080;"> // printf("SRV record name:\t %S \n", resultname);</span><br /><span style="color: #000080;"> // printf("SRV record port:\t %d \n", ppQueryResultsSet-&gt;Data.SRV.wPort);</span><br /><span style="color: #000080;"> // printf("SRV record priority:\t %d \n", ppQueryResultsSet-&gt;Data.SRV.wPriority);</span><br /> <br /><span style="color: #000080;"> return retvalue;</span><br /><span style="color: #000080;"> }</span><br /> <br /><span style="color: #000080;"> else </span><br /><span style="color: #000080;"> {</span><br /> <br /><span style="color: #000080;"> // printf("The SRV record couldn't be resolved, error code: %d",retvalue);</span><br /> <br /><span style="color: #000080;"> return retvalue;</span><br /><span style="color: #000080;"> }</span><br /> <br /><span style="color: #000080;"> }</span><br /> </code></span></pre>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Note: If you decide to compile the above code, please make sure that Windows Kit (SDK) is already installed on the Visual Studio client and make sure that you add the dnsapi.lib as an additonal options from linker properties.</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6888.visualstudio.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6888.visualstudio.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6888.visualstudio.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6888.visualstudio.png" alt="" border="0" /></a></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Basically the application calls the DnsQuery() API with parameters stating that it would be an SRV query and the local DNS client cache will be bypassed when resolving the name. Once the result is returned, the application simply returns the Data.SRV.pNameTarget which holds the name part of SRV query response. You can see below an example run of the application code:</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">C:\&gt; <strong>dnssrvclient.exe &nbsp;_sip._tls.contoso.com</strong></span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">sip.contoso.com</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Note: <strong><em>_sip._tls.contoso.com</em></strong> is the SRV record being queried and <strong><em>sip.contoso.com</em></strong> is the result of this SRV lookup. If the query fails, the application returns a non-zero value</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">If you need to use the application from a powershell script, you can use a code similar below:</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Note: The powershell code snipet below assumes that dnssrvclient.exe exists within the same folder.</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<pre class="scroll"><span style="color: #000080; font-size: medium;"><code class="cplusplus">$result = .\dnssrvclient.exe _sip._tls.contoso.com<br /> if($LASTEXITCODE)<br /> <br /> {<br /> <br /> Write-Host "DNS SRV query failed, error code: $LASTEXITCODE" -ForegroundColor Red<br /> <br /> }<br /> <br /> else<br /> <br /> {<br /> <br /> write-host "DNS SRV query succeeded: $result" -ForegroundColor Green<br /> <br /> }<br /> </code></span></pre>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;">A successful run will be like below:</span></p>
<p>&nbsp;</p>
<p><span style="color: #008000; font-size: medium;"><strong>DNS SRV query succeeded: sip.contoso.com</strong></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">When SRV lookup fails, you should a response similar to below:</span></p>
<p>&nbsp;</p>
<p><span style="color: #800000; font-size: medium;"><strong>DNS SRV query failed, error</strong> code: 9003</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Hope this helps</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Thanks,</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Murat</span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre class="scroll">&nbsp;</pre>]]></content:encoded>
    </item>
    <item>
      <title>Testing STUN/TURN server connectivity from external networks through UDP 3478 by using Powershell</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/testing-stunturn-server-connectivity-from-external-networks-through-udp-3478-by-using-powershell</link>
      <pubDate>Sun, 13 Oct 2013 03:34:00 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2013/10/13/testing-stunturn-server-connectivity-from-external-networks-through-udp-3478-by-using-powershell/</guid>
      <description><![CDATA[Hi there,
&nbsp;
While working on a Lync connectivity test tool, I developed a STUN/TURN server...]]></description>
      <content:encoded><![CDATA[<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Hi there,</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">While working on a Lync connectivity test tool, I developed a STUN/TURN server connectivity test script&nbsp;in powershell which might be handy when you want to make sure that your external clients will be able to communicate with STUN/TURN server via UDP 3478 (STUN/TURN connectivity through TCP will also be added later on). Actually we have a resource kit tool called MsTurnPing which provides similar functionality (and more):</span></span><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><a href="https://technet.microsoft.com/en-us/library/jj945604.aspx"><span style="color: #000080; font-family: Calibri;">https://technet.microsoft.com/en-us/library/jj945604.aspx</span></a><span style="font-family: Calibri;"> Lync Server 2013 Resource Kit Tools Documentation</span></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">MsTurnPing</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">--------------------------------------------------------------------------------</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">The MSTurnPing tool allows an administrator of Microsoft Lync Server 2013 communications software to check the status of the servers running the Audio/Video Edge and Audio/Video Authentication services as well as the servers that are running Bandwidth Policy Services in the topology.</span></em></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">Description</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">--------------------------------------------------------------------------------</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">The MSTurnPing tool allows an administrator of Lync Server 2013 communications software to check the status of the servers running the Audio/Video Edge and Audio/Video Authentication services as well as the servers that are running Bandwidth Policy Services in the topology.</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">&nbsp;</span></em></span><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">The tool allows the administrator to perform the following tests:</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">1. A/V Edge Server test: The tool performs tests against all A/V Edge Servers in the topology by doing the following:</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">? Verifying that the Lync Server Audio/Video Authentication service is started and can issue proper credentials.</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">&nbsp;</span></em></span><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">? Verifying that the Lync Server Audio/Video Edge service is started and can allocate the resources on the external edge successfully.</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">&nbsp;</span></em></span><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">2. Bandwidth Policy Service test: The tool performs tests against all the servers that are running the Bandwidth Policy Services in the topology by doing the following:</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">? Verifying that the Lync Server Bandwidth Policy Service (Authentication) is started and can issue proper credentials.</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">&nbsp;</span></em></span><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">? Verifying that the Lync Server Bandwidth Policy Service (Core) is started and can perform the bandwidth check successfully.</span></em></span></p>
<p><span style="color: #000080; font-size: small;"><em><span style="font-family: Calibri;">&nbsp;</span></em></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;"><span style="font-size: small; background-color: #ffff00;"><em>This tool must be run from a computer that is part of the topology and has the local store installed.</em></span><em></em></span></p>
<p><span style="color: #000080; font-size: medium;"><em><span style="font-family: Calibri;">&nbsp;</span></em></span></p>
<p><span style="color: #000080; font-size: medium;"><strong><span style="font-family: Calibri;">Unfortunately MsTurnPing tool doesn&rsquo;t allow you to do the testing from an external client. </span></strong></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Now let me further explain what the&nbsp;powershell script does to test TURN/STUN connectivity test:</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">1) First of all, to do the testing you need to provide your AV edge server&rsquo;s name/IP address information as a parameter to the powershell script:</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Example:</span></span></p>
<p><strong><span style="color: #000080; font-size: medium;">PS C:\&gt; turn.ps1 av.contoso.com</span></strong></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">2) Once the powershell script runs, it does:</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">- Resolve the name</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">- If the given name is successfully resolved, it then sends a UDP datagram with a STUN allocate payload</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">- It waits on a response on the UDP socket for a timeout period and if there&rsquo;s a STUN allocate response it prints &ldquo;</span>Received response from STUN Server!&rdquo;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">- If no response is received within the given timeout period, it prints an error.</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Some example outputs:</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1780.screen.PNG" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1780.screen.PNG"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1780.screen.PNG" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1780.screen.PNG" alt="" width="794" height="240" border="0" /></a>&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">If you get such a failure, one of the first things that you can do is to run the below commands on your Edge server(s) and see if listens on UDP port 3478 on the internal IP and on the AV Edge IP:</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">C:\Users\Administrator.CONTOSO&gt;netstat -ano | find ":3478"</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp; UDP&nbsp;&nbsp;&nbsp; 10.2.2.10:3478&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;&nbsp;&nbsp;&nbsp;&nbsp; 1952</span></span></p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><span style="font-family: Calibri;">&nbsp; UDP&nbsp;&nbsp;&nbsp; 10.3.3.12:3478&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;&nbsp;&nbsp;&nbsp;&nbsp; 1952</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">C:\Users\Administrator.CONTOSO&gt;tasklist /svc | find "1952"</span></span></p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><span style="font-family: Calibri;">MediaRelaySvc.exe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1952 RTCMEDIARELAY</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">If you don&rsquo;t know what is your AV Edge server name/IP address, you can check it from the topology file:</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/0083.topo1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/0083.topo1.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/0083.topo1.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/0083.topo1.png" alt="" border="0" /></a></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><strong><span style="font-family: Calibri;">=&gt; Here is the full Powershell script source:</span></strong></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="background-color: #ffff00;"><strong><span style="color: #000080; font-size: medium;">#------------SCRIPT STARTS HERE-----------</span></strong></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;">function ResolveLyncNames {</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">param($LyncFqdn)</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">try {</span></p>
<p><span style="color: #000080; font-size: medium;">$ipaddr&nbsp;&nbsp; = [System.Net.Dns]::GetHostAddresses($LyncFqdn)</span></p>
<p><span style="color: #000080; font-size: medium;">Write-Host "Successfully resolved $LyncFqdn to $ipaddr" -ForegroundColor Green</span></p>
<p><span style="color: #000080; font-size: medium;">return $ipaddr</span></p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">catch {</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$exception = New-Object system.net.sockets.socketexception</span></p>
<p><span style="color: #000080; font-size: medium;">$errorcode = $exception.ErrorCode</span></p>
<p><span style="color: #000080; font-size: medium;">write-host "Requested name '$LyncFqdn' could not be resolved, error code:$errorcode" -foregroundcolor Red</span></p>
<p><span style="color: #000080; font-size: medium;">write-host "Error details: $exception" -foregroundcolor Red</span></p>
<p><span style="color: #000080; font-size: medium;">return 0</span></p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">if($args[0] -eq $NULL)</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">{</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">Write-host "Please specify a STUN server name or IP address to test"</span></p>
<p><span style="color: #000080; font-size: medium;">Write-Host "Example: turn.ps1 av.contoso.com"</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">return</span></p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$stunserver1 = $args[0]</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">if(ResolveLyncNames($stunserver1)) {</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">try {</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$j = Start-Job -ScriptBlock {</span></p>
<p><span style="color: #000080; font-size: medium;">$stunserver2 = $args[0]</span></p>
<p><span style="color: #000080; font-size: medium;">$udpclient=new-Object System.Net.Sockets.UdpClient</span></p>
<p><span style="color: #000080; font-size: medium;">$udpclient.Connect($stunserver2,3478)</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">[Byte[]] $payload =</span></p>
<p><span style="color: #000080; font-size: medium;">0x00,0x03,0x00,0x64,0x21,0x12,0xa4,0x42,0xf1,0x3c,0x08,0x4b,</span></p>
<p><span style="color: #000080; font-size: medium;">0x80,0x18,0x17,0x72,0x47,0x49,0x30,0x65,0x00,0x0f,0x00,0x04,</span></p>
<p><span style="color: #000080; font-size: medium;">0x72,0xc6,0x4b,0xc6,0x80,0x08,0x00,0x04,0x00,0x00,0x00,0x04,</span></p>
<p><span style="color: #000080; font-size: medium;">0x00,0x06,0x00,0x38,0x02,0x00,0x00,0x24,0x79,0xb7,0x95,0x2d,</span></p>
<p><span style="color: #000080; font-size: medium;">0x01,0xce,0xa8,0x6e,0x4e,0x3d,0x76,0x22,0x64,0xaa,0xc7,0xb6,</span></p>
<p><span style="color: #000080; font-size: medium;">0x2b,0xb8,0x78,0xde,0xee,0x8a,0xc0,0x88,0x84,0x49,0x1b,0x7c,</span></p>
<p><span style="color: #000080; font-size: medium;">0x00,0x00,0x00,0x00,0x82,0x8b,0x73,0x75,0xdd,0x0c,0xae,0x66,</span></p>
<p><span style="color: #000080; font-size: medium;">0x95,0xed,0xef,0x56,0xd0,0x4b,0x54,0xa4,0x7c,0xbd,0xfa,0x98,</span></p>
<p><span style="color: #000080; font-size: medium;">0x00,0x10,0x00,0x04,0x00,0x00,0x00,0xc8,0x80,0x06,0x00,0x04,</span></p>
<p><span style="color: #000080; font-size: medium;">0x00,0x00,0x00,0x01,0x80,0x55,0x00,0x04,0x00,0x01,0x00,0x00</span></p>
<p>&nbsp;&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$bytesSent=$udpclient.Send($payload,$payload.length)</span></p>
<p><span style="color: #000080; font-size: medium;">$listenport = $udpclient.client.localendpoint.port</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$endpoint&nbsp; = new-object System.Net.IPEndPoint ([IPAddress]::Any,$listenport)</span></p>
<p><span style="color: #000080; font-size: medium;">$content&nbsp;&nbsp; = $udpclient.Receive([ref]$endpoint)</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$Encoding = "ASCII"</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">switch ( $Encoding.ToUpper() )</span></p>
<p><span style="color: #000080; font-size: medium;">{</span></p>
<p><span style="color: #000080; font-size: medium;">"ASCII" { $EncodingType = "System.Text.ASCIIEncoding" }</span></p>
<p><span style="color: #000080; font-size: medium;">"UNICODE" { $EncodingType = "System.Text.UnicodeEncoding" }</span></p>
<p><span style="color: #000080; font-size: medium;">"UTF7" { $EncodingType = "System.Text.UTF7Encoding" }</span></p>
<p><span style="color: #000080; font-size: medium;">"UTF8" { $EncodingType = "System.Text.UTF8Encoding" }</span></p>
<p><span style="color: #000080; font-size: medium;">"UTF32" { $EncodingType = "System.Text.UTF32Encoding" }</span></p>
<p><span style="color: #000080; font-size: medium;">Default { $EncodingType = "System.Text.ASCIIEncoding" }</span></p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p><span style="color: #000080; font-size: medium;">$Encode = new-object $EncodingType</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">if ($Encode.GetString($content).Contains("The request did not contain a Message-Integrity attribute")) {</span></p>
<p><span style="color: #000080; font-size: medium;">write-host "Received response from STUN Server!" -ForegroundColor Green</span></p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p><span style="color: #000080; font-size: medium;">else {</span></p>
<p><span style="color: #000080; font-size: medium;">write-host "STUN Server either is not reachable or doesn't respond" -ForegroundColor Red</span></p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$udpclient.Close()</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">} -ArgumentList $stunserver1</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">write-host "Sending TURN server port allocation request at UDP port 3478, it will be checked after 10 seconds to see if a response is received or not ..." -ForegroundColor Green</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">Start-Sleep -Seconds 10</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">if( $j.JobStateInfo.State -ne "completed" )</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">{</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">Write-Host "The request timed out, STUN Server '$stunserver1' is not reachable or doesn't respond to the request." -ForegroundColor Red</span></p>
<p><span style="color: #000080; font-size: medium;">Write-host "Please check if UDP 3478 is allowed between the client and the STUN server" -ForegroundColor Red</span></p>
<p><span style="color: #000080; font-size: medium;">Write-Host "Also please check if STUN server (MediaRelaySvc.exe) is running on the Edge server and listening on UDP 3478" -ForegroundColor Red</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">else {</span></p>
<p><span style="color: #000080; font-size: medium;">$results = Receive-Job -Job $j</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$results</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">catch {</span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;">$_.exception.message</span></p>
<p>&nbsp;<span style="color: #000080; font-size: medium;">}</span></p>
<p><span style="color: #000080; font-size: medium;">}</span></p>
<p>&nbsp;<span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="background-color: #ffff00;"><strong><span style="color: #000080; font-size: medium;">#------------SCRIPT ENDS HERE-----------</span></strong></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Hope this helps</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Thanks,</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Murat</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>External Lync 2013 clients cannot upload ppt or other files and whiteboard, poll, Q&amp;A are greyed out on Lync client</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/external-lync-2013-clients-cannot-upload-ppt-or-other-files-and-whiteboard-poll-qa-are-greyed-out-on-lync-client</link>
      <pubDate>Sat, 12 Oct 2013 07:32:35 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2013/10/12/external-lync-2013-clients-cannot-upload-ppt-or-other-files-and-whiteboard-poll-qa-are-greyed-out-on-lync-client/</guid>
      <description><![CDATA[Hi again,
&nbsp;
In this blog post, I want to talk about a Lync 2013 problem where external users...]]></description>
      <content:encoded><![CDATA[<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Hi again,</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">In this blog post, I want to talk about a Lync 2013 problem where external users fail to upload powerpoint presentations. When external Lync user tries to upload a ppt file to an online meeting, basically nothing happens and once the failure occurs, all web conferencing related features are greyed out on the client afterwards as displayed below:</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6253.pic50.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6253.pic50.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6253.pic50.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6253.pic50.png" alt="" border="0" /></a></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Interestingly the same issue happened with any file uploads not just ppt files and it was possible to reproduce the behavior even with Lync 2010 client. These findings eliminated an Office Webapps issue. Interestingly the client was able to establish a session with Webconf edge service as per the network trace collected on the client:</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;"><strong>Note:</strong> The real web conferencing server IP address was deliberately replaced with 192.168.220.7 for privacy purposes.</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">No.&nbsp;&nbsp;&nbsp;&nbsp; Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Delta&nbsp;&nbsp;&nbsp; Source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Protocol Length Info</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3892 2013-09-26 11:20:53.672 0.000&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 66&nbsp;&nbsp;&nbsp;&nbsp; 65021 &gt; 443 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3893 2013-09-26 11:20:53.796 0.123&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 66&nbsp;&nbsp; &nbsp;&nbsp;443 &gt; 65021 [SYN, ACK] Seq=0 Ack=1 Win=4356 Len=0 MSS=1452 WS=1 SACK_PERM=1</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3894 2013-09-26 11:20:53.796 0.000&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 54&nbsp;&nbsp;&nbsp;&nbsp; 65021 &gt; 443 [ACK] Seq=1 Ack=1 Win=132132 Len=0</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3895 2013-09-26 11:20:53.797 0.001&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 183&nbsp;&nbsp;&nbsp; Client Hello</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3903 2013-09-26 11:20:53.927 0.130&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 1506&nbsp;&nbsp; Server Hello, Certificate[Unreassembled Packet] </span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3904 2013-09-26 11:20:53.934 0.006&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 1506&nbsp;&nbsp; Ignored Unknown Record</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3905 2013-09-26 11:20:53.934 0.000&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 54&nbsp;&nbsp;&nbsp;&nbsp; 65021 &gt; 443 [ACK] Seq=130 Ack=2905 Win=132132 Len=0</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3906 2013-09-26 11:20:53.941 0.006&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 1506&nbsp;&nbsp; Ignored Unknown Record</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3907 2013-09-26 11:20:53.941 0.000&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 200&nbsp;&nbsp;&nbsp; Ignored Unknown Record</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3908 2013-09-26 11:20:53.941 0.000&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 54&nbsp;&nbsp;&nbsp;&nbsp; 65021 &gt; 443 [ACK] Seq=130 Ack=4503 Win=132132 Len=0</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3909 2013-09-26 11:20:53.950 0.008&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;TLSv1&nbsp;&nbsp;&nbsp; 368&nbsp;&nbsp;&nbsp; Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3918 2013-09-26 11:20:54.075 0.125&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 443 &gt; 65021 [ACK] Seq=4503 Ack=444 Win=4799 Len=0</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3919 2013-09-26 11:20:54.079 0.003&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 101&nbsp;&nbsp;&nbsp; Change Cipher Spec, Encrypted Handshake Message</span></span></p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3920 2013-09-26 11:20:54.080 0.001&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 898&nbsp;&nbsp;&nbsp; Application Data</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3928 2013-09-26 11:20:54.215 0.134&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 443 &gt; 65021 [ACK] Seq=4550 Ack=1288 Win=5643 Len=0</span></span></p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3929 2013-09-26 11:20:54.215 0.000&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp; Application Data</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3931 2013-09-26 11:20:54.335 0.119&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 443 &gt; 65021 [ACK] Seq=4550 Ack=1317 Win=5672 Len=0</span></span></p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3973 2013-09-26 11:20:55.080 0.745&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TLSv1&nbsp;&nbsp;&nbsp; 1094&nbsp;&nbsp; Application Data</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 3982 2013-09-26 11:20:55.218 0.137&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 443 &gt; 65021 [ACK] Seq=4550 Ack=2357 Win=6712 Len=0</span></span></p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><span style="font-family: Calibri;">&nbsp;&nbsp; 5353 2013-09-26 11:21:23.238 28.019&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;TLSv1&nbsp;&nbsp;&nbsp; 86&nbsp;&nbsp;&nbsp;&nbsp; Application Data</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;&nbsp; 5360 2013-09-26 11:21:23.420 0.182&nbsp;&nbsp;&nbsp; 192.168.220.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp; 443 &gt; 65021 [ACK] Seq=4550 Ack=2389 Win=6744 Len=0</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">On the other hand, there was a weird behavior that was observed in the above trace. If you pay closer attention, you&rsquo;ll see that there&rsquo;s no response from Web conferencing edge service at application layer even though the client gets TCP ACKs at transport layer.</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Then I checked the topology file and realized that there were two Edge servers in the Edge pool and the webconf edge IP address that the Lync client was communicating with didn&rsquo;t belong to any of the edge servers which means there was a HW load balancer publishing the Edge server pool. Our customer also confirmed that there was an F5 load balancer running in front of the Edge pool.</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">I asked our customer to bypass the HW load balancer by putting one of the Edge Server&rsquo;s dedicated IP addresses for access edge/webconf edge/av edge services in the HOSTS file on the external Lync 2013 client. <strong>Once that was done the issue did&rsquo;t occur anymore which means either load balancer itself has a configuration or similar problem or there&rsquo;s a connectivity problem with the F5 load balancer and the Edge server external interfaces. </strong></span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Hope this helps</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Thanks,</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Murat</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Decrypting SSL/TLS sessions with Wireshark - Reloaded</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/decrypting-ssltls-sessions-with-wireshark-reloaded</link>
      <pubDate>Sat, 12 Oct 2013 06:25:00 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2013/10/12/decrypting-ssltls-sessions-with-wireshark-reloaded/</guid>
      <description><![CDATA[Hi there,
&nbsp;
In a previous blog post of mine, I went through the steps of decrypting SSL/TLS...]]></description>
      <content:encoded><![CDATA[<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Hi there,</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">In a previous blog post of mine</span><span style="font-family: Calibri;">, I went through the steps of decrypting SSL/TLS traffic by using wireshark and openssl tools. In this blog post, I wanted to talk about the same procedure again because it got even easier to decrypt encrypted traffic with Wireshark since then.</span></span><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Here are the steps to export a certificate with private key included and using that certificate to decrypt SSL/TLS session in Wireshark:</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><strong><span style="font-family: Calibri;">=&gt; Exporting the certificate with its private key: </span></strong></span></p>
<p><span style="color: #000080; font-size: medium; background-color: #ffffff;"><strong><span style="font-family: Calibri;">The certificate could be exported by using certificates mmc on Windows:</span></strong></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/0451.pic1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/0451.pic1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/0451.pic1.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/0451.pic1.jpg" alt="" border="0" /></a></span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6177.pic2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6177.pic2.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6177.pic2.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6177.pic2.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/4024.pic40.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/4024.pic40.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/4024.pic40.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/4024.pic40.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/2055.pic41.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/2055.pic41.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/2055.pic41.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/2055.pic41.png" alt="" border="0" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5661.pic42.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5661.pic42.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5661.pic42.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5661.pic42.png" alt="" border="0" /></a></p>
<p>&nbsp;<span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/2134.pic6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/2134.pic6.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/2134.pic6.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/2134.pic6.png" alt="" border="0" /></a></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5040.pic7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5040.pic7.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5040.pic7.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5040.pic7.png" alt="" border="0" /></a></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/7823.pic8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/7823.pic8.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/7823.pic8.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/7823.pic8.png" alt="" width="311" height="166" border="0" /></a></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">The exported certificate (with private key included) is c:\servercert.pfx</span></span></strong></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><strong><span style="font-family: Calibri;">=&gt; Capturing a network trace where an SSL/TLS session is established:</span></strong></span></p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;</span></span><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">- To start capturing network traffic:</span></span></strong></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1588.pic9.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1588.pic9.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1588.pic9.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1588.pic9.png" alt="" border="0" /></a></span></p>
<p>&nbsp;</p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">- Reproduce the issue </span></span></strong></p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">- To stop capturing network traffic:</span></span></strong></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/8156.pi10.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/8156.pi10.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/8156.pi10.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/8156.pi10.png" alt="" border="0" /></a></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium; background-color: #ffff00;"><strong><span style="font-family: Calibri;">=&gt; Decrypting the SSL/TLS session by using Wireshark and the given certificate with private key:</span></strong></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5125.pic11.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5125.pic11.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5125.pic11.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5125.pic11.png" alt="" width="464" height="755" border="0" /></a></span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5315.pic12.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5315.pic12.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5315.pic12.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5315.pic12.png" alt="" border="0" /></a></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1667.pic13.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1667.pic13.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1667.pic13.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1667.pic13.png" alt="" width="665" height="370" border="0" /></a></span></p>
<p><strong><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">- In the below example</span></span></strong></p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Server IP is 10.2.2.2 and TCP port is 443.</span></span></strong></p>
<p>&nbsp;</p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Note: The password shown below is the one that you assigned while exporting the server certificate:</span></span></strong></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/3463.pic14.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/3463.pic14.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/3463.pic14.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/3463.pic14.png" alt="" border="0" /></a></span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/4478.pic15.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/4478.pic15.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/4478.pic15.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/4478.pic15.png" alt="" border="0" /></a></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/2465.pic16.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/2465.pic16.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/2465.pic16.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/2465.pic16.png" alt="" border="0" /></a></span></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><strong><span style="font-family: Calibri;">Once the certificate is applied to Wireshark, then an appropriate Wireshark filter (the filter is &ldquo;http&rdquo; in this example) could be applied to see the traffic in clear text:</span></strong></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5584.pic17.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5584.pic17.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5584.pic17.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5584.pic17.png" alt="" width="688" height="377" border="0" /></a></span></p>
<p>&nbsp;</p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">The problem with decrypted SSL/TLS sessions is that you cannot save the network trace in an unencrypted format (best to my knowledge that&rsquo;s also something Wireshark dev&rsquo;s to do list) for later analysis or for sharing with someone external to your company, so if you want to save the output in clear text, you might want to print the packets to a text file. But it would also be good to expand all relevant protocol headers before doing so so that the text file will include all application layer protocol header lines expanded. You can see an example below for HTTP protocol: </span></span></strong></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><strong><span style="font-family: Calibri;">We expand &ldquo;Hypertext Transfer Protocol&rdquo; and &ldquo;Line-based text data: text/html&rdquo; lines:</span></strong></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1563.pic18.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1563.pic18.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1563.pic18.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1563.pic18.png" alt="" width="685" height="316" border="0" /></a>&nbsp;</span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1106.pic19.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1106.pic19.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/1106.pic19.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/1106.pic19.png" alt="" width="680" height="380" border="0" /></a></p>
<p>&nbsp;</p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Now we can print the packets to a text file as given below:</span></span></strong></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/4617.pic20.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/4617.pic20.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/4617.pic20.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/4617.pic20.png" alt="" border="0" /></a></span></span></p>
<p>&nbsp;</p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">with the following options set:</span></span></strong></p>
<p><strong></strong>&nbsp;<span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/4722.pic21.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/4722.pic21.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/4722.pic21.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/4722.pic21.png" alt="" border="0" /></a></span></span></p>
<p>&nbsp;</p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Now the output will be written to a text file where the HTTP request/response header+payloads will be&nbsp;visible in clear test:</span></span></strong></p>
<p><strong><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/2766.pic22.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/2766.pic22.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/2766.pic22.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/2766.pic22.jpg" alt="" width="766" height="449" border="0" /></a></span></span></strong></p>
<p>&nbsp;</p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Hope this helps</span></span></p>
<p><span style="color: #000080; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Thanks,</span></span></p>
<p><span style="color: #000080; font-size: medium;"><span style="font-family: Calibri;">Murat</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Running Lync 2013 WebApp plugin in locked down Terminal server environments</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/running-lync-2013-webapp-plugin-in-locked-down-terminal-server-environments</link>
      <pubDate>Sun, 04 Aug 2013 11:55:00 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2013/08/04/running-lync-2013-webapp-plugin-in-locked-down-terminal-server-environments/</guid>
      <description><![CDATA[Hi there,
&nbsp;
In this blog post, I would like to talk about running Lync 2013 Webapp in Windows...]]></description>
      <content:encoded><![CDATA[<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">Hi there,</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">In this blog post, I would like to talk about running Lync 2013 Webapp in Windows Terminal server environments. Lync 2013 Webapp feature has a client side plug-in which provides audio/video/application sharing functionality and this plug is installed per user, in other words installation program installs files and creates registry settings in user specific areas of the system. Most of terminal server environments are locked down in production networks and users are generally not allowed to install softwares.</span></p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">I recently dealt with a couple of cases where it was required to find a solution to this problem.&nbsp;</span><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">One possible solution is to create exceptions in your software restriction softwares (it could be a 3<sup>rd</sup> party software or it could be a Microsoft solution (Software restriction policies or Applocker)). You will find steps below to create such exceptions in Software restriction policies and applocker:</span></p>
<p>&nbsp;</p>
<p><strong><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small; background-color: #ffff00;">Software Restriction policies (That could be applied if the Terminal server is Windows 2003 and later)</span></strong></p>
<p><strong><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small; background-color: #ffff00;">Note: Please note that we don't support Lync Webapp on Windows 2003, it's supported on Windows 2008 or later. Please see the below link for more details:</span></strong></p>
<p><span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"><a href="https://technet.microsoft.com/en-us/library/gg425820.aspx">https://technet.microsoft.com/en-us/library/gg425820.aspx</a>&nbsp;Lync Web App Supported Platforms</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">a) First of all, Lync webapp plugin (LWAPlugin64BitInstaller32.msi) file includes a number of executables each of which needs to be defined within software restriction policy rules. You can extract the MSI file itself with 7zip or a similar tool. Once the msi file is extracted, we have the following executables:</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">AppSharingHookController.exe</span></p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">AppSharingHookController64.exe</span></p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">LWAPlugin.exe</span></p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">LWAVersionPlugin.exe</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">b) So we need to create 5 additional rules (1 MSI rule and 4 executable file rules) in Software restriction policies in addition to your existing software restriction policy rules as given below:</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6545.pic1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6545.pic1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6545.pic1.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6545.pic1.jpg" alt="" border="0" /></a>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">Note: It&rsquo;s best to create File hash rules for the MSI file itself or the other 4 executables that are extracted from MSI file</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">So if Software restriction policies is already deployed on your network, there could be an exception created for the Lync web app plugin so users will still comply with the application installation/execution policies</span></p>
<p>&nbsp;</p>
<p><strong><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small; background-color: #ffff00;">Applocker: (That could be applied if the Terminal server is Windows 2008 R2 or later)</span></strong></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">a) As mentioned in previous scenario, Lync webapp plugin (LWAPlugin64BitInstaller32.msi) file includes a number of executables each of which needs to be defined within applocker rules. You can extract the MSI file itself with 7zip or a similar tool. Once the msi file is extracted, we have the following executables:</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">AppSharingHookController.exe</span></p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">AppSharingHookController64.exe</span></p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">LWAPlugin.exe</span></p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;"><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">LWAVersionPlugin.exe</span></span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">b) So we need to create 1 MSI rule and 4 executable file rules in applocker as given below:</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6014.pic2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6014.pic2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/6014.pic2.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/6014.pic2.jpg" alt="" border="0" /></a>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/8662.pic3.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/8662.pic3.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/8662.pic3.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/8662.pic3.jpg" alt="" border="0" /></a></span>&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">Note: It&rsquo;s best to create File hash rules for the MSI file itself or the other 4 executables that are extracted from MSI file</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">So if Applocker is deployed on your network, there could be an exception created for the Lync web app plugin so users will still comply with the application installation/execution policies</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">The only drawback in regards to file hash rules is that once Lync server Web components are updated with a cumulative update on Lync server side, you&rsquo;ll have to create those file hash rules one more time (because probably the content of msi file that is shared from FE server will be different and hence the file hash will change) but considering that the web components are not frequently updated this may need to be done 2 or 3 times in a year. Alternatively there could be file path rule or publisher rule created instead of a file hash rule to avoid such maintenance.</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">Hope this helps</span></p>
<p>&nbsp;</p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">Thanks,</span></p>
<p><span style="color: #333399; font-family: arial,helvetica,sans-serif; font-size: small;">Murat</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Event ID 56417 may be logged on Lync server 2013 intermittently</title>
      <link>https://docs.microsoft.com/archive/blogs/nettracer/event-id-56417-may-be-logged-on-lync-server-2013-intermittently</link>
      <pubDate>Mon, 08 Jul 2013 07:55:57 GMT</pubDate>
      <dc:creator><![CDATA[MuratKa1]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/nettracer/2013/07/08/event-id-56417-may-be-logged-on-lync-server-2013-intermittently/</guid>
      <description><![CDATA[Hi again,
&nbsp;
I dealt with a Lync server 2013 problem recently where the server was...]]></description>
      <content:encoded><![CDATA[<p><span style="color: #333399; font-size: medium;"><span style="font-family: Calibri;">Hi again,</span></span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-size: medium;"><span style="font-family: Calibri;">I dealt with a Lync server 2013 problem recently where the server was intermittently logging event ID 56417 in the Lync server event log:</span></span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">- &lt;System&gt;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp; &lt;Provider Name="LS Data Collection" /&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;EventID Qualifiers="51423"&gt;<span style="background-color: #ffff00;">56417</span>&lt;/EventID&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;Level&gt;2&lt;/Level&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;Task&gt;2271&lt;/Task&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;Keywords&gt;0x80000000000000&lt;/Keywords&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;TimeCreated SystemTime="2013-05-10T12:16:51.000000000Z" /&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;EventRecordID&gt;18850&lt;/EventRecordID&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;Channel&gt;Lync Server&lt;/Channel&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;Computer&gt;FE1.contoso.local&lt;/Computer&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;Security /&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;/System&gt;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">- &lt;EventData&gt;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp; &lt;Data&gt;QoE Adaptor&lt;/Data&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;Data&gt;<strong><span style="color: #ff0000;">System.IO.InvalidDataException: Invalid input. EndPoint is null. at Microsoft.Rtc.Server.UdcAdapters.QoE.PackReport.Pack(VQReportEventType report, LyncMessageDetails msgDetails, DBQoEReport dbReport) at Microsoft.Rtc.Server.UdcAdapters.QoE.QoEProcessor.ProcessMessageForStore(LyncMessageDetails msgDetails) at Microsoft.Rtc.Server.UdcAdapters.QoE.QoEProcessor.ProcessQueueItems(LyssQueueItem queueItem)&lt;/</span></strong>Data&gt; </span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;&nbsp;&lt;/EventData&gt;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp; &lt;/Event&gt;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-size: medium;"><span style="font-family: Calibri;">Based on the error description, we expect the event to be logged when there&rsquo;s a problem with an incoming QoE report sent by an UC endpoint. We collected a number of logs from the Lync server including SIPStack/S4 logs, event logs and a network trace. Such QoE reports are sent with a SIP SERVICE command to the FE server (and then from FE server to Monitoring server):</span></span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-size: medium;"><span style="font-family: Calibri;">- You can filter them with VQReportEvent keyword while checking the SIPStack log with snooper:</span></span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5037.picture1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5037.picture1.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5037.picture1.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5037.picture1.jpg" alt="" border="0" /></a></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-size: medium;"><span style="font-family: Calibri;">There were some QoE reports sent around the time of the 56417 event with some non-English characters but I wasn&rsquo;t able to establish a direct tie between this and the event being logged. But after with some further troubleshooting, we found out (with the help of one of my colleagues) that the error was logged especially when the Server language format was set to non US English format. After the language format was changed to US English, the issue was resolved:</span></span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5282.picture2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5282.picture2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/83/60/5282.picture2.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-60/5282.picture2.jpg" alt="" border="0" /></a></span></p>
<p>&nbsp;<span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-size: medium;"><span style="font-family: Calibri;">Hope this helps</span></span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-size: medium;"><span style="font-family: Calibri;">Thanks,</span></span></p>
<p><span style="color: #333399; font-size: medium;"><span style="font-family: Calibri;">Murat</span></span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>
<p><span style="color: #333399; font-family: Calibri; font-size: medium;">&nbsp;</span></p>]]></content:encoded>
    </item>
  </channel>
</rss>