<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5798049</id><updated>2009-02-21T04:00:05.341-06:00</updated><title type='text'>Christopher G. Lewis - Scripting Blog</title><subtitle type='html'>Contains sample scripts in VBScript, CSharp, JScript, and all sorts of .Net stuff.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chrislewis.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default'/><link rel='alternate' type='text/html' href='http://chrislewis.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris Lewis</name><uri>http://www.blogger.com/profile/05928293747532949306</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5798049.post-108560887452849712</id><published>2004-05-26T16:57:00.000-05:00</published><updated>2004-05-26T17:07:17.073-05:00</updated><title type='text'>Dealing with CScript and Wscript (How to restart a Wscript in Cscript)</title><content type='html'>I just had a question regarding the IsCScript function - which ends a script if it's not run in CScript.  How do you deal with this the very first time if you are in a login script.

The simple answer is to fix CScript, and restart the script:

&lt;pre class="code"&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Login.vbs - Default login script for OU=Local &lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;'  Copyright© 2004, Christopher G. Lewis - HTTP://www.ChristopherLewis.com&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 030507 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Option Explicit&lt;/span&gt;

&lt;span class="TPkeyword1"&gt;Dim &lt;/span&gt;objFSO
&lt;span class="TPkeyword1"&gt;Dim &lt;/span&gt;&lt;span class="TPkeyword5"&gt;WshShell&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Dim &lt;/span&gt;&lt;span class="TPkeyword5"&gt;WshNetwork&lt;/span&gt;

&lt;span class="TPkeyword1"&gt;Set &lt;/span&gt;objFSO &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword4"&gt;CreateObject&lt;/span&gt;(&lt;span class="TPstring"&gt;"Scripting.FileSystemObject"&lt;/span&gt;)
&lt;span class="TPkeyword1"&gt;Set &lt;/span&gt;&lt;span class="TPkeyword5"&gt;WshShell  &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;WScript&lt;/span&gt;.&lt;span class="TPkeyword4"&gt;CreateObject &lt;/span&gt;(&lt;span class="TPstring"&gt;"WScript.shell"&lt;/span&gt;)
&lt;span class="TPkeyword1"&gt;Set &lt;/span&gt;&lt;span class="TPkeyword5"&gt;WshNetwork &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;WScript&lt;/span&gt;.&lt;span class="TPkeyword4"&gt;CreateObject&lt;/span&gt;(&lt;span class="TPstring"&gt;"WScript.Network"&lt;/span&gt;)

&lt;span class="TPcomment"&gt;'Check for CScript&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;If Not &lt;/span&gt;IsCScript() &lt;span class="TPkeyword1"&gt;Then&lt;/span&gt;
  SetCScript()
  RestartWithCScript()
  &lt;span class="TPkeyword5"&gt;Wscript&lt;/span&gt;.&lt;span class="TPkeyword4"&gt;Quit &lt;/span&gt;&lt;span class="TPnumber"&gt;0&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;End If&lt;/span&gt;

&lt;span class="TPkeyword1"&gt;Call &lt;/span&gt;Main()

&lt;span class="TPcomment"&gt;'Clean up&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Set &lt;/span&gt;objFSO &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;Nothing&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Set &lt;/span&gt;&lt;span class="TPkeyword5"&gt;WshShell  &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;Nothing&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Set &lt;/span&gt;&lt;span class="TPkeyword5"&gt;WshNetwork &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;Nothing&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Main - Main sub&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 030508 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Sub &lt;/span&gt;Main()
  &lt;span class="TPkeyword5"&gt;Wscript&lt;/span&gt;.&lt;span class="TPkeyword4"&gt;echo &lt;/span&gt;&lt;span class="TPstring"&gt;"Do Stuff"&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;End Sub&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' IsCscript - Checks CScript vs. WScript&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 020507 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Function &lt;/span&gt;IsCScript()
  &lt;span class="TPkeyword1"&gt;Dim &lt;/span&gt;objRegExp
  &lt;span class="TPkeyword1"&gt;Set &lt;/span&gt;objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;New RegExp
  objRegExp.&lt;span class="TPkeyword3"&gt;IgnoreCase  &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword6"&gt;true&lt;/span&gt;
  objRegExp.&lt;span class="TPkeyword3"&gt;Pattern &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"cscript.exe$"&lt;/span&gt;
  IsCScript &lt;span class="TPoperator"&gt;= &lt;/span&gt;objRegExp.&lt;span class="TPkeyword4"&gt;Test&lt;/span&gt;(&lt;span class="TPkeyword5"&gt;WScript&lt;/span&gt;.&lt;span class="TPkeyword3"&gt;FullName&lt;/span&gt;)
  &lt;span class="TPkeyword1"&gt;Set &lt;/span&gt;objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;Nothing&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;End Function&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' SetCScript - Sets Cscript as the startup script&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 040526 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Function &lt;/span&gt;SetCScript()
  &lt;span class="TPkeyword5"&gt;WshShell&lt;/span&gt;.&lt;span class="TPkeyword4"&gt;Run &lt;/span&gt;&lt;span class="TPstring"&gt;"Cscript //H:CScript //S"&lt;/span&gt;, &lt;span class="TPnumber"&gt;7&lt;/span&gt;, &lt;span class="TPkeyword6"&gt;true&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;End Function&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' RestartWithCScript - Restarts this script with cscript.  &lt;/span&gt;
&lt;span class="TPcomment"&gt;'   Note that this doesn't deal with script arguments.  I imagine you could &lt;/span&gt;
&lt;span class="TPcomment"&gt;'   do something using the following:&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   Dim strCMD&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   Dim iCount&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   strCMD = "Cscript //H:CScript " &amp;amp; chr(34) &amp;amp; Wscript.ScriptFullName &amp;amp; CHr(34)&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   if Wscript.Arguments.Count &amp;gt; 0 Then&lt;/span&gt;
&lt;span class="TPcomment"&gt;'     For iCount = 0 to Wscript.Arguments.Count-1&lt;/span&gt;
&lt;span class="TPcomment"&gt;'       'Add Argument&lt;/span&gt;
&lt;span class="TPcomment"&gt;'       strCMD = strCMD &amp;amp; " " &amp;amp; Wscript.Arguments(iCount)&lt;/span&gt;
&lt;span class="TPcomment"&gt;'     Next&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   End if &lt;/span&gt;
&lt;span class="TPcomment"&gt;'   WshShell.Run strCMD, 1, False&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 040526 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;Function &lt;/span&gt;RestartWithCScript()
  &lt;span class="TPkeyword5"&gt;WshShell&lt;/span&gt;.&lt;span class="TPkeyword4"&gt;Run &lt;/span&gt;&lt;span class="TPstring"&gt;"Cscript //H:CScript " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPkeyword2"&gt;chr&lt;/span&gt;(&lt;span class="TPnumber"&gt;34&lt;/span&gt;) &lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Wscript&lt;/span&gt;.&lt;span class="TPkeyword3"&gt;ScriptFullName &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPkeyword2"&gt;CHr&lt;/span&gt;(&lt;span class="TPnumber"&gt;34&lt;/span&gt;), &lt;span class="TPnumber"&gt;1&lt;/span&gt;, &lt;span class="TPkeyword6"&gt;False&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;End Function&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' End of Logon.vbs&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;/pre&gt;

