home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 May / W2KPRK.iso / netmgmt.cab / portmgr.vbs < prev    next >
Text File  |  1999-11-04  |  20KB  |  822 lines

  1. '----------------------------------------------------------------------
  2. '
  3. ' Copyright (c) Microsoft Corporation 1999
  4. ' All Rights Reserved
  5. '
  6. ' Abstract:
  7. '
  8. ' PortMgr.vbs - Port operation script for Windows 2000
  9. '
  10. ' Usage:
  11. '
  12. ' Usage: portmgr [-adl?] [-p port] [-c server][-n port number]
  13. '                        [-t raw|lpr|local] [-e device name]"
  14. '
  15. ' Examples
  16. ' PortMgr -d -c \\server -p c:\temp\foo.prn
  17. ' PortMgr -a -c \\server -p IP_1.2.3.4 -e 1.2.3.4 -t raw -n 9100
  18. '
  19. '----------------------------------------------------------------------
  20.  
  21. option explicit
  22.  
  23. '
  24. ' Debugging trace flags, to disable debug output trace message
  25. ' change gDebugFlag to true.
  26. '
  27. dim   gDebugFlag
  28. const kDebugTrace = 1
  29. const kDebugError = 2
  30.  
  31. gDebugFlag = false
  32.  
  33. '
  34. ' Messages to be displayed if the scripting host is not cscript
  35. '                            
  36. const kMessage1 = "Please run this script using CScript."  
  37. const kMessage2 = "This can be achieved by"
  38. const kMessage3 = "1. Using ""CScript script.vbs arguments"" or" 
  39. const kMessage4 = "2. Changing the default Windows Scripting Host to CScript"
  40. const kMessage5 = "   using ""CScript //H:CScript //S"" and running the script "
  41. const kMessage6 = "   ""script.vbs arguments""."
  42.  
  43. '
  44. ' Operation action values.
  45. '
  46. const kActionAdd        = 0
  47. const kActionDelete     = 1
  48. const kActionList       = 2
  49. const kActionUnknown    = 3
  50. const kActionGet        = 4
  51. const kActionSet        = 5
  52.  
  53. '
  54. ' Port Types
  55. '
  56. const kTcpRaw           = 1
  57. const kTcpLPr           = 2
  58. const kLocal            = 3
  59. const kLocalDownLevel   = 4
  60. const kLprMon           = 5
  61. const kHPdlc            = 7
  62. const kUnknown          = 8
  63.  
  64. const kStdTCPIP = "Standard TCP/IP Port"
  65.  
  66. const kErrorSuccess = 0
  67. const KErrorFailure = 1
  68.  
  69. main
  70.  
  71. '
  72. ' Main execution starts here
  73. '
  74. sub main
  75.  
  76.     on error resume next
  77.  
  78.     dim iAction
  79.     dim iRetval
  80.     dim oParamDict
  81.  
  82.     '
  83.     ' Abort if the host is not cscript
  84.     '
  85.     if not IsHostCscript() then
  86.    
  87.         call wscript.echo(kMessage1 & vbCRLF & kMessage2 & vbCRLF & _
  88.                           kMessage3 & vbCRLF & kMessage4 & vbCRLF & _
  89.                           kMessage5 & vbCRLF & kMessage6 & vbCRLF)
  90.         
  91.         wscript.quit
  92.    
  93.     end if
  94.     
  95.     set oParamDict = CreateObject("Scripting.Dictionary")
  96.  
  97.     iRetval = ParseCommandLine(iAction, oParamDict)
  98.  
  99.     if iRetval = 0 then
  100.  
  101.         select case iAction
  102.  
  103.             case kActionAdd
  104.                 iRetval = AddPort(oParamDict)
  105.  
  106.             case kActionDelete
  107.                 iRetval = DeletePort(oParamDict.Item("ServerName"), oParamDict.Item("PortName"))
  108.  
  109.             case kActionList
  110.                 iRetval = ListPorts(oParamDict.Item("ServerName"))
  111.  
  112.             case kActionGet
  113.                 iRetVal = GetPort(oParamDict.Item("ServerName"), oParamDict.Item("PortName"))
  114.  
  115.             case kActionSet
  116.                 iRetVal = SetPort(oParamDict)
  117.  
  118.             case else
  119.                 Usage(true)
  120.                 exit sub
  121.  
  122.         end select
  123.  
  124.     end if
  125.  
  126. end sub
  127.  
  128. '
  129. ' Delete a port
  130. '
  131. function DeletePort(strServer, strPort)
  132.  
  133.     on error resume next
  134.  
  135.     dim oMaster, oPort
  136.     dim iResult
  137.  
  138.     DebugPrint kDebugTrace, "In DeletePort "
  139.     DebugPrint kDebugTrace, "Server = " & strServer
  140.     DebugPrint kDebugTrace, "Port   = " & strPort
  141.  
  142.     set oMaster = CreateObject("PrintMaster.PrintMaster.1")
  143.     set oPort   = CreateObject("Port.Port.1")
  144.  
  145.     oPort.ServerName = strServer
  146.  
  147.     oPort.PortName   = strPort
  148.  
  149.     oMaster.PortDel oPort
  150.  
  151.     if Err.Number = 0 then
  152.  
  153.         wscript.echo "Success: Deleting port """ & strPort & """ "
  154.  
  155.         iResult = kErrorSuccess
  156.  
  157.     else
  158.  
  159.         wscript.echo "Unable to deletie port """ & strPort & """, error: 0x" _
  160.                      & Hex(Err.Number) & ". " & Err.Description
  161.  
  162.         iResult = kErrorFailure
  163.  
  164.     end if
  165.  
  166.     DeletePort = iResult
  167.  
  168. end function
  169.  
  170. '
  171. ' Add a port
  172. '
  173. function AddPort(oParamDict)
  174.  
  175.     on error resume next
  176.  
  177.     dim oPort
  178.     dim oMaster
  179.     dim iResult
  180.     dim PortType
  181.  
  182.     DebugPrint kDebugTrace, "In AddPort "
  183.     DebugPrint kDebugTrace, "ServerName  = " & oParamDict.Item("ServerName")
  184.     DebugPrint kDebugTrace, "PortName    = " & oParamDict.Item("PortName")
  185.     DebugPrint kDebugTrace, "PortType    = " & oParamDict.Item("PortType")
  186.     DebugPrint kDebugTrace, "PortNumber  = " & oParamDict.Item("PortNumber")
  187.     DebugPrint kDebugTrace, "QueueName   = " & oParamDict.Item("QueueName")
  188.     DebugPrint kDebugTrace, "Index       = " & oParamDict.Item("Index")
  189.     DebugPrint kDebugTrace, "Community   = " & oParamDict.Item("CName")
  190.     DebugPrint kDebugTrace, "HostAddress = " & oParamDict.Item("HostAddress")
  191.  
  192.     set oPort   = CreateObject("Port.Port.1")
  193.     set oMaster = CreateObject("PrintMaster.PrintMaster.1")
  194.  
  195.     oPort.ServerName = oParamDict.Item("ServerName")
  196.     oPort.PortName   = oParamDict.Item("PortName")
  197.     PortType         = oParamDict.Item("PortType")
  198.  
  199.     '
  200.     ' Update the port object with the settings corresponding
  201.     ' to the port type of the port to be added
  202.     '
  203.     select case lcase(PortType)
  204.  
  205.             case "raw"
  206.                  oPort.PortType    = kTcpRaw
  207.                  oPort.HostAddress = oParamDict.Item("HostAddress")
  208.                  oPort.PortNumber  = oParamDict.Item("PortNumber")
  209.  
  210.                  if oParamDict.Exists("SNMP") then
  211.  
  212.                      oPort.SNMP = oParamDict("SNMP")
  213.  
  214.                  end if
  215.  
  216.                  if oParamDict.Exists("SNMPDeviceIndex") then
  217.  
  218.                      oPort.SNMPDeviceIndex = oParamDict.Item("SNMPDeviceIndex")
  219.  
  220.                  end if
  221.  
  222.                  if oParamDict.Exists("CommunityName") then
  223.  
  224.                          oPort.CommunityName = oParamDict.Item("CommunityName")
  225.  
  226.                  end if
  227.  
  228.             case "lpr"
  229.                  oPort.PortType    = kTcpLpr
  230.                  oPort.HostAddress = oParamDict.Item("HostAddress")
  231.                  oPort.QueueName   = oParamDict.Item("QueueName")
  232.  
  233.                  if oParamDict.Exists("SNMP") then
  234.  
  235.                      oPort.SNMP = oParamDict("SNMP")
  236.  
  237.                  end if
  238.  
  239.                  if oParamDict.Exists("SNMPDeviceIndex") then
  240.  
  241.                      oPort.SNMPDeviceIndex = oParamDict.Item("SNMPDeviceIndex")
  242.  
  243.                  end if
  244.  
  245.                  if oParamDict.Exists("CommunityName") then
  246.  
  247.                          oPort.CommunityName = oParamDict.Item("CommunityName")
  248.  
  249.                  end if
  250.  
  251.                  oPort.DoubleSpool = oParamDict.Item("DoubleSpool")
  252.  
  253.             case "local"
  254.                  oPort.PortType = kLocal
  255.  
  256.             case "localdownlevel"
  257.                  oPort.PortType = kLocalDownLevel
  258.  
  259.             case else
  260.                  wscript.echo "Unable to add port, error: invalid port type """ & PortType & """ "
  261.                  exit function
  262.     end select
  263.  
  264.     '
  265.     ' Try adding the port
  266.     '
  267.     oMaster.PortAdd oPort
  268.  
  269.     if Err.Number = kErrorSuccess then
  270.  
  271.         wscript.echo "Success: Adding port """ & oPort.PortName & """ "
  272.  
  273.         iResult = kErrorSuccess
  274.  
  275.     else
  276.  
  277.         wscript.echo "Error: Adding port """ & oPort.PortName & """, error: 0x" _
  278.                      & Hex(Err.Number) & ". " & Err.Description
  279.  
  280.         iResult = kErrorFailure
  281.  
  282.     end if
  283.  
  284.     AddPort = iResult
  285.  
  286. end function
  287.  
  288. '
  289. ' List ports on a machine.
  290. '
  291. function ListPorts(strServer)
  292.  
  293.     on error resume next
  294.  
  295.     DebugPrint kDebugTrace, "In ListPorts"
  296.  
  297.     dim oMaster
  298.     dim oPort
  299.     dim oError
  300.     dim iResult
  301.  
  302.     set oMaster = CreateObject("PrintMaster.PrintMaster.1")
  303.  
  304.     for each oPort in oMaster.Ports(strServer)
  305.  
  306.         if Err = kErrorSuccess then
  307.  
  308.             wscript.echo ""
  309.  
  310.             wscript.echo "ServerName   " & oPort.ServerName
  311.  
  312.             wscript.echo "PortName     " & oPort.PortName
  313.  
  314.             '
  315.             ' HPdlc and lpr mon ports don't have a MonitorName or Description set
  316.             '
  317.             if oPort.MonitorName <> "" then
  318.  
  319.                 wscript.echo "MonitorName  " & oPort.MonitorName
  320.  
  321.             end if
  322.  
  323.             if oPort.Description <> "" then
  324.  
  325.                 wscript.echo "Description  " & oPort.Description
  326.  
  327.             end if
  328.  
  329.             if oPort.PortType = kLprMon or oPort.PortType = kHPdlc then
  330.  
  331.                 wscript.echo "HostAddress  " & oPort.HostAddress
  332.  
  333.                 wscript.echo "Queue        " & oPort.QueueName
  334.  
  335.                 wscript.echo "PortType     " & Description(oPort.PortType)
  336.  
  337.             end if
  338.  
  339.             if oPort.Description = kStdTCPIP then
  340.  
  341.                 wscript.echo "Getting extended information about the TCP port"
  342.  
  343.                 iResult = GetPort(strServer, oPort.PortName)
  344.  
  345.             end if
  346.  
  347.         else
  348.  
  349.             wscript.echo "Unable to list ports, error: 0x" & Hex(Err.Number) _
  350.                          & ". " & Err.Description
  351.  
  352.             ListPorts = kErrorFailure
  353.  
  354.             exit function
  355.  
  356.         end if
  357.  
  358.     next
  359.  
  360.     wscript.echo "Success: Lising ports"
  361.  
  362.     ListPorts = kErrorSuccess
  363.  
  364. end function
  365.  
  366. '
  367. ' Gets the configuration of a port
  368. '
  369. function GetPort(strServerName, strPortName)
  370.  
  371.     on error resume next
  372.  
  373.     DebugPrint kDebugTrace, "In GetPort"
  374.  
  375.     dim oPort
  376.     dim oMaster
  377.     dim iResult
  378.  
  379.     set oPort   = CreateObject("Port.Port.1")
  380.     set oMaster = CreateObject("PrintMaster.PrintMaster.1")
  381.  
  382.     '
  383.     ' Get the configuration
  384.     '
  385.     oMaster.PortGet strServerName, strPortName, oPort
  386.  
  387.     if Err.Number = kErrorSuccess then
  388.  
  389.         wscript.echo "PortName     " & strPortName
  390.  
  391.         wscript.echo "PortType     " & Description(oPort.PortType)
  392.  
  393.         wscript.echo "Host         " & oPort.HostAddress
  394.  
  395.         if oPort.PortType = kTcpLpr or oPort.PortType = kLprMon then
  396.  
  397.             wscript.echo "QueueName    " & oPort.QueueName
  398.  
  399.         end if
  400.  
  401.         if oPort.PortType=kTcpRaw then
  402.  
  403.             wscript.echo "PortNumber   " & CStr(oPort.PortNumber)
  404.  
  405.         end if
  406.  
  407.         if oPort.PortType = kTcpRaw or oPort.PortType = kTcpLpr then
  408.  
  409.             if oPort.SNMP then
  410.  
  411.                 wscript.echo "SNMP         Enabled"
  412.  
  413.                 wscript.echo "SNMP Index   " & CStr(oPort.SNMPDeviceIndex)
  414.  
  415.                 wscript.echo "Community    " & oPort.CommunityName
  416.  
  417.             else
  418.  
  419.                 wscript.echo "SNMP         Disabled"
  420.  
  421.             end if
  422.  
  423.         end if
  424.  
  425.         if oPort.PortType = kTcpLpr then
  426.  
  427.             if oPort.DoubleSpool then
  428.  
  429.                 wscript.echo     "Byte count   Enabled"
  430.  
  431.             else
  432.  
  433.                 wscript.echo     "Byte count   Disabled"
  434.  
  435.             end if
  436.  
  437.         end if
  438.  
  439.         iResult = kErrorSuccess
  440.  
  441.     else
  442.  
  443.         wscript.echo "Unable to get port configuration, error: 0x" & _
  444.                      Hex(Err.Number) & ". " & Err.Description
  445.  
  446.         Err.Clear
  447.  
  448.         iResult = kErrorFailure
  449.  
  450.     end if
  451.  
  452.     GetPort = iResult
  453.  
  454. end function
  455.  
  456. '
  457. ' Set the configuration of a port
  458. '
  459. function SetPort(oParamDict)
  460.  
  461.     on error resume next
  462.  
  463.     dim oPort
  464.     dim oMaster
  465.     dim iResult
  466.  
  467.     set oPort   = CreateObject("Port.Port.1")
  468.     set oMaster = CreateObject("PrintMaster.PrintMaster.1")
  469.  
  470.     '
  471.     ' Get the configuration of the port
  472.     '
  473.     oMaster.PortGet oParamDict.Item("ServerName"), oParamDict.Item("PortName"), oPort
  474.  
  475.     if Err.Number <> kErrorSuccess then
  476.  
  477.         wscript.echo "Unable to get port configuration, error: 0x" & Hex(Err.Number) _
  478.                      & " " & Err.Description
  479.  
  480.         iResult = kErrorFailure
  481.  
  482.         exit function
  483.  
  484.     end if
  485.  
  486.     '
  487.     ' Update the oPort object with the settings specified by the user
  488.     '
  489.     if oParamDict.Item("PortType") = "raw" then
  490.  
  491.         oPort.PortType = kTcpRaw
  492.  
  493.     elseif oParamDict.Item("PortType") = "lpr" then
  494.  
  495.         oPort.PortType = kTcpLpr
  496.  
  497.     end if
  498.  
  499.     oPort.HostAddress = oParamDict.Item("HostAddress")
  500.  
  501.     oPort.PortNumber  = oParamDict.Item("PortNumber")
  502.  
  503.     if oParamDict.Exists("QueueName") then
  504.  
  505.         oPort.QueueName = oParamDict.Item("QueueName")
  506.  
  507.     end if
  508.  
  509.     if oParamDict.Exists("SNMP") then
  510.  
  511.         oPort.SNMP = oParamDict.Item("SNMP")
  512.  
  513.     end if
  514.  
  515.     oPort.SNMPDeviceIndex = oParamDict.Item("SNMPDeviceIndex")
  516.  
  517.     if oParamDict.Exists("CommunityName") then
  518.  
  519.         oPort.CommunityName = oParamDict.Item("CommunityName")
  520.  
  521.     end if
  522.  
  523.     if oParamDict.Exists("DoubleSpool") then
  524.  
  525.         oPort.DoubleSpool = oParamDict.Item("DoubleSpool")
  526.  
  527.     end if
  528.  
  529.     '
  530.     ' Set the port
  531.     '
  532.     oMaster.PortSet oPort
  533.  
  534.     if Err.Number = kErrorSuccess then
  535.  
  536.         wscript.echo "Success: Updating port " & oPort.PortName
  537.  
  538.         iResult = kErrorSuccess
  539.  
  540.     else
  541.  
  542.         wscript.echo "Unable to update port settings , error: 0x" & _
  543.                      Hex(Err.Number) & ". " & Err.Description
  544.  
  545.         iResult = kErrorFailure
  546.  
  547.     end if
  548.  
  549.     SetPort = iResult
  550.  
  551. end function
  552.  
  553. '
  554. ' Get a string description for a port type
  555. '
  556. function Description(value)
  557.  
  558.     on error resume next
  559.  
  560.     select case value
  561.  
  562.            case kTcpRaw
  563.  
  564.                 Description = "TCP RAW"
  565.  
  566.            case kTcpLpr
  567.  
  568.                 Description = "TCP LPR"
  569.  
  570.            case kLocal
  571.  
  572.                 Description = "Standard Local"
  573.  
  574.            case kLocalDownLevel
  575.  
  576.                 Description = "Standard Local Down Level"
  577.  
  578.            case kLprMon
  579.  
  580.                 Description = "LPR Mon"
  581.  
  582.            case kHPdlc
  583.  
  584.                 Description = "HP DLC"
  585.  
  586.            case kUnknown
  587.  
  588.                 Description = "Unknown Port"
  589.  
  590.            case Else
  591.  
  592.                 Description = "Invalid PortType"
  593.  
  594.     end select
  595.  
  596. end function
  597.  
  598. '
  599. ' Debug display helper function
  600. '
  601. sub DebugPrint(uFlags, strString)
  602.  
  603.     if gDebugFlag = true then
  604.  
  605.         if uFlags = kDebugTrace then
  606.  
  607.             wscript.echo "Debug: " & strString
  608.  
  609.         end if
  610.  
  611.         if uFlags = kDebugError then
  612.  
  613.             if Err <> 0 then
  614.  
  615.                 wscript.echo "Debug: " & strString & " Failed with " & Hex(Err)
  616.  
  617.             end if
  618.  
  619.         end if
  620.  
  621.     end if
  622.  
  623. end sub
  624.  
  625. '
  626. ' Parse the command line into its components
  627. '
  628. function ParseCommandLine(iAction, oParamDict)
  629.  
  630.     on error resume next
  631.  
  632.     DebugPrint kDebugTrace, "In ParseCommandLine"
  633.  
  634.     dim oArgs
  635.     dim iIndex
  636.  
  637.     iAction = kActionUnknown
  638.  
  639.     set oArgs = Wscript.Arguments
  640.  
  641.     while iIndex < oArgs.Count
  642.  
  643.         select case oArgs(iIndex)
  644.  
  645.             case "-g"
  646.                 iAction = kActionGet
  647.  
  648.             case "-s"
  649.                 iAction = kActionSet
  650.  
  651.             case "-a"
  652.                 iAction = kActionAdd
  653.  
  654.             case "-d"
  655.                 iAction = kActionDelete
  656.  
  657.             case "-l"
  658.                 iAction = kActionList
  659.  
  660.             case "-2e"
  661.                 oParamDict.Add "DoubleSpool", true
  662.  
  663.             case "-2d"
  664.                 oParamDict.Add "DoubleSpool", false
  665.  
  666.             case "-c"
  667.                 iIndex = iIndex + 1
  668.                 oParamDict.Add "ServerName", oArgs(iIndex)
  669.  
  670.             case "-n"
  671.                 iIndex = iIndex + 1
  672.                 oParamDict.Add "PortNumber", oArgs(iIndex)
  673.  
  674.             case "-p"
  675.                 iIndex = iIndex + 1
  676.                 oParamDict.Add "PortName", oArgs(iIndex)
  677.  
  678.             case "-t"
  679.                 iIndex = iIndex + 1
  680.                 oParamDict.Add "PortType", oArgs(iIndex)
  681.  
  682.             case "-h"
  683.                 iIndex = iIndex + 1
  684.                 oParamDict.Add "HostAddress", oArgs(iIndex)
  685.  
  686.             case "-q"
  687.                 iIndex = iIndex + 1
  688.                 oParamDict.Add "QueueName", oArgs(iIndex)
  689.  
  690.             case "-i"
  691.                 iIndex = iIndex + 1
  692.                 oParamDict.Add "SNMPDeviceIndex", oArgs(iIndex)
  693.  
  694.             case "-y"
  695.                 iIndex = iIndex + 1
  696.                 oParamDict.Add "CommunityName", oArgs(iIndex)
  697.  
  698.             case "-me"
  699.                 oParamDict.Add "SNMP", true
  700.  
  701.             case "-md"
  702.                 oParamDict.Add "SNMP", false
  703.  
  704.             case "-?"
  705.                 Usage(True)
  706.                 exit function
  707.  
  708.             case else
  709.                 Usage(True)
  710.                 exit function
  711.  
  712.         end select
  713.  
  714.         iIndex = iIndex + 1
  715.  
  716.     wend
  717.  
  718.     if Err = kErrorSuccess then
  719.  
  720.         ParseCommandLine = kErrorSuccess
  721.  
  722.     else
  723.  
  724.         wscript.echo "Unable to parse command line, error 0x" _
  725.                      & Hex(Err.Number) & ". " & Err.Description
  726.  
  727.         ParseCommandLine = kErrorFailure
  728.  
  729.     end if
  730.  
  731. end  function
  732.  
  733. '
  734. ' Display command usage.
  735. '
  736. sub Usage(bExit)
  737.  
  738.     wscript.echo "Usage: portmgr [-adlgs?] [-p port] [-c server] [-n number]"
  739.     wscript.echo "               [-t raw|lpr|local] [-h host address] [-q queue]"
  740.     wscript.echo "               [-me | -md ] [-i SNMP index] [-y community] [-2e | -2d]"
  741.     wscript.echo "Arguments:"
  742.     wscript.echo "-a     - add a port"
  743.     wscript.echo "-d     - delete the specified port"
  744.     wscript.echo "-l     - list all ports"
  745.     wscript.echo "-g     - get configuration for a TCP port"
  746.     wscript.echo "-s     - set configuration for a TCP port"
  747.     wscript.echo "-p     - port name"
  748.     wscript.echo "-c     - server name"
  749.     wscript.echo "-n     - port number, applies to TCP RAW ports"
  750.     wscript.echo "-t     - port type"
  751.     wscript.echo "-h     - IP address of the device"
  752.     wscript.echo "-q     - queue name, applies to TCP LPR ports"
  753.     wscript.echo "-m     - SNMP type. [e] enalbe, [d] diable"
  754.     wscript.echo "-i     - SNMP index, if SNMP is enabled"
  755.     wscript.echo "-y     - community name, if SNMP is enabled"
  756.     wscript.echo "-2     - double spool, applies to TCP LPR ports.[e] enalbe, [d] disable"
  757.     wscript.echo "-?     - display command usage"
  758.     wscript.echo ""
  759.     wscript.echo "Examples:"
  760.     wscript.echo "portmgr -l -c \\server"
  761.     wscript.echo "portmgr -d -c \\server -p c:\temp\foo.prn"
  762.     wscript.echo "portmgr -a -c \\server -p test -t local"
  763.     wscript.echo "portmgr -a -c \\server -p IP_1.2.3.4 -h 1.2.3.4 -t raw -n 9100"
  764.     wscript.echo "portmgr -s -c \\server -p IP_1.2.3.4 -me -y public -i 1 -n 9100"
  765.  
  766.     if bExit then
  767.  
  768.         wscript.quit(1)
  769.  
  770.     end if
  771.  
  772. end sub
  773.  
  774. '
  775. ' Determines which program is used to run this script. 
  776. ' Returns true if the script host is cscript.exe
  777. '
  778. function IsHostCscript()
  779.  
  780.     on error resume next
  781.     
  782.     dim strFullName 
  783.     dim strCommand 
  784.     dim i, j 
  785.     dim bReturn
  786.     
  787.     bReturn = false
  788.     
  789.     strFullName = WScript.FullName
  790.     
  791.     i = InStr(1, strFullName, ".exe", 1)
  792.     
  793.     if i <> 0 then
  794.         
  795.         j = InStrRev(strFullName, "\", i, 1)
  796.         
  797.         if j <> 0 then
  798.             
  799.             strCommand = Mid(strFullName, j+1, i-j-1)
  800.             
  801.             if LCase(strCommand) = "cscript" then
  802.             
  803.                 bReturn = true  
  804.             
  805.             end if    
  806.                 
  807.         end if
  808.         
  809.     end if
  810.     
  811.     if Err <> 0 then
  812.     
  813.         call wscript.echo("Error 0x" & hex(Err.Number) & " occurred. " & Err.Description _
  814.                           & ". " & vbCRLF & "The scripting host could not be determined.")       
  815.         
  816.     end if
  817.     
  818.     IsHostCscript = bReturn
  819.  
  820. end function
  821.  
  822.