&lt;font size="1"&gt;Copyright © 2003, &lt;a href="http://www.ChristopherLewis.com"&gt;Christopher G. Lewis&lt;/a&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798049-108560887452849712?l=chrislewis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/108560887452849712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/108560887452849712'/><link rel='alternate' type='text/html' href='http://chrislewis.blogspot.com/2004_05_01_archive.html#108560887452849712' title='Dealing with CScript and Wscript (How to restart a Wscript in Cscript)'/><author><name>Chris Lewis</name><uri>http://www.blogger.com/profile/05928293747532949306</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10667222558797398711'/></author></entry><entry><id>tag:blogger.com,1999:blog-5798049.post-107815945152480551</id><published>2004-03-01T10:44:00.000-06:00</published><updated>2004-03-01T10:48:04.670-06:00</updated><title type='text'>Remove a computer from a domain</title><content type='html'>Here's a function to remove a computer from a domain.  We're using it as part of a massive clean up effort.

&lt;pre class="code"&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' RemoveComputer - Removes a computer from a domain&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 040227 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Function &lt;/span&gt;RemoveComputer&lt;span class="TPbracket"&gt;( &lt;/span&gt;strDomain, strComputer &lt;span class="TPbracket"&gt;)&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;objDC
  &lt;span class="TPkeyword4"&gt;On error &lt;/span&gt;&lt;span class="TPkeyword5"&gt;resume &lt;/span&gt;&lt;span class="TPkeyword4"&gt;next&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objDC &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;getobject&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"WinNT://" &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strDomain &lt;span class="TPbracket"&gt;)&lt;/span&gt;
  objDC.&lt;span class="TPkeyword2"&gt;Delete &lt;/span&gt;&lt;span class="TPstring"&gt;"Computer"&lt;/span&gt;, strComputer
  &lt;span class="TPkeyword4"&gt;if &lt;/span&gt;&lt;span class="TPkeyword5"&gt;err &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPnumber"&gt;0 &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
    RemoveComputer &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;true&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;else&lt;/span&gt;
    RemoveComputer &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;false&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;end if&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;On error &lt;/span&gt;&lt;span class="TPkeyword5"&gt;goto &lt;/span&gt;&lt;span class="TPnumber"&gt;0&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;End function&lt;/span&gt;
&lt;/pre&gt;
&lt;font size="1"&gt;Copyright © 2003, &lt;a href="http://www.ChristopherLewis.com"&gt;Christopher G. Lewis&lt;/a&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798049-107815945152480551?l=chrislewis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/107815945152480551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/107815945152480551'/><link rel='alternate' type='text/html' href='http://chrislewis.blogspot.com/2004_03_01_archive.html#107815945152480551' title='Remove a computer from a domain'/><author><name>Chris Lewis</name><uri>http://www.blogger.com/profile/05928293747532949306</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10667222558797398711'/></author></entry><entry><id>tag:blogger.com,1999:blog-5798049.post-106701473039899307</id><published>2003-10-24T11:58:00.000-05:00</published><updated>2003-10-24T12:02:19.536-05:00</updated><title type='text'>Even Better Ping in C#</title><content type='html'>Alright, the flash of the shell window bothered me even more than I thought.  
&lt;BR&gt;&lt;BR&gt;
Diving into the .Net Framework uncovered the System.Diagnostics.Process class.  The Process class can use a ProcessStartInfo class which has a RedirectStandardOutput property that returns a StreamReader, which is excactly what I was looking for.  
&lt;BR&gt;&lt;BR&gt;
Here's the updated CSharp class.  Note that there's no error handling, (probably need a try block around the objProc.Start method):

&lt;pre class="code"&gt;
&lt;span class="TPcomment"&gt;//----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;// TCPIPServices - Namespace for TCPIP functions&lt;/span&gt;
&lt;span class="TPcomment"&gt;//&lt;/span&gt;
&lt;span class="TPcomment"&gt;// Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;// ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;// 031021 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;//----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;using &lt;/span&gt;System;
&lt;span class="TPkeyword1"&gt;using &lt;/span&gt;System&lt;span class="TPoperator"&gt;.&lt;/span&gt;IO;
&lt;span class="TPkeyword1"&gt;using &lt;/span&gt;System&lt;span class="TPoperator"&gt;.&lt;/span&gt;Diagnostics;
&lt;span class="TPkeyword1"&gt;using &lt;/span&gt;System&lt;span class="TPoperator"&gt;.&lt;/span&gt;Text&lt;span class="TPoperator"&gt;.&lt;/span&gt;RegularExpressions;

&lt;span class="TPkeyword1"&gt;namespace &lt;/span&gt;TCPIPServices
&lt;span class="TPbracket"&gt;{&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// CTCPIPServices - Class of TCP/IP Services&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// &amp;lt;remarks&amp;gt;&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// TODO: NSLookup, NetStat, etc&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// &amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span class="TPkeyword1"&gt;public class &lt;/span&gt;CTCPIPServices
  &lt;span class="TPbracket"&gt;{&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// The class constructor. &lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="TPkeyword1"&gt;public &lt;/span&gt;CTCPIPServices&lt;span class="TPbracket"&gt;()&lt;/span&gt;
    &lt;span class="TPbracket"&gt;{&lt;/span&gt;
    &lt;span class="TPbracket"&gt;}&lt;/span&gt;

    &lt;span class="TPcomment"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// Ping using Ping.EXE&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;param name="HostName"&amp;gt;Host to Ping&amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;remarks&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// Creates a new procsses to execute the PING.EXE command and capture output, which&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// is then parsed to determine results.&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;/remarks&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;returns&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// Returns true if ping succeeded, false if ping fails.&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;/returns&amp;gt;&lt;/span&gt;
    &lt;span class="TPkeyword1"&gt;public bool &lt;/span&gt;Ping&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPkeyword1"&gt;string &lt;/span&gt;HostName&lt;span class="TPbracket"&gt;) &lt;/span&gt;
    &lt;span class="TPbracket"&gt;{&lt;/span&gt;
      Process objProc &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Process&lt;span class="TPbracket"&gt;()&lt;/span&gt;;
      &lt;span class="TPkeyword1"&gt;string &lt;/span&gt;strCommand &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"PING.EXE "&lt;/span&gt;;
      &lt;span class="TPkeyword1"&gt;string &lt;/span&gt;strLine;
      Regex  objRegExp;

      objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;StartInfo&lt;span class="TPoperator"&gt;.&lt;/span&gt;FileName &lt;span class="TPoperator"&gt;= &lt;/span&gt;strCommand;
      objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;StartInfo&lt;span class="TPoperator"&gt;.&lt;/span&gt;Arguments &lt;span class="TPoperator"&gt;= &lt;/span&gt;HostName;
      objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;StartInfo&lt;span class="TPoperator"&gt;.&lt;/span&gt;UseShellExecute &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
      objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;StartInfo&lt;span class="TPoperator"&gt;.&lt;/span&gt;RedirectStandardOutput &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;true&lt;/span&gt;;
      &lt;span class="TPcomment"&gt;//objProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;&lt;/span&gt;
      objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;StartInfo&lt;span class="TPoperator"&gt;.&lt;/span&gt;CreateNoWindow &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;true&lt;/span&gt;;
      objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;Start&lt;span class="TPbracket"&gt;()&lt;/span&gt;;
      objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;WaitForExit&lt;span class="TPbracket"&gt;()&lt;/span&gt;;

      &lt;span class="TPcomment"&gt;//Read the output from the command&lt;/span&gt;
      &lt;span class="TPkeyword1"&gt;while &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;StandardOutput&lt;span class="TPoperator"&gt;.&lt;/span&gt;Peek&lt;span class="TPbracket"&gt;() &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;gt;= &lt;/span&gt;&lt;span class="TPnumber"&gt;0&lt;/span&gt;&lt;span class="TPbracket"&gt;) &lt;/span&gt;
      &lt;span class="TPbracket"&gt;{&lt;/span&gt;
        strLine &lt;span class="TPoperator"&gt;= &lt;/span&gt;objProc&lt;span class="TPoperator"&gt;.&lt;/span&gt;StandardOutput&lt;span class="TPoperator"&gt;.&lt;/span&gt;ReadLine&lt;span class="TPbracket"&gt;()&lt;/span&gt;;
        strLine &lt;span class="TPoperator"&gt;= &lt;/span&gt;strLine&lt;span class="TPoperator"&gt;.&lt;/span&gt;Trim&lt;span class="TPbracket"&gt;()&lt;/span&gt;;
        
        &lt;span class="TPcomment"&gt;//test for Unknown Host&lt;/span&gt;
        objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Regex&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"^Unknown"&lt;/span&gt;, RegexOptions&lt;span class="TPoperator"&gt;.&lt;/span&gt;IgnoreCase&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
        &lt;span class="TPkeyword1"&gt;if &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objRegExp&lt;span class="TPoperator"&gt;.&lt;/span&gt;IsMatch&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;))&lt;/span&gt;
        &lt;span class="TPbracket"&gt;{&lt;/span&gt;
          &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
        &lt;span class="TPbracket"&gt;}&lt;/span&gt;
        
        &lt;span class="TPcomment"&gt;//DNS Succeeded, but box off-line&lt;/span&gt;
        objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Regex&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"100% loss"&lt;/span&gt;, RegexOptions&lt;span class="TPoperator"&gt;.&lt;/span&gt;IgnoreCase&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
        &lt;span class="TPkeyword1"&gt;if &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objRegExp&lt;span class="TPoperator"&gt;.&lt;/span&gt;IsMatch&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;))&lt;/span&gt;
        &lt;span class="TPbracket"&gt;{&lt;/span&gt;
          &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
        &lt;span class="TPbracket"&gt;}&lt;/span&gt;

        &lt;span class="TPcomment"&gt;//Got a reply&lt;/span&gt;
        objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Regex&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"^Reply from"&lt;/span&gt;, RegexOptions&lt;span class="TPoperator"&gt;.&lt;/span&gt;IgnoreCase&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
        &lt;span class="TPkeyword1"&gt;if &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objRegExp&lt;span class="TPoperator"&gt;.&lt;/span&gt;IsMatch&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;))&lt;/span&gt;
        &lt;span class="TPbracket"&gt;{&lt;/span&gt;
          &lt;span class="TPcomment"&gt;//Check for "Destination host unreachable."&lt;/span&gt;
          objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Regex&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"Destination host unreachable"&lt;/span&gt;, RegexOptions&lt;span class="TPoperator"&gt;.&lt;/span&gt;IgnoreCase&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
          &lt;span class="TPkeyword1"&gt;if &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objRegExp&lt;span class="TPoperator"&gt;.&lt;/span&gt;IsMatch&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;))&lt;/span&gt;
          &lt;span class="TPbracket"&gt;{&lt;/span&gt;
            &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
          &lt;span class="TPbracket"&gt;} &lt;/span&gt;
          &lt;span class="TPkeyword1"&gt;else &lt;/span&gt;
          &lt;span class="TPbracket"&gt;{&lt;/span&gt;
            &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;true&lt;/span&gt;;
          &lt;span class="TPbracket"&gt;}&lt;/span&gt;
        &lt;span class="TPbracket"&gt;}&lt;/span&gt;
      &lt;span class="TPbracket"&gt;}&lt;/span&gt;
      &lt;span class="TPcomment"&gt;//Should never get here...&lt;/span&gt;
      &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
    &lt;span class="TPbracket"&gt;}&lt;/span&gt;
  &lt;span class="TPbracket"&gt;}&lt;/span&gt;
&lt;span class="TPbracket"&gt;}&lt;/span&gt;
&lt;/pre&gt;


&lt;font size="1"&gt;Copyright © 2003, &lt;a href="http://www.ChristopherLewis.com"&gt;Christopher G. Lewis&lt;/a&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798049-106701473039899307?l=chrislewis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106701473039899307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106701473039899307'/><link rel='alternate' type='text/html' href='http://chrislewis.blogspot.com/2003_10_01_archive.html#106701473039899307' title='Even Better Ping in C#'/><author><name>Chris Lewis</name><uri>http://www.blogger.com/profile/05928293747532949306</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10667222558797398711'/></author></entry><entry><id>tag:blogger.com,1999:blog-5798049.post-106685784845853852</id><published>2003-10-21T16:24:00.000-05:00</published><updated>2003-10-22T17:06:06.550-05:00</updated><title type='text'>Simple Ping in VBScript &amp; C#</title><content type='html'>As you might have seen from my web site, I've played with the System.Net namespace to create an ICMP version of ping in C#.  Interesting in it's own right, but it's a lot of low level code.
&lt;BR&gt;&lt;BR&gt;
I started looking for a simpler way to ping and return a result.
&lt;BR&gt;&lt;BR&gt;
WMI supports a ping class, but only in XP and above.
&lt;BR&gt;&lt;BR&gt;
With VBScript, you can use the WshShell.Exec command to exec Ping.EXE and parse the result as follows  (variations of this are readily available in Google Groups):
&lt;BR&gt;&lt;BR&gt;
&lt;pre class="code"&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Ping - Pings a host via Shell, and parses the results&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 030620 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Function &lt;/span&gt;Ping&lt;span class="TPbracket"&gt;(&lt;/span&gt;strHost&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;objShell
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;objStdOut
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strLine
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;objRegExp
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strPattern

  Ping &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;False&lt;/span&gt;

  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objShell &lt;span class="TPoperator"&gt;= &lt;/span&gt;WshShell.Exec&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"PING.EXE " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strHost&lt;span class="TPbracket"&gt;)  &lt;/span&gt;&lt;span class="TPcomment"&gt;'The command line&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objStdOut &lt;span class="TPoperator"&gt;= &lt;/span&gt;objShell.StdOut &lt;span class="TPcomment"&gt;'Reads the output from the command&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;New &lt;span class="TPkeyword5"&gt;RegExp&lt;/span&gt;
  objRegExp.&lt;span class="TPkeyword6"&gt;IgnoreCase &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;True&lt;/span&gt;

  &lt;span class="TPkeyword4"&gt;Do While &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Not &lt;/span&gt;objStdOut.&lt;span class="TPkeyword2"&gt;AtEndOfStream&lt;/span&gt;
    strLine &lt;span class="TPoperator"&gt;= &lt;/span&gt;objStdOut.&lt;span class="TPkeyword2"&gt;ReadLine&lt;/span&gt;
    strLine &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;Trim&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;)&lt;/span&gt;
    &lt;span class="TPcomment"&gt;'Test for "Unknown Host" - DNS Failed&lt;/span&gt;
    objRegExp.&lt;span class="TPkeyword6"&gt;Pattern &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"^Unknown"&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;objRegExp.&lt;span class="TPkeyword5"&gt;Test&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;) &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
      Ping &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;False&lt;/span&gt;
      &lt;span class="TPkeyword4"&gt;Exit Function&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;

    &lt;span class="TPcomment"&gt;'DNS Succeeded, but box off-line&lt;/span&gt;
    objRegExp.&lt;span class="TPkeyword6"&gt;Pattern &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"100% loss"&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;objRegExp.&lt;span class="TPkeyword5"&gt;Test&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;) &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
      Ping &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;False&lt;/span&gt;
      &lt;span class="TPkeyword4"&gt;Exit Function&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;

    &lt;span class="TPcomment"&gt;'Got a Reply From,&lt;/span&gt;
    objRegExp.&lt;span class="TPkeyword6"&gt;Pattern &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"^Reply from"&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;objRegExp.&lt;span class="TPkeyword5"&gt;Test&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;) &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
      &lt;span class="TPcomment"&gt;'Check for "Destination host unreachable."&lt;/span&gt;
      objRegExp.&lt;span class="TPkeyword6"&gt;Pattern &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"Destination host unreachable\."&lt;/span&gt;
      &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;objRegExp.&lt;span class="TPkeyword5"&gt;Test&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;) &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
        Ping &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;False&lt;/span&gt;
      &lt;span class="TPkeyword4"&gt;Else&lt;/span&gt;
        &lt;span class="TPcomment"&gt;'S/B OK here&lt;/span&gt;
        Ping &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;True&lt;/span&gt;
      &lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;
      &lt;span class="TPkeyword4"&gt;Exit Function&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Loop&lt;/span&gt;

  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objShell &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Nothing&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objStdOut &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Nothing&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Nothing&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;End Function&lt;/span&gt;
&lt;/pre&gt;
Duplicating the key points of this code in CSharp results in the following:
&lt;BR&gt;
&lt;pre class="code"&gt;
&lt;span class="TPcomment"&gt;//----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;// TCPIPServices - Namespace for TCPIP functions&lt;/span&gt;
&lt;span class="TPcomment"&gt;//&lt;/span&gt;
&lt;span class="TPcomment"&gt;// Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;// ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;// 031021 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;//----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;using &lt;/span&gt;System;
&lt;span class="TPkeyword1"&gt;using &lt;/span&gt;System&lt;span class="TPoperator"&gt;.&lt;/span&gt;Text&lt;span class="TPoperator"&gt;.&lt;/span&gt;RegularExpressions;

&lt;span class="TPcomment"&gt;//Reference to: Windows Script Host Object Model&lt;/span&gt;
&lt;span class="TPkeyword1"&gt;using &lt;/span&gt;IWshRuntimeLibrary;

&lt;span class="TPkeyword1"&gt;namespace &lt;/span&gt;TCPIPServices
&lt;span class="TPbracket"&gt;{&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// CTCPIPServices - Class of TCP/IP Services&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// &amp;lt;remarks&amp;gt;&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// TODO: NSLookup, NetStat, etc&lt;/span&gt;
  &lt;span class="TPcomment"&gt;/// &amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span class="TPkeyword1"&gt;public class &lt;/span&gt;CTCPIPServices
  &lt;span class="TPbracket"&gt;{&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// The class constructor. &lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="TPkeyword1"&gt;public &lt;/span&gt;CTCPIPServices&lt;span class="TPbracket"&gt;()&lt;/span&gt;
    &lt;span class="TPbracket"&gt;{&lt;/span&gt;
    &lt;span class="TPbracket"&gt;}&lt;/span&gt;

    &lt;span class="TPcomment"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// Ping using Ping.EXE&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;param name="HostName"&amp;gt;Host to Ping&amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;remarks&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// Uses WSH 5.6 to exec the PING.EXE command and capture output, which&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// is then parsed to determine results&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;/remarks&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;returns&amp;gt;&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// Returns true if ping succeeded, false if ping fails.&lt;/span&gt;
    &lt;span class="TPcomment"&gt;/// &amp;lt;/returns&amp;gt;&lt;/span&gt;
    &lt;span class="TPkeyword1"&gt;public bool &lt;/span&gt;Ping&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPkeyword1"&gt;string &lt;/span&gt;HostName&lt;span class="TPbracket"&gt;) &lt;/span&gt;
    &lt;span class="TPbracket"&gt;{&lt;/span&gt;
      IWshRuntimeLibrary&lt;span class="TPoperator"&gt;.&lt;/span&gt;WshShell     objShell &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;IWshRuntimeLibrary&lt;span class="TPoperator"&gt;.&lt;/span&gt;WshShell&lt;span class="TPbracket"&gt;()&lt;/span&gt;;
      IWshRuntimeLibrary&lt;span class="TPoperator"&gt;.&lt;/span&gt;TextStream   tsStdOut;
      &lt;span class="TPkeyword1"&gt;string                          &lt;/span&gt;strCommand &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"PING.EXE " &lt;/span&gt;&lt;span class="TPoperator"&gt;+ &lt;/span&gt;HostName;
      &lt;span class="TPkeyword1"&gt;string                          &lt;/span&gt;strLine;
      Regex  objRegExp;

      IWshRuntimeLibrary&lt;span class="TPoperator"&gt;.&lt;/span&gt;IWshExec objExec &lt;span class="TPoperator"&gt;= &lt;/span&gt;objShell&lt;span class="TPoperator"&gt;.&lt;/span&gt;Exec&lt;span class="TPbracket"&gt;(&lt;/span&gt;strCommand&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
      tsStdOut &lt;span class="TPoperator"&gt;= &lt;/span&gt;objExec&lt;span class="TPoperator"&gt;.&lt;/span&gt;StdOut; &lt;span class="TPcomment"&gt;//Reads the output from the command&lt;/span&gt;
      &lt;span class="TPkeyword1"&gt;while &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPoperator"&gt;!&lt;/span&gt;tsStdOut&lt;span class="TPoperator"&gt;.&lt;/span&gt;AtEndOfStream&lt;span class="TPbracket"&gt;) &lt;/span&gt;
      &lt;span class="TPbracket"&gt;{&lt;/span&gt;
        strLine &lt;span class="TPoperator"&gt;= &lt;/span&gt;tsStdOut&lt;span class="TPoperator"&gt;.&lt;/span&gt;ReadLine&lt;span class="TPbracket"&gt;()&lt;/span&gt;;
        strLine &lt;span class="TPoperator"&gt;= &lt;/span&gt;strLine&lt;span class="TPoperator"&gt;.&lt;/span&gt;Trim&lt;span class="TPbracket"&gt;()&lt;/span&gt;;
        
        &lt;span class="TPcomment"&gt;//test for Unknown Host&lt;/span&gt;
        objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Regex&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"^Unknown"&lt;/span&gt;, RegexOptions&lt;span class="TPoperator"&gt;.&lt;/span&gt;IgnoreCase&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
        &lt;span class="TPkeyword1"&gt;if &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objRegExp&lt;span class="TPoperator"&gt;.&lt;/span&gt;IsMatch&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;))&lt;/span&gt;
        &lt;span class="TPbracket"&gt;{&lt;/span&gt;
          &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
        &lt;span class="TPbracket"&gt;}&lt;/span&gt;
        
        &lt;span class="TPcomment"&gt;//DNS Succeeded, but box off-line&lt;/span&gt;
        objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Regex&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"100% loss"&lt;/span&gt;, RegexOptions&lt;span class="TPoperator"&gt;.&lt;/span&gt;IgnoreCase&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
        &lt;span class="TPkeyword1"&gt;if &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objRegExp&lt;span class="TPoperator"&gt;.&lt;/span&gt;IsMatch&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;))&lt;/span&gt;
        &lt;span class="TPbracket"&gt;{&lt;/span&gt;
          &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
        &lt;span class="TPbracket"&gt;}&lt;/span&gt;

        &lt;span class="TPcomment"&gt;//Got a reply&lt;/span&gt;
        objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Regex&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"^Reply from"&lt;/span&gt;, RegexOptions&lt;span class="TPoperator"&gt;.&lt;/span&gt;IgnoreCase&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
        &lt;span class="TPkeyword1"&gt;if &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objRegExp&lt;span class="TPoperator"&gt;.&lt;/span&gt;IsMatch&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;))&lt;/span&gt;
        &lt;span class="TPbracket"&gt;{&lt;/span&gt;
          &lt;span class="TPcomment"&gt;//Check for "Destination host unreachable."&lt;/span&gt;
          objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword2"&gt;new &lt;/span&gt;Regex&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"Destination host unreachable"&lt;/span&gt;, RegexOptions&lt;span class="TPoperator"&gt;.&lt;/span&gt;IgnoreCase&lt;span class="TPbracket"&gt;)&lt;/span&gt;;
          &lt;span class="TPkeyword1"&gt;if &lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;objRegExp&lt;span class="TPoperator"&gt;.&lt;/span&gt;IsMatch&lt;span class="TPbracket"&gt;(&lt;/span&gt;strLine&lt;span class="TPbracket"&gt;))&lt;/span&gt;
          &lt;span class="TPbracket"&gt;{&lt;/span&gt;
            &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
          &lt;span class="TPbracket"&gt;} &lt;/span&gt;
          &lt;span class="TPkeyword1"&gt;else &lt;/span&gt;
          &lt;span class="TPbracket"&gt;{&lt;/span&gt;
            &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;true&lt;/span&gt;;
          &lt;span class="TPbracket"&gt;}&lt;/span&gt;
        &lt;span class="TPbracket"&gt;}&lt;/span&gt;
      &lt;span class="TPbracket"&gt;}&lt;/span&gt;
      &lt;span class="TPcomment"&gt;//Should never get here...&lt;/span&gt;
      &lt;span class="TPkeyword1"&gt;return &lt;/span&gt;&lt;span class="TPkeyword2"&gt;false&lt;/span&gt;;
    &lt;span class="TPbracket"&gt;}&lt;/span&gt;
  &lt;span class="TPbracket"&gt;}&lt;/span&gt;
&lt;span class="TPbracket"&gt;}&lt;/span&gt;
&lt;/pre&gt;

The weird thing about the WshShell.Exec command is that you can see the window.  No way that I know of to hide it.
&lt;BR&gt;&lt;BR&gt;
In my opinion, not a big deal, but I'm hunting for a better solution.
&lt;BR&gt;&lt;BR&gt;

&lt;font size="1"&gt;Copyright © 2003, &lt;a href="http://www.ChristopherLewis.com"&gt;Christopher G. Lewis&lt;/a&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798049-106685784845853852?l=chrislewis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106685784845853852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106685784845853852'/><link rel='alternate' type='text/html' href='http://chrislewis.blogspot.com/2003_10_01_archive.html#106685784845853852' title='Simple Ping in VBScript &amp; C#'/><author><name>Chris Lewis</name><uri>http://www.blogger.com/profile/05928293747532949306</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10667222558797398711'/></author></entry><entry><id>tag:blogger.com,1999:blog-5798049.post-106398566395323723</id><published>2003-09-19T10:34:00.000-05:00</published><updated>2003-09-19T10:36:20.556-05:00</updated><title type='text'>GetFQDN</title><content type='html'>I recently had the need to return the Fully Qualified Domain name for a Windows 2000 domain.  It turns out that this is available via the RootDSE class's defaultNamingContext and rootDomainNamingContext properties.  
&lt;BR&gt;
Took me a little while to figure out where to find this information, but once I started looking into LDAP and the Active Directory, the solution was pretty simplistic.

&lt;pre class="code"&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' GetFQDN.VBS - Script to get a Fully Qualified Domain Name for a W2K Domain&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;'  Copyright© 2003, Christopher G. Lewis - HTTP://www.ChristopherLewis.com&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 030918 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Option Explicit&lt;/span&gt;

&lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;objRootDSE
&lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strNamingContext
&lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strDomain
&lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strQuery
&lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strFQDN

&lt;span class="TPcomment"&gt;'Parse command line&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;If &lt;/span&gt;Wscript.arguments.&lt;span class="TPkeyword2"&gt;Count &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPnumber"&gt;0 &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
  strDomain &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;""&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Else&lt;/span&gt;
  strDomain &lt;span class="TPoperator"&gt;= &lt;/span&gt;Wscript.arguments&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPnumber"&gt;0&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;

&lt;span class="TPcomment"&gt;'If command line is blank, process current domain&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;If &lt;/span&gt;strDomain &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"" &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
  Wscript.echo &lt;span class="TPstring"&gt;"Getting FQDN current domain..."&lt;/span&gt;
  strQuery &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"LDAP://RootDSE"&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Else&lt;/span&gt;
  Wscript.echo &lt;span class="TPstring"&gt;"Getting FQDN for " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strDomain &lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPstring"&gt;"..."&lt;/span&gt;
  strQuery &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"LDAP://" &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strDomain &lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPstring"&gt;"/RootDSE"&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;

&lt;span class="TPkeyword4"&gt;On Error &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Resume &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Next&lt;/span&gt;
&lt;span class="TPcomment"&gt;'Open up a query to the RootDSE object.&lt;/span&gt;
&lt;span class="TPcomment"&gt;'From the SDK: The RootDSE class provides information about the capabilities of an LDAP server.&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objRootDSE &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;GetObject&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strQuery&lt;span class="TPbracket"&gt;)&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;If &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Err &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPnumber"&gt;0 &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
  &lt;span class="TPcomment"&gt;'Domain FQDN&lt;/span&gt;
  strNamingContext &lt;span class="TPoperator"&gt;= &lt;/span&gt;objRootDSE.&lt;span class="TPkeyword4"&gt;Get&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"defaultNamingContext"&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  strFQDN &lt;span class="TPoperator"&gt;= &lt;/span&gt;GetFQDNFromNamingContext&lt;span class="TPbracket"&gt;(&lt;/span&gt;strNamingContext&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  Wscript.echo &lt;span class="TPstring"&gt;"Domain FQDN: " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strFQDN

  &lt;span class="TPcomment"&gt;'Root Domain FQDN&lt;/span&gt;
  strNamingContext &lt;span class="TPoperator"&gt;= &lt;/span&gt;objRootDSE.&lt;span class="TPkeyword4"&gt;Get&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPstring"&gt;"rootDomainNamingContext"&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  strFQDN &lt;span class="TPoperator"&gt;= &lt;/span&gt;GetFQDNFromNamingContext&lt;span class="TPbracket"&gt;(&lt;/span&gt;strNamingContext&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  Wscript.echo &lt;span class="TPstring"&gt;"Root Domain: " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strFQDN
&lt;span class="TPkeyword4"&gt;Else&lt;/span&gt;
  Wscript.echo &lt;span class="TPstring"&gt;"Looks like Domain " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strDomain &lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPstring"&gt;" doesn't exist."&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' GetFQDNFromNamingContext - Function to convert a Naming Context into a DNS name&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   Parms  : strNamingContext i.e. DC=Domain,DC=Company,DC=com&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   Returns: FQDN for strNamingContext ie.e Domain.Company.com&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   Notes  : LDAP allows for commas in strings, as long as they are escaped with&lt;/span&gt;
&lt;span class="TPcomment"&gt;'            a \ character. (i.e. "CN=Lewis\, Chris") Sinces commas are not&lt;/span&gt;
&lt;span class="TPcomment"&gt;'            allowed in domain names, there is no parsing for this is left out.&lt;/span&gt;
&lt;span class="TPcomment"&gt;'            An implimentation of this would check to see if the last char was a&lt;/span&gt;
&lt;span class="TPcomment"&gt;'            "\", and combine the two array elements.&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 030919 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Function &lt;/span&gt;GetFQDNFromNamingContext&lt;span class="TPbracket"&gt;(&lt;/span&gt;strNamingContext&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;aDomain
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;iCount
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strTemp

  &lt;span class="TPcomment"&gt;'Parse the NC by creating an array with the comma as an array boundry&lt;/span&gt;
  aDomain &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;Split&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strNamingContext, &lt;span class="TPstring"&gt;","&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;For &lt;/span&gt;iCount &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPnumber"&gt;0 &lt;/span&gt;&lt;span class="TPkeyword4"&gt;To &lt;/span&gt;&lt;span class="TPkeyword1"&gt;UBound&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;aDomain&lt;span class="TPbracket"&gt;)&lt;/span&gt;
    &lt;span class="TPcomment"&gt;'Add a "." if needed&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;strTemp &lt;span class="TPoperator"&gt;&amp;lt;&amp;gt; &lt;/span&gt;&lt;span class="TPstring"&gt;"" &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
      strTemp &lt;span class="TPoperator"&gt;= &lt;/span&gt;strTemp &lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPstring"&gt;"."&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;
    &lt;span class="TPcomment"&gt;'Remove the "DC=" and add this item to the temp string&lt;/span&gt;
    strTemp &lt;span class="TPoperator"&gt;= &lt;/span&gt;strTemp &lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPkeyword1"&gt;Mid&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;aDomain&lt;span class="TPbracket"&gt;(&lt;/span&gt;iCount&lt;span class="TPbracket"&gt;)&lt;/span&gt;, &lt;span class="TPnumber"&gt;4&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Next&lt;/span&gt;
  &lt;span class="TPcomment"&gt;'Return the FQDN&lt;/span&gt;
  GetFQDNFromNamingContext &lt;span class="TPoperator"&gt;= &lt;/span&gt;strTemp
&lt;span class="TPkeyword4"&gt;End Function&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' End of GetFQDN.VBS &lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;/pre&gt;


&lt;font size="1"&gt;Copyright © 2003, &lt;a href="http://www.ChristopherLewis.com"&gt;Christopher G. Lewis&lt;/a&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798049-106398566395323723?l=chrislewis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106398566395323723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106398566395323723'/><link rel='alternate' type='text/html' href='http://chrislewis.blogspot.com/2003_09_01_archive.html#106398566395323723' title='GetFQDN'/><author><name>Chris Lewis</name><uri>http://www.blogger.com/profile/05928293747532949306</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10667222558797398711'/></author></entry><entry><id>tag:blogger.com,1999:blog-5798049.post-106381395566361190</id><published>2003-09-17T10:52:00.000-05:00</published><updated>2003-09-24T11:19:45.936-05:00</updated><title type='text'>Script to parse a URL</title><content type='html'>Here's a little script that parses a URL and returns the Protocol, host and path.  It uses Regular Expressions and the Match/SubMatch collections.
&lt;PRE class="code"&gt;
&lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;?xml version&lt;span class="TPoperator"&gt;=&lt;/span&gt;&lt;span class="TPstring"&gt;"1.0" &lt;/span&gt;?&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;package&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;comment&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ParseURL.wsf - Script to parse a URL in the form&lt;/span&gt;
&lt;span class="TPcomment"&gt;'   prot://Host/path/file&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;'  Copyright© 2003, Christopher G. Lewis - HTTP://www.ChristopherLewis.com&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 030916 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPoperator"&gt;&amp;lt;/&lt;/span&gt;comment&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;job&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;runtime&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="TPkeyword6"&gt;description&lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
        ParseURL.wsf &lt;span class="TPbracket"&gt;(&lt;/span&gt;Version &lt;span class="TPnumber"&gt;1.0.00&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
        Script to parse a URL in the form prot://Host/path/file
      &lt;span class="TPoperator"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="TPkeyword6"&gt;description&lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;!&lt;span class="TPoperator"&gt;-- &lt;/span&gt;Command line arguments &lt;span class="TPoperator"&gt;--&amp;gt;&lt;/span&gt;
      &lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;unnamed
        &lt;span class="TPkeyword2"&gt;name&lt;/span&gt;&lt;span class="TPoperator"&gt;=&lt;/span&gt;&lt;span class="TPstring"&gt;"URL"&lt;/span&gt;
        &lt;span class="TPkeyword2"&gt;helpstring&lt;/span&gt;&lt;span class="TPoperator"&gt;=&lt;/span&gt;&lt;span class="TPstring"&gt;""&lt;/span&gt;
        &lt;span class="TPkeyword2"&gt;type&lt;/span&gt;&lt;span class="TPoperator"&gt;=&lt;/span&gt;&lt;span class="TPstring"&gt;"boolean"&lt;/span&gt;
        &lt;span class="TPkeyword2"&gt;required&lt;/span&gt;&lt;span class="TPoperator"&gt;=&lt;/span&gt;&lt;span class="TPstring"&gt;"true"&lt;/span&gt;
      &lt;span class="TPoperator"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;example&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
        ParseURL.wsf &lt;a class="TPurn" href="http://slashdot.org"&gt;http://slashdot.org&lt;/a&gt;
          &lt;span class="TPoperator"&gt;- &lt;/span&gt;&lt;span class="TPkeyword5"&gt;or &lt;/span&gt;&lt;span class="TPoperator"&gt;-&lt;/span&gt;
        ParseURL.wsf &lt;a class="TPurn" href="ftp://ftp.sunsite.dk/projects/wget/windows/wget20030915b.zip"&gt;ftp://ftp.sunsite.dk/projects/wget/windows/wget20030915b.zip&lt;/a&gt;
      &lt;span class="TPoperator"&gt;&amp;lt;/&lt;/span&gt;example&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="TPoperator"&gt;&amp;lt;/&lt;/span&gt;runtime&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;script language&lt;span class="TPoperator"&gt;=&lt;/span&gt;&lt;span class="TPstring"&gt;"VBScript"&lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="TPoperator"&gt;&amp;lt;&lt;/span&gt;![CDATA[
&lt;span class="TPkeyword4"&gt;Option Explicit&lt;/span&gt;

&lt;span class="TPcomment"&gt;'Check for CScript&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;If &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Not &lt;/span&gt;IsCScript&lt;span class="TPbracket"&gt;() &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
  WScript.Echo WScript.ScriptName &lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;&lt;span class="TPstring"&gt;" must be run with CScript."&lt;/span&gt;
  WScript.Quit &lt;span class="TPnumber"&gt;1&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;End If&lt;/span&gt;

&lt;span class="TPcomment"&gt;'Start main processing&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Call &lt;/span&gt;Main

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Main - Main sub&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 030729 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Sub &lt;/span&gt;Main&lt;span class="TPbracket"&gt;()&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strURL
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;objRegEx
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;colMatches
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;objMatch
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strProtocol
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strHost
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;strPath

  &lt;span class="TPcomment"&gt;'Parse Command Line&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;WScript.Arguments.Unnamed.&lt;span class="TPkeyword2"&gt;Count &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPnumber"&gt;0 &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
    PrintSyntax&lt;span class="TPbracket"&gt;()&lt;/span&gt;
    Wscript.Echo &lt;span class="TPstring"&gt;"  URL is required."&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Else&lt;/span&gt;
    strURL &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword1"&gt;Trim&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;WScript.Arguments.Unnamed&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPnumber"&gt;0&lt;/span&gt;&lt;span class="TPbracket"&gt;))&lt;/span&gt;
    Wscript.Echo &lt;span class="TPstring"&gt;"Parsing URL: " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strURL
  &lt;span class="TPkeyword4"&gt;End if&lt;/span&gt;

  &lt;span class="TPcomment"&gt;'Parse URL&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objRegEx &lt;span class="TPoperator"&gt;= &lt;/span&gt;New &lt;span class="TPkeyword5"&gt;RegExp&lt;/span&gt;
  objRegEx.&lt;span class="TPkeyword6"&gt;pattern &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"^([\w]*://)([\w\-\.]*)([\w\.\-/]*)"&lt;/span&gt;
  objRegEx.&lt;span class="TPkeyword6"&gt;Global &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;true&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;objRegEx.&lt;span class="TPkeyword5"&gt;Test&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strURL&lt;span class="TPbracket"&gt;) &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;colMatches &lt;span class="TPoperator"&gt;= &lt;/span&gt;objRegEx.&lt;span class="TPkeyword5"&gt;Execute&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;strURL&lt;span class="TPbracket"&gt;)&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objMatch &lt;span class="TPoperator"&gt;= &lt;/span&gt;colMatches&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPnumber"&gt;0&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;objMatch.SubMatches.&lt;span class="TPkeyword2"&gt;Count &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;gt; &lt;/span&gt;&lt;span class="TPnumber"&gt;0 &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
      strProtocol &lt;span class="TPoperator"&gt;= &lt;/span&gt;objMatch.SubMatches&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPnumber"&gt;0&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;End if&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;objMatch.SubMatches.&lt;span class="TPkeyword2"&gt;Count &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;gt; &lt;/span&gt;&lt;span class="TPnumber"&gt;1 &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
      strHost &lt;span class="TPoperator"&gt;= &lt;/span&gt;objMatch.SubMatches&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPnumber"&gt;1&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;End if&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;If &lt;/span&gt;objMatch.SubMatches.&lt;span class="TPkeyword2"&gt;Count &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;gt; &lt;/span&gt;&lt;span class="TPnumber"&gt;2 &lt;/span&gt;&lt;span class="TPkeyword4"&gt;Then&lt;/span&gt;
      strPath &lt;span class="TPoperator"&gt;= &lt;/span&gt;objMatch.SubMatches&lt;span class="TPbracket"&gt;(&lt;/span&gt;&lt;span class="TPnumber"&gt;2&lt;/span&gt;&lt;span class="TPbracket"&gt;)&lt;/span&gt;
    &lt;span class="TPkeyword4"&gt;End if&lt;/span&gt;
    Wscript.Echo &lt;span class="TPstring"&gt;"Prot: " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strProtocol
    Wscript.Echo &lt;span class="TPstring"&gt;"Host: " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strHost
    Wscript.Echo &lt;span class="TPstring"&gt;"Path: " &lt;/span&gt;&lt;span class="TPoperator"&gt;&amp;amp; &lt;/span&gt;strPath
  &lt;span class="TPkeyword4"&gt;Else&lt;/span&gt;
    wscript.echo &lt;span class="TPstring"&gt;"Input is an invalid URL"&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;End if&lt;/span&gt;

&lt;span class="TPkeyword4"&gt;End Sub&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' IsCscript - Checks CScript vs. WScript&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 020507 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Function &lt;/span&gt;IsCScript&lt;span class="TPbracket"&gt;()&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Dim &lt;/span&gt;objRegExp
  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;New &lt;span class="TPkeyword5"&gt;RegExp&lt;/span&gt;
  objRegExp.&lt;span class="TPkeyword6"&gt;IgnoreCase &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;True&lt;/span&gt;
  objRegExp.&lt;span class="TPkeyword6"&gt;Pattern &lt;/span&gt;&lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPstring"&gt;"cscript.exe$"&lt;/span&gt;
  IsCScript &lt;span class="TPoperator"&gt;= &lt;/span&gt;objRegExp.&lt;span class="TPkeyword5"&gt;Test&lt;/span&gt;&lt;span class="TPbracket"&gt;(&lt;/span&gt;WScript.FullName&lt;span class="TPbracket"&gt;)&lt;/span&gt;
  &lt;span class="TPkeyword4"&gt;Set &lt;/span&gt;objRegExp &lt;span class="TPoperator"&gt;= &lt;/span&gt;&lt;span class="TPkeyword5"&gt;Nothing&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;End Function&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' PrintSyntax - PrintSyntax&lt;/span&gt;
&lt;span class="TPcomment"&gt;'&lt;/span&gt;
&lt;span class="TPcomment"&gt;' Date   Name    Comment&lt;/span&gt;
&lt;span class="TPcomment"&gt;' ------ ------- -----------------------------------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' 030606 CGL     Created&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;Function &lt;/span&gt;PrintSyntax&lt;span class="TPbracket"&gt;()&lt;/span&gt;
  WScript.Arguments.ShowUsage&lt;span class="TPbracket"&gt;()&lt;/span&gt;
&lt;span class="TPkeyword4"&gt;End Function&lt;/span&gt;

&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
&lt;span class="TPcomment"&gt;' End of ParseURL.wsf&lt;/span&gt;
&lt;span class="TPcomment"&gt;'----------------------------------------+----------------------------------------&lt;/span&gt;
]]&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="TPoperator"&gt;&amp;lt;/&lt;/span&gt;script&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="TPoperator"&gt;&amp;lt;/&lt;/span&gt;job&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="TPoperator"&gt;&amp;lt;/&lt;/span&gt;package&lt;span class="TPoperator"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;font size="1"&gt;Copyright © 2003, &lt;a href="http://www.ChristopherLewis.com"&gt;Christopher G. Lewis&lt;/a&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798049-106381395566361190?l=chrislewis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106381395566361190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106381395566361190'/><link rel='alternate' type='text/html' href='http://chrislewis.blogspot.com/2003_09_01_archive.html#106381395566361190' title='Script to parse a URL'/><author><name>Chris Lewis</name><uri>http://www.blogger.com/profile/05928293747532949306</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10667222558797398711'/></author></entry><entry><id>tag:blogger.com,1999:blog-5798049.post-106329257697727525</id><published>2003-09-11T10:02:00.000-05:00</published><updated>2003-09-11T14:40:39.596-05:00</updated><title type='text'>Blogger Creation</title><content type='html'>Here's my first blogger entry.


&lt;font size="1"&gt;Copyright © 2003, &lt;a href="http://www.ChristopherLewis.com"&gt;Christopher G. Lewis&lt;/a&gt; &lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798049-106329257697727525?l=chrislewis.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106329257697727525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798049/posts/default/106329257697727525'/><link rel='alternate' type='text/html' href='http://chrislewis.blogspot.com/2003_09_01_archive.html#106329257697727525' title='Blogger Creation'/><author><name>Chris Lewis</name><uri>http://www.blogger.com/profile/05928293747532949306</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10667222558797398711'/></author></entry></feed>