home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / WindowsServerTrial / server.iso / sources / install.wim / 5 / Windows / System32 / winrm.vbs < prev    next >
Text File  |  2008-01-05  |  195KB  |  4,031 lines

  1. '
  2. ' Copyright (c) Microsoft Corporation.  All rights reserved.
  3. '
  4. ' VBScript Source File
  5. '
  6. ' Script Name: winrm.vbs
  7. '
  8.  
  9. Option Explicit
  10.  
  11. '''''''''''''''''''''
  12. ' Error codes
  13. private const ERR_OK              = 0
  14. private const ERR_GENERAL_FAILURE = 1
  15.  
  16. '''''''''''''''''''''
  17. ' Messages
  18. private const L_ONLYCSCRIPT_Message     = "Can be executed only by cscript.exe."
  19. private const L_UNKOPNM_Message         = "Unknown operation name: "
  20. private const L_OP_Message              = "Operation - "
  21. private const L_NOFILE_Message          = "File does not exist: "
  22. private const L_PARZERO_Message         = "Parameter is zero length #"
  23. private const L_INVOPT_ErrorMessage     = "Switch not allowed with the given operation: "
  24. private const L_UNKOPT_ErrorMessage     = "Unknown switch: "
  25. private const L_BLANKOPT_ErrorMessage   = "Missing switch name"
  26. private const L_UNKOPT_GenMessage       = "Invalid use of command line. Type ""winrm -?"" for help."
  27. private const L_HELP_GenMessage         = "Type ""winrm -?"" for help."
  28. private const L_ScriptNameNotFound_ErrorMessage = "Invalid usage of command line; winrm.vbs not found in command string."
  29. private const L_ImproperUseOfQuotes_ErrorMessage = "A quoted parameter value must begin and end with quotes: "
  30. private const L_BADMATCNT1_Message      = "Unexpected match count - one match is expected: "
  31. private const L_OPTNOTUNQ_Message       = "Option is not unique: "
  32. private const L_URIMISSING_Message      = "URI is missing"
  33. private const L_ACTIONMISSING_Message   = "Action is missing"
  34. private const L_URIZERO_Message         = "URI is 0 length"    
  35. private const L_URIZEROTOK_Message      = "Invalid URI, token is 0 length"    
  36. private const L_INVWMIURI1_Message      = "Invalid WMI resource URI - no '/' found  (at least 2 expected)"
  37. private const L_INVWMIURI2_Message      = "Invalid WMI resource URI - only one '/' found (at least 2 expected)"
  38. private const L_NOLASTTOK_Message       = "Invalid URI - cannot locate last token for root node name"
  39. private const L_HashSyntax_ErrorMessage = "Syntax Error: input must be of the form {KEY=""VALUE""[;KEY=""VALUE""]}"
  40. private const L_ARGNOVAL_Message        = "Argument's value is not provided: "
  41. private const L_XMLERROR_Message        = "Unable to parse XML: "
  42. private const L_XSLERROR_Message        = "Unable to parse XSL file. Either it is inaccessible or invalid: "
  43. private const L_MSXML3MISSING_Message   = "Unable to load MSXML3, required by -format option and for set using ""@{...}"""
  44. private const L_FORMATLERROR_Message    = "Invalid option for -format: "
  45. private const L_FORMATFAILED_Message    = "Unable to reformat message. Raw, unformatted, message: "
  46. private const L_PUT_PARAM_NOMATCH_Message = "Parameter name does not match any properties on resource: "
  47. private const L_PUT_PARAM_MULTIMATCH_Message = "Parameter matches more than one property on resource: "
  48. private const L_PUT_PARAM_NOARRAY_Message = "Multiple matching parameter names not allowedin @{...}: "
  49. private const L_PUT_PARAM_NOTATTR_Message = "Parameter matches a non-text property on resource: "
  50. private const L_PUT_PARAM_EMPTY_Message = "Parameter set is empty."
  51. private const L_OPTIONS_PARAMETER_EMPTY_Message = "Options parameter has no value or is malformed."
  52. private const L_RESOURCELOCATOR_Message = "Unable to create ResourceLocator object."
  53. private const L_PUT_PARAM_NOINPUT_Message = "No input provided through ""@{...}"" or ""-file:"" commandline parameters."
  54. private const L_ERR_Message = "Error: "
  55. private const L_ERRNO_Message = "Error number: "
  56. private const L_OpDoesntAcceptInput_ErrorMessage = "Input was supplied to an operation that does not accept input."
  57. private const L_QuickConfigNoChangesNeeded_Message = "WinRM already is set up for remote management on this machine."
  58. private const L_QuickConfig_MissingUpdateXml_0_ErrorMessage = "Could not find update instructions in analysis result."
  59. private const L_QuickConfigUpdated_Message = "WinRM has been updated for remote management."
  60. private const L_QuickConfigUpdateFailed_ErrorMessage = "One or more update steps could not be completed."
  61. private const L_QuickConfig_InvalidBool_0_ErrorMessage = "Could not determine if remoting is enabled."
  62. private const L_QuickConfig_UpdatesNeeded_0_Message = "WinRM is not set up to allow remote access to this machine for management."
  63. private const L_QuickConfig_UpdatesNeeded_1_Message = "The following changes must be made:"
  64. private const L_QuickConfig_Prompt_0_Message = "Make these changes [y/n]? "
  65.  
  66.  
  67. '''''''''''''''''''''
  68. ' HELP - GENERAL
  69. private const L_Help_Title_0_Message = "Windows Remote Management Command Line Tool"
  70.  
  71. private const L_Help_Blank_0_Message = ""
  72.  
  73. private const L_Help_SeeAlso_Title_Message    = "See also:"
  74. private const X_Help_SeeAlso_Aliases_Message  = "  winrm help aliases"
  75. private const X_Help_SeeAlso_Config_Message   = "  winrm help config"
  76. private const X_Help_SeeAlso_UriSecurity_Message  = "  winrm help urisecurity"
  77. private const X_Help_SeeAlso_CertMapping_Message  = "  winrm help certmapping"
  78. private const X_Help_SeeAlso_CustomRemoteShell_Message    = "  winrm help customremoteshell"
  79. private const X_Help_SeeAlso_Input_Message    = "  winrm help input"
  80. private const X_Help_SeeAlso_Filters_Message  = "  winrm help filters"
  81. private const X_Help_SeeAlso_Switches_Message = "  winrm help switches"
  82. private const X_Help_SeeAlso_Uris_Message     = "  winrm help uris"
  83. private const X_Help_SeeAlso_Set_Message      = "  winrm set -?"
  84. private const X_Help_SeeAlso_Create_Message   = "  winrm create -?"
  85. private const X_Help_SeeAlso_Enumerate_Message   = "  winrm enumerate -?"
  86. private const X_Help_SeeAlso_Invoke_Message   = "  winrm invoke -?"
  87. private const X_Help_SeeAlso_Remoting_Message = "  winrm help remoting"
  88. private const X_Help_SeeAlso_configSDDL_Message = "  winrm configsddl -?"
  89. private const X_Help_SeeAlso_createSDDL_Message = "  winrm createsddl -?"
  90.  
  91.  
  92. '''''''''''''''''''''
  93. ' HELP - HELP
  94. private const L_HelpHelp_000_0_Message = "Windows Remote Management (WinRM) is the Microsoft implementation of "
  95. private const L_HelpHelp_001_0_Message = "the WS-Management protocol which provides a secure way to communicate "
  96. private const L_HelpHelp_001_1_Message = "with local and remote computers using web services.  "
  97. private const L_HelpHelp_002_0_Message = ""
  98. private const L_HelpHelp_003_0_Message = "Usage:"
  99. private const L_HelpHelp_004_0_Message = "  winrm OPERATION RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  100. private const L_HelpHelp_005_0_Message = "        [@{KEY=VALUE[;KEY=VALUE]...}]"
  101. private const L_HelpHelp_007_0_Message = ""
  102. private const L_HelpHelp_008_0_Message = "For help on a specific operation:"
  103. private const L_HelpHelp_009_0_Message = "  winrm g[et] -?        Retrieving management information."
  104. private const L_HelpHelp_010_0_Message = "  winrm s[et] -?        Modifying management information."
  105. private const L_HelpHelp_011_0_Message = "  winrm c[reate] -?     Creating new instances of management resources."
  106. private const L_HelpHelp_012_0_Message = "  winrm d[elete] -?     Remove an instance of a management resource."
  107. private const L_HelpHelp_013_0_Message = "  winrm e[numerate] -?  List all instances of a management resource."
  108. private const L_HelpHelp_014_0_Message = "  winrm i[nvoke] -?     Executes a method on a management resource."
  109. private const L_HelpHelp_015_0_Message = "  winrm id[entify] -?   Determines if a WS-Management implementation is"
  110. private const L_HelpHelp_015_1_Message = "                        running on the remote machine."
  111. private const L_HelpHelp_016_0_Message = "  winrm quickconfig -?  Configures this machine to accept WS-Management"
  112. private const L_HelpHelp_016_1_Message = "                        requests from other machines."
  113. private const L_HelpHelp_016_2_Message = "  winrm createSDDL -?   Creates a security descriptor for a URI."
  114. private const L_HelpHelp_016_3_Message = "  winrm configSDDL -?   Modify an existing security descriptor for a URI."
  115. private const L_HelpHelp_016_4_Message = "  winrm helpmsg -?      Displays error message for the error code."
  116. private const L_HelpHelp_017_0_Message = ""
  117. private const L_HelpHelp_018_0_Message = "For help on related topics:"
  118. private const L_HelpHelp_019_0_Message = "  winrm help uris       How to construct resource URIs."
  119. private const L_HelpHelp_020_0_Message = "  winrm help aliases    Abbreviations for URIs."
  120. private const L_HelpHelp_021_0_Message = "  winrm help config     Configuring WinRM client and service settings."
  121. private const L_HelpHelp_021_1_Message = "  winrm help urisecurity Configuring security for remote access."
  122. private const L_HelpHelp_021_2_Message = "  winrm help certmapping Configuring client certificate access."
  123. private const L_HelpHelp_021_3_Message = "  winrm help customremoteshell     Configures a shell executable and"
  124. private const L_HelpHelp_021_4_Message = "                        arguments corresponding to a shell URI."
  125. private const L_HelpHelp_022_0_Message = "  winrm help remoting   How to access remote machines."
  126. private const L_HelpHelp_023_0_Message = "  winrm help auth       Providing credentials for remote access."
  127. private const L_HelpHelp_024_0_Message = "  winrm help input      Providing input to create, set, and invoke."
  128. private const L_HelpHelp_025_0_Message = "  winrm help switches   Other switches such as formatting, options, etc."
  129.  
  130. '''''''''''''''''''''
  131. ' HELP - GET
  132. private const L_HelpGet_000_0_Message = "winrm get RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  133. private const L_HelpGet_001_0_Message = ""
  134. private const L_HelpGet_002_0_Message = "Retrieves instances of RESOURCE_URI using specified "
  135. private const L_HelpGet_003_0_Message = "options and key-value pairs."
  136. private const L_HelpGet_004_0_Message = ""
  137. private const L_HelpGet_005_0_Message = "Example: Retrieve current configuration in XML format:"
  138. private const X_HelpGet_006_0_Message = "  winrm get winrm/config -format:pretty"
  139. private const L_HelpGet_007_0_Message = ""
  140. private const L_HelpGet_008_0_Message = "Example: Retrieve spooler instance of Win32_Service class:"
  141. private const X_HelpGet_009_0_Message = "  winrm get wmicimv2/Win32_Service?Name=spooler"
  142. private const L_HelpGet_010_0_Message = ""
  143. private const L_HelpGet_011_0_Message = "Example: Retrieve a urisecurity entry on this machine:"
  144. private const X_HelpGet_012_0_Message = "  winrm get winrm/config/service/urisecurity?URI=wmicimv2/*"
  145. private const L_HelpGet_013_0_Message = ""
  146. private const L_HelpGet_014_0_Message = "Example: Retrieve a certmapping entry on this machine:"
  147. private const X_HelpGet_015_0_Message = "  winrm get winrm/config/service/certmapping?Issuer=1212131238d84023982e381f20391a2935301923+Subject=*.example.com+URI=wmicimv2/*"
  148. private const L_HelpGet_016_0_Message = ""
  149. private const L_HelpGet_017_0_Message = "Example: Retrieve a CustomRemoteShell entry on this machine:"
  150. private const X_HelpGet_018_0_Message = "  winrm get winrm/config/winrs/customremoteshell?URI=shell/Microsoft.Powershell"
  151. private const L_HelpGet_019_0_Message = ""
  152.  
  153. '''''''''''''''''''''
  154. ' HELP - SET
  155. private const L_HelpSet_001_0_Message = "winrm set RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  156. private const L_HelpSet_002_0_Message = "          [@{KEY=""VALUE""[;KEY=""VALUE""]}]"
  157. private const L_HelpSet_003_0_Message = "          [-file:VALUE]"
  158. private const L_HelpSet_004_0_Message = ""
  159. private const L_HelpSet_005_0_Message = "Modifies settings in RESOURCE_URI using specified switches"
  160. private const L_HelpSet_006_0_Message = "and input of changed values via key-value pairs or updated "
  161. private const L_HelpSet_007_0_Message = "object via an input file."
  162. private const L_HelpSet_008_0_Message = ""
  163. private const L_HelpSet_009_0_Message = "Example: Modify a configuration property of WinRM:"
  164. private const X_HelpSet_010_0_Message = "  winrm set winrm/config @{MaxEnvelopeSizekb=""100""}"
  165. private const L_HelpSet_011_0_Message = ""
  166. private const L_HelpSet_012_0_Message = "Example: Disable a listener on this machine:"
  167. private const X_HelpSet_013_0_Message = "  winrm set winrm/config/Listener?Address=*+Transport=HTTPS @{Enabled=""false""}"
  168. private const L_HelpSet_014_0_Message = ""
  169. private const L_HelpSet_015_0_Message = "Example: Disable a urisecurity entry on this machine:"
  170. private const X_HelpSet_016_0_Message = "  winrm set winrm/config/service/urisecurity?URI=wmicimv2/* @{Enabled=""false""}"
  171. private const L_HelpSet_017_0_Message = ""
  172. private const L_HelpSet_018_0_Message = "Example: Disable a certmapping entry on this machine:"
  173. private const X_HelpSet_019_0_Message = "  Winrm set winrm/config/service/certmapping?Issuer=1212131238d84023982e381f20391a2935301923+Subject=*.example.com+URI=wmicimv2/* @{Enabled=""false""}"
  174. private const L_HelpSet_020_0_Message = ""
  175. private const L_HelpSet_021_0_Message = "Example: Change a CustomRemoteShell entry on this machine:"
  176. private const X_HelpSet_022_0_Message = "  winrm set winrm/config/winrs/customremoteshell?URI=shell/Microsoft.Powershell @{Arguments=""-newPowerShellArgs""}"
  177.  
  178. '''''''''''''''''''''
  179. ' HELP - CREATE
  180. private const L_HelpCreate_001_0_Message = "winrm create RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  181. private const L_HelpCreate_002_0_Message = "             [@{KEY=""VALUE""[;KEY=""VALUE""]}]"
  182. private const L_HelpCreate_003_0_Message = "             [-file:VALUE]"
  183. private const L_HelpCreate_004_0_Message = ""
  184. private const L_HelpCreate_005_0_Message = "Spawns an instance of RESOURCE_URI using specified "
  185. private const L_HelpCreate_006_0_Message = "key-value pairs or input file."
  186. private const L_HelpCreate_007_0_Message = ""
  187. private const L_HelpCreate_008_0_Message = "Example: Create instance of HTTP Listener on IPv6 address:"
  188. private const X_HelpCreate_009_0_Message = "  winrm create winrm/config/Listener?Address=IP:3ffe:8311:ffff:f2c1::5e61+Transport=HTTP"
  189. private const L_HelpCreate_010_0_Message = ""
  190. private const L_HelpCreate_011_0_Message = "Example: Create instance of HTTPS Listener on all IPs:"
  191. private const X_HelpCreate_012_0_Message = "  winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""HOST"";CertificateThumbprint=""XXXXXXXXXX""}"
  192. private const L_HelpCreate_013_0_Message = "Note: XXXXXXXXXX represents a 40-digit hex string; see help config."
  193. private const L_HelpCreate_014_0_Message = ""
  194. private const L_HelpCreate_015_0_Message = "Example: Create a windows shell command instance from xml:"
  195. private const X_HelpCreate_016_0_Message = "  winrm create shell/cmd -file:shell.xml -remote:srv.corp.com"
  196. private const L_HelpCreate_017_0_Message = ""
  197. private const L_HelpCreate_018_0_Message = "Example: Create a urisecurity setting entry:"
  198. private const X_HelpCreate_019_0_Message = "  winrm create winrm/config/service/urisecurity?uri=customuri @{SDDL=""customSDDL"";enabled=""true""}"
  199. private const L_HelpCreate_020_0_Message = "  NOTE: customSDDL represents a valid SDDL string ."
  200. private const L_HelpCreate_021_0_Message = ""
  201. private const L_HelpCreate_022_0_Message = "Example: Create a CertMapping entry:"
  202. private const X_HelpCreate_023_0_Message = "  winrm create winrm/config/service/certmapping?Issuer=1212131238d84023982e381f20391a2935301923+Subject=*.example.com+URI=wmicimv2/* @{UserName=""USERNAME"",Password=""PASSWORD""} -remote:localhost"
  203. private const L_HelpCreate_024_0_Message = ""
  204. private const L_HelpCreate_025_0_Message = "Example: Create a CustomRemoteShell entry:"
  205. private const X_HelpCreate_026_0_Message = "  winrm create winrm/config/winrs/customremoteshell?uri=shell/Microsoft.Powershell @{Shell=""%windir%\system32\windowspowershell\v1.0\PowerShell.exe"";Arguments=""-s -nologo""}"
  206.  
  207.  
  208. '''''''''''''''''''''
  209. ' HELP - DELETE
  210. private const L_HelpDelete_001_0_Message = "winrm delete RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  211. private const L_HelpDelete_002_0_Message = ""
  212. private const L_HelpDelete_003_0_Message = "Removes an instance of RESOURCE_URI."
  213. private const L_HelpDelete_004_0_Message = ""
  214. private const L_HelpDelete_005_0_Message = "Example: delete the HTTP listener on this machine for given IP address:"
  215. private const X_HelpDelete_006_0_Message = "  winrm delete winrm/config/Listener?Address=IP:192.168.2.1+Transport=HTTP"
  216. private const L_HelpDelete_007_0_Message = ""
  217. private const L_HelpDelete_008_0_Message = "Example: delete a certmapping entry:"
  218. private const X_HelpDelete_009_0_Message = "  winrm delete winrm/config/service/certmapping?Issuer=1212131238d84023982e381f20391a2935301923+Subject=*.example.com+URI=wmicimv2/*"
  219. private const L_HelpDelete_010_0_Message = ""
  220. private const L_HelpDelete_011_0_Message = "Example: delete a urisecurity entry:"
  221. private const X_HelpDelete_012_0_Message = "  winrm delete winrm/config/service/urisecurity?uri= shell/cmd"
  222. private const L_HelpDelete_013_0_Message = ""
  223. private const L_HelpDelete_014_0_Message = "Example: delete a CustomRemoteShell entry:"
  224. private const X_HelpDelete_015_0_Message = "  winrm delete winrm/config/winrs/customremoteshell?uri=shell/Microsoft.Powershell"
  225.  
  226. '''''''''''''''''''''
  227. ' HELP - ENUMERATE
  228. private const L_HelpEnum_001_0_Message = "winrm enumerate RESOURCE_URI [-ReturnType:Value] [-Shallow]" 
  229. private const L_HelpEnum_001_1_Message = "         [-BasePropertiesOnly] [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  230. private const L_HelpEnum_002_0_Message = ""
  231. private const L_HelpEnum_003_0_Message = "Lists instances of RESOURCE_URI."
  232. private const L_HelpEnum_004_0_Message = "Can limit the instances returned by using a filter and dialect if the "
  233. private const L_HelpEnum_005_0_Message = "resource supports these."
  234. private const L_HelpEnum_006_0_Message = ""
  235. private const L_HelpEnum_006_1_Message = "ReturnType"
  236. private const L_HelpEnum_006_2_Message = "----------"
  237. private const L_HelpEnum_006_3_Message = "returnType is an optional switch that determines the type of data returned."
  238. private const L_HelpEnum_006_4_Message = "Possible options are 'Object', 'EPR'  and 'ObjectAndEPR'. Default is Object"
  239. private const L_HelpEnum_006_5_Message = "If Object is specified or if switch is omitted, then only the objects are"
  240. private const L_HelpEnum_006_6_Message = "returned."
  241. private const L_HelpEnum_006_7_Message = "If EPR is specified, then only the EPRs (End point reference) of the"
  242. private const L_HelpEnum_006_8_Message = "objects are returned. EPRs contain information about the resource URI and"
  243. private const L_HelpEnum_006_9_Message = "selectors for the instance."
  244. private const L_HelpEnum_006_10_Message = "If ObjectAndEPR is specified, then both the object and the associated EPRs"
  245. private const L_HelpEnum_006_11_Message = "are returned."
  246. private const L_HelpEnum_006_12_Message = ""
  247. private const L_HelpEnum_006_13_Message = "Shallow"
  248. private const L_HelpEnum_006_14_Message = "-------"
  249. private const L_HelpEnum_006_15_Message = "Enumerate only instances of the base class specified in the resource URI."
  250. private const L_HelpEnum_006_16_Message = "If this flag is not specified, instances of the base class specified in "
  251. private const L_HelpEnum_006_17_Message = "the resource URI and all its derived classes are returned."
  252. private const L_HelpEnum_006_18_Message = ""
  253. private const L_HelpEnum_006_19_Message = "BasePropertiesOnly"
  254. private const L_HelpEnum_006_20_Message = "------------------"
  255. private const L_HelpEnum_006_21_Message = "Includes only those properties that are part of the base class specified"
  256. private const L_HelpEnum_006_22_Message = "in the resource URI. When -Shallow is specified, this flag has no effect. "
  257. private const L_HelpEnum_006_23_Message = ""
  258. private const L_HelpEnum_007_0_Message = "Example: List all WinRM listeners on this machine:"
  259. private const X_HelpEnum_008_0_Message = "  winrm enumerate winrm/config/Listener"
  260. private const L_HelpEnum_009_0_Message = ""
  261. private const L_HelpEnum_010_0_Message = "Example: List all instances of Win32_Service class:"
  262. private const X_HelpEnum_011_0_Message = "  winrm enumerate wmicimv2/Win32_Service"
  263. private const L_HelpEnum_012_0_Message = ""
  264. 'private const L_HelpEnum_013_0_Message = "Example: List all auto start services that are stopped:"
  265. 'private const X_HelpEnum_014_0_Message = "  winrm enum wmicimv2/* -filter:""select * from win32_service where StartMode=\""Auto\"" and State = \""Stopped\"" """
  266. 'private const L_HelpEnum_015_0_Message = ""
  267. private const L_HelpEnum_016_0_Message = "Example: List all shell instances on a machine:"
  268. private const X_HelpEnum_017_0_Message = "  winrm enum shell/cmd -remote:srv.corp.com"
  269. private const L_HelpEnum_018_0_Message = ""
  270. private const L_HelpEnum_019_0_Message = "Example: List all urisecurity settings:"
  271. private const X_HelpEnum_020_0_Message = "  winrm enum winrm/config/service/urisecurity"
  272. private const L_HelpEnum_021_0_Message = ""
  273. private const L_HelpEnum_022_0_Message = "Example: List all certmapping settings:"
  274. private const X_HelpEnum_023_0_Message = "  winrm enum winrm/config/service/certmapping"
  275. private const L_HelpEnum_024_0_Message = ""
  276. private const L_HelpEnum_025_0_Message = "Example: List all CustomRemoteShell entries:"
  277. private const X_HelpEnum_026_0_Message = "  winrm enum winrm/config/winrs/customremoteshell"
  278.  
  279. '''''''''''''''''''''
  280. ' HELP - INVOKE
  281. private const L_HelpInvoke_001_0_Message = "winrm invoke ACTION RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  282. private const L_HelpInvoke_002_0_Message = "             [@{KEY=""VALUE""[;KEY=""VALUE""]}]"
  283. private const L_HelpInvoke_003_0_Message = "             [-file:VALUE]"
  284. private const L_HelpInvoke_004_0_Message = ""
  285. private const L_HelpInvoke_005_0_Message = "Executes method specified by ACTION on target object specified by RESOURCE_URI"
  286. private const L_HelpInvoke_006_0_Message = "with parameters specified by key-value pairs."
  287. private const L_HelpInvoke_007_0_Message = ""
  288. private const L_HelpInvoke_008_0_Message = "Example: Call StartService method on Spooler service:"
  289. private const X_HelpInvoke_009_0_Message = "  winrm invoke StartService wmicimv2/Win32_Service?Name=spooler"
  290. private const L_HelpInvoke_010_0_Message = ""
  291. private const L_HelpInvoke_011_0_Message = "Example: Call StopService method on Spooler service using XML file:"
  292. private const X_HelpInvoke_012_0_Message = "  winrm invoke StopService wmicimv2/Win32_Service?Name=spooler -file:input.xml"
  293. private const L_HelpInvoke_013_0_Message = "Where input.xml:"
  294. private const X_HelpInvoke_014_0_Message = "<p:StopService_INPUT xmlns:p=""http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service""/>"
  295. private const L_HelpInvoke_015_0_Message = ""
  296. private const L_HelpInvoke_016_0_Message = "Example: Call Create method of Win32_Process class with specified parameters:"
  297. private const X_HelpInvoke_017_0_Message = "  winrm invoke Create wmicimv2/Win32_Process @{CommandLine=""notepad.exe"";CurrentDirectory=""C:\""}"
  298.  
  299. '''''''''''''''''''''
  300. ' HELP - IDENTIFY
  301. private const X_HelpIdentify_001_0_Message = "winrm identify  [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  302. private const L_HelpIdentify_003_0_Message = ""
  303. private const L_HelpIdentify_004_0_Message = "Issues an operation against a remote machine to see if the WS-Management "
  304. private const L_HelpIdentify_005_0_Message = "service is running. This operation must be run with the '-remote' switch."
  305. private const L_HelpIdentify_006_0_Message = "To run this operation unauthenticated against the remote machine use the"
  306. private const L_HelpIdentify_007_0_Message = "-auth:none"
  307. private const L_HelpIdentify_008_0_Message = ""
  308. private const L_HelpIdentify_009_0_Message = "Example: identify if WS-Management is running on www.example.com:"
  309. private const X_HelpIdentify_010_0_Message = "  winrm identify -remote:www.example.com"
  310.  
  311.  
  312. '''''''''''''''''''''
  313. ' HELP - HELPMSG
  314. private const X_HelpHelpMessaage_001_0_Message = "winrm helpmsg errorcode"
  315. private const X_HelpHelpMessaage_002_0_Message = ""
  316. private const X_HelpHelpMessaage_003_0_Message = "Displays error message associate with the error code."
  317. private const X_HelpHelpMessaage_004_0_Message = "Examples:"
  318. private const X_HelpHelpMessaage_005_0_Message = "  winrm helpmsg 5"
  319. private const X_HelpHelpMessaage_006_0_Message = "  winrm helpmsg 0x5"
  320.  
  321. '''''''''''''''''''''
  322. ' HELP - ALIAS
  323. private const L_HelpAlias_001_0_Message = "Aliasing allows shortcuts to be used in place of full Resource URIs."
  324. private const L_HelpAlias_002_0_Message = "Available aliases and the Resource URIs they substitute for are:"
  325. private const L_HelpAlias_003_0_Message = ""
  326. private const X_HelpAlias_004_0_Message = "wmi      = http://schemas.microsoft.com/wbem/wsman/1/wmi"
  327. private const X_HelpAlias_005_0_Message = "wmicimv2 = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2"
  328. private const X_HelpAlias_006_0_Message = "cimv2    = http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2"
  329. private const X_HelpAlias_007_0_Message = "winrm    = http://schemas.microsoft.com/wbem/wsman/1"
  330. private const X_HelpAlias_008_0_Message = "wsman    = http://schemas.microsoft.com/wbem/wsman/1"
  331. private const X_HelpAlias_009_0_Message = "shell    = http://schemas.microsoft.com/wbem/wsman/1/windows/shell"
  332. private const L_HelpAlias_010_0_Message = ""
  333. private const L_HelpAlias_011_0_Message = "Example: using full Resource URI:"
  334. private const x_HelpAlias_012_0_Message = "  winrm get http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=WinRM"
  335. private const L_HelpAlias_013_0_Message = ""
  336. private const L_HelpAlias_014_0_Message = "Example: using alias:"
  337. private const X_HelpAlias_015_0_Message = "  winrm get wmicimv2/Win32_Service?Name=WinRM"
  338.  
  339. '''''''''''''''''''''
  340. ' HELP - URIS
  341. private const L_HelpUris_001_0_Message = "Universal Resource Identifiers (URI) specify management resources to be"
  342. private const L_HelpUris_002_0_Message = "used for operations."
  343. private const L_HelpUris_003_0_Message = ""
  344. private const L_HelpUris_004_0_Message = "Selectors and values are passed after the URI in the form:"
  345. private const X_HelpUris_005_0_Message = "  RESOURCE_URI?NAME=VALUE[+NAME=VALUE]..."
  346. private const L_HelpUris_006_0_Message = ""
  347. private const L_HelpUris_007_0_Message = "URIs for all information in WMI are of the following form:"
  348. private const X_HelpUris_008_0_Message = "  WMI path = \\root\NAMESPACE[\NAMESPACE]\CLASS"
  349. private const X_HelpUris_009_0_Message = "  URI      = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/NAMESPACE[/NAMESPACE]/CLASS"
  350. private const X_HelpUris_010_0_Message = "  ALIAS    = wmi/root/NAMESPACE[/NAMESPACE]/CLASS"
  351. private const L_HelpUris_011_0_Message = ""
  352. private const L_HelpUris_012_0_Message = "Example: Get information about WinRM service from WMI using single selector"
  353. private const X_HelpUris_013_0_Message = "  WMI path = \\root\cimv2\Win32_Service"
  354. private const X_HelpUris_013_1_Message = "  URI      = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=WinRM"
  355. private const X_HelpUris_014_0_Message = "  ALIAS    = wmi/root/cimv2/Win32_Service?Name=WinRM"
  356. private const L_HelpUris_015_0_Message = ""
  357. private const L_HelpUris_015_1_Message = "When enumerating WMI instances using a WQL filter,"
  358. private const L_HelpUris_015_2_Message = "the CLASS must be ""*"" (star) and no selectors should be specified."
  359. private const L_HelpUris_015_3_Message = "Example:"
  360. private const X_HelpUris_015_4_Message = "URI = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
  361. private const L_HelpUris_015_5_Message = ""
  362. private const L_HelpUris_015_6_Message = "When accesing WMI singleton instances, no selectors should be specified."
  363. private const L_HelpUris_015_7_Message = "Example:"
  364. private const X_HelpUris_015_8_Message = "URI = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
  365. private const L_HelpUris_015_9_Message = ""
  366. private const L_HelpUris_016_0_Message = "Note: Some parts of RESOURCE_URI may be case-sensitive. When using create or"
  367. private const L_HelpUris_017_0_Message = "invoke, the last part of the resource URI must match case-wise the top-level"
  368. private const L_HelpUris_018_0_Message = "element of the expected XML."
  369.  
  370. '''''''''''''''''''''
  371. ' HELP - CONFIG
  372. private const L_HelpConfig_001_0_Message = "Configuration for WinRM is managed using the winrm command line or through GPO."
  373. private const L_HelpConfig_002_0_Message = "Configuration includes global configuration for both the client and service."
  374. private const L_HelpConfig_003_0_Message = ""
  375. private const L_HelpConfig_004_0_Message = "The WinRM service requires at least one listener to indicate the IP address(es)"
  376. private const L_HelpConfig_005_0_Message = "on which to accept WS-Management requests.  For example, if the machine has "
  377. private const L_HelpConfig_006_0_Message = "multiple network cards, WinRM can be configured to only accept requests from"
  378. private const L_HelpConfig_007_0_Message = "one of the network cards."
  379. private const L_HelpConfig_008_0_Message = ""
  380. private const L_HelpConfig_009_0_Message = "Global configuration"
  381. private const X_HelpConfig_010_0_Message = "  winrm get winrm/config"
  382. private const X_HelpConfig_011_0_Message = "  winrm get winrm/config/client"
  383. private const X_HelpConfig_012_0_Message = "  winrm get winrm/config/service"
  384. private const X_HelpConfig_012_1_Message = "  winrm enumerate winrm/config/service/urisecurity"
  385. private const X_HelpConfig_012_2_Message = "  winrm enumerate winrm/config/service/certmapping"
  386. private const X_HelpConfig_012_3_Message = "  winrm enumerate winrm/config/winrs/customremoteshell"
  387. private const L_HelpConfig_013_0_Message = ""
  388. private const L_HelpConfig_014_0_Message = "Network listening requires one or more listeners.  "
  389. private const L_HelpConfig_015_0_Message = "Listeners are identified by two selectors: Address and Transport."
  390.  
  391. private const L_HelpConfigAddress_001_0_Message = "Address must be one of:"
  392. private const L_HelpConfigAddress_002_0_Message = "  *           - Listen on all IPs on the machine "
  393. private const L_HelpConfigAddress_003_0_Message = "  IP:1.2.3.4  - Listen only on the specified IP address"
  394. private const L_HelpConfigAddress_004_0_Message = "  MAC:...     - Listen only on IP address for the specified MAC"
  395. private const L_HelpConfigAddress_005_0_Message = ""
  396. private const L_HelpConfigAddress_006_0_Message = "Note: All listening is subject to the IPv4Fitler and IPv6Filter under    "
  397. private const L_HelpConfigAddress_007_0_Message = "config/service."
  398. private const L_HelpConfigAddress_008_0_Message = "Note: IP may be an IPv4 or IPv6 address."
  399.  
  400. private const L_HelpConfigTransport_001_0_Message = "Transport must be one of:"
  401. private const L_HelpConfigTransport_002_0_Message = "  HTTP  - Listen for requests on HTTP  (port 80)"
  402. private const L_HelpConfigTransport_003_0_Message = "  HTTPS - Listen for requests on HTTPS (port 443)"
  403. private const L_HelpConfigTransport_004_0_Message = ""
  404. private const L_HelpConfigTransport_005_0_Message = "Note: HTTP traffic by default only allows messages encrypted with "
  405. private const L_HelpConfigTransport_006_0_Message = "the Negotiate or Kerberos SSP."
  406. private const L_HelpConfigTransport_007_0_Message = ""
  407. private const L_HelpConfigTransport_008_0_Message = ""
  408. private const L_HelpConfigTransport_009_0_Message = "When configuring HTTPS, the following properties are used:"
  409. private const L_HelpConfigTransport_010_0_Message = "  Hostname - Name of this machine; must match CN in certificate."
  410. private const L_HelpConfigTransport_011_0_Message = "  CertificateThumbprint - hexadecimal thumbprint of certificate appropriate for"
  411. private const L_HelpConfigTransport_012_0_Message = "    Server Authentication."
  412. private const L_HelpConfigTransport_013_0_Message = "Note: If only Hostname is supplied, WinRM will try to find an appropriate"
  413. private const L_HelpConfigTransport_014_0_Message = "certificate."
  414.    
  415. private const L_HelpConfigExamples_001_0_Message = "Example: To listen for requests on HTTP on all IPs on the machine:"
  416. private const X_HelpConfigExamples_002_0_Message = "  winrm create winrm/config/listener?Address=*+Transport=HTTP"
  417. private const L_HelpConfigExamples_003_0_Message = ""
  418. private const L_HelpConfigExamples_004_0_Message = "Example: To disable a given listener"
  419. private const X_HelpConfigExamples_005_0_Message = "  winrm set winrm/config/listener?Address=IP:1.2.3.4+Transport=HTTP @{Enabled=""false""}"
  420. private const L_HelpConfigExamples_006_0_Message = ""
  421. private const L_HelpConfigExamples_007_0_Message = "Example: To enable basic authentication on the client but not the service:"
  422. private const X_HelpConfigExamples_008_0_Message = "  winrm set winrm/config/client/auth @{Basic=""true""}"
  423. private const L_HelpConfigExamples_009_0_Message = ""
  424. private const L_HelpConfigExamples_010_0_Message = "Example: To enable Negotiate for all workgroup machines."
  425. private const X_HelpConfigExamples_011_0_Message = "  winrm set winrm/config/client @{TrustedHosts=""<local>""}"
  426.  
  427. '''''''''''''''''''''
  428. ' HELP - URISECURITY
  429. private const L_HelpUriSecurity_001_0_Message = "Security configuration for remote access to WinRM is stored in the "
  430. private const L_HelpUriSecurity_002_0_Message = "URI security table identified by the following resource URI:"
  431. private const L_HelpUriSecurity_003_0_Message = ""
  432. private const L_HelpUriSecurity_004_0_Message = "winrm/config/service/urisecurity"
  433. private const L_HelpUriSecurity_005_0_Message = ""
  434. private const L_HelpUriSecurity_006_0_Message = "Each entry in this table contains three properties:"
  435. private const L_HelpUriSecurity_007_0_Message = " URI - The URI or URI prefix of the resource(s) to be secured."
  436. private const L_HelpUriSecurity_008_0_Message = " SDDL - The security descriptor defining who has access to that URI."
  437. private const L_HelpUriSecurity_009_0_Message = " Enabled - Indicates if this entry should be used."
  438. private const L_HelpUriSecurity_010_0_Message = "  "
  439. private const L_HelpUriSecurity_011_0_Message = "A remote request is allowed access to WinRM if the client has permissions"
  440. private const L_HelpUriSecurity_012_0_Message = "in the SDDL for the most specific URI in the URI security table."
  441. private const L_HelpUriSecurity_012_1_Message = ""
  442. private const L_HelpUriSecurity_012_2_Message = "A URI may end with the ""*"" character in which case it matches all resource "
  443. private const L_HelpUriSecurity_013_0_Message = "URIs that start with that prefix.  Otherwise, the URI is an exact match.  "
  444. private const L_HelpUriSecurity_014_0_Message = "When checking remote access, if the resource URI in the request matches "
  445. private const L_HelpUriSecurity_015_0_Message = "multiple entries in the URI security table, only the entry with the "
  446. private const L_HelpUriSecurity_016_0_Message = "longest match is used"
  447.  
  448. private const L_HelpUriSecurityExamples_001_0_Message = "Example: To see the current URI security configuration"
  449. private const L_HelpUriSecurityExamples_001_1_Message = ""
  450. private const X_HelpUriSecurityExamples_002_0_Message = "  winrm enumerate winrm/config/service/urisecurity"
  451. private const L_HelpUriSecurityExamples_003_0_Message = ""
  452. private const L_HelpUriSecurityExamples_004_0_Message = "Example: To allow only domain administrators (DA) to change WinRM config "
  453. private const L_HelpUriSecurityExamples_005_0_Message = "      (and audit all failures and successful updates):"
  454. private const X_HelpUriSecurityExamples_006_0_Message = " winrm create winrm/config/service/urisecurity?uri=winrm/config* "
  455. private const X_HelpUriSecurityExamples_007_0_Message = " @{SDDL="" O:NSG:BAD:P(A;;GA;;;DA) S:P(AU;FA;GA;;;WD)(AU;SA;GWGX;;;WD""}"
  456.  
  457.  
  458. '''''''''''''''''''''
  459. ' HELP - CertMapping
  460. private const L_HelpCertMapping_001_0_Message = "Certificate mapping remote access to WinRM using client certificates is "
  461. private const L_HelpCertMapping_002_0_Message = "stored in the certificate mapping table identified by the "
  462. private const L_HelpCertMapping_003_0_Message = "following resource URI:"
  463. private const L_HelpCertMapping_003_1_Message = ""
  464. private const L_HelpCertMapping_004_0_Message = " winrm/config/service/CertMapping"
  465. private const L_HelpCertMapping_005_0_Message = ""
  466. private const L_HelpCertMapping_006_0_Message = "Each entry in this table contains five properties:"
  467. private const L_HelpCertMapping_007_0_Message = " Issuer -  Thumbprint of the issuer certificate."
  468. private const L_HelpCertMapping_008_0_Message = " Subject - Subject field of client certificate."
  469. private const L_HelpCertMapping_009_0_Message = " URI - The URI or URI prefix for which this mapping applies."
  470. private const L_HelpCertMapping_009_1_Message = " Username - Local username for processing the request."
  471. private const L_HelpCertMapping_009_2_Message = " Password - Local password for processing the request."
  472. private const L_HelpCertMapping_009_3_Message = " Enabled - Use in processing if true."
  473. private const L_HelpCertMapping_010_0_Message = "  "
  474. private const L_HelpCertMapping_011_0_Message = "For a client certificate to be applicable, the issuer certificate must be  "
  475. private const L_HelpCertMapping_012_0_Message = "available locally and match the thumbprint in the entry Issuer property"
  476. private const L_HelpCertMapping_012_1_Message = ""
  477. private const L_HelpCertMapping_012_2_Message = "For a client certificate to be applicable, its DNS or Principal name "
  478. private const L_HelpCertMapping_013_0_Message = "(from the SubjectAlternativeName field) must match the Subject property."
  479. private const L_HelpCertMapping_014_0_Message = "The value can start with a '*' wildcard."
  480. private const L_HelpCertMapping_014_1_Message = "The URI identifies for which resources the indicated client certificates ."
  481. private const L_HelpCertMapping_014_2_Message = "should be mapped."
  482. private const L_HelpCertMapping_014_3_Message = "The value can end with a '*' wildcard."
  483. private const L_HelpCertMapping_014_4_Message = ""
  484.  
  485. private const L_HelpCertMapping_015_0_Message = "If the client certificate matches the entry and it is enabled, the "
  486. private const L_HelpCertMapping_016_0_Message = "request is processed under the local account with the given username "
  487.  
  488. private const L_HelpCertMapping_017_0_Message = "and password after ensuring that user has access to the resource as "
  489. private const L_HelpCertMapping_018_0_Message = "defined by the URI security table."
  490. private const L_HelpCertMapping_019_0_Message = ""
  491.  
  492. private const L_HelpCertMapping_020_0_Message = "When creating a new entry or changing the password of an existing entry, "
  493. private const L_HelpCertMapping_021_0_Message = "the -r switch must be used since the WinRM service must store the password"
  494. private const L_HelpCertMapping_022_0_Message = "for future use."
  495.  
  496.  
  497. private const L_HelpCertMappingExamples_001_0_Message = "Example: To see the current CertMapping configuration"
  498. private const X_HelpCertMappingExamples_002_0_Message = "  winrm enumerate winrm/config/service/CertMapping"
  499.  
  500. private const L_HelpCertMappingExamples_003_0_Message = "Example: Create a CertMapping entry:"
  501. private const X_HelpCertMappingExamples_004_0_Message = "  winrm create winrm/config/service/certmapping?Issuer=1212131238d84023982e381f20391a2935301923+Subject=*.example.com+URI=wmicimv2/* @{UserName=""USERNAME"";Password=""PASSWORD""} -remote:localhost"
  502. private const L_HelpCertMappingExamples_005_0_Message = ""
  503. '''''''''''''''''''''
  504. ' HELP - CREATESDDL
  505. private const L_HelpCreatesddl_000_0_Message = "winrm createsddl RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  506. private const L_HelpCreatesddl_001_0_Message = ""
  507. private const L_HelpCreatesddl_002_0_Message = "Creates a new entry in the URI security table to control "
  508. private const L_HelpCreatesddl_002_1_Message = "remote access to WinRM resources."
  509. private const L_HelpCreatesddl_003_0_Message = "This command will fail if the entry already exists."
  510. private const L_HelpCreatesddl_004_0_Message = ""
  511. private const L_HelpCreatesddl_005_0_Message = "This command will launch a GUI to edit the security settings."
  512. private const L_HelpCreatesddl_005_1_Message = ""
  513. private const L_HelpCreatesddl_006_0_Message = "The RESOURCE_URI may be a complete resource URI or it may be a prefix."
  514. private const L_HelpCreatesddl_007_0_Message = "Prefixes are indicated by adding a trailing *."
  515. private const L_HelpCreatesddl_010_0_Message = ""
  516. private const L_HelpCreatesddl_011_0_Message = "Example: To set the security for all WinRM configuration"
  517. private const X_HelpCreatesddl_012_0_Message = "  winrm createsddl winrm/config*"
  518.  
  519.  
  520. '''''''''''''''''''''
  521. ' HELP - CONFIGSDDL
  522. private const L_HelpConfigsddl_000_0_Message = "winrm configsddl RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
  523. private const L_HelpConfigsddl_001_0_Message = ""
  524. private const L_HelpConfigsddl_002_0_Message = "Changes an existing entry in the URI security table to "
  525. private const L_HelpConfigsddl_002_1_Message = "control remote access to WinRM resources."
  526. private const L_HelpConfigsddl_003_0_Message = "This command will fail if the entry does not exist."
  527. private const L_HelpConfigsddl_004_0_Message = ""
  528. private const L_HelpConfigsddl_005_0_Message = "This command will launch a GUI to edit the security settings."
  529. private const L_HelpConfigsddl_005_1_Message = ""
  530. private const L_HelpConfigsddl_006_0_Message = "The RESOURCE_URI may be a complete resource URI or it may be a prefix."
  531. private const L_HelpConfigsddl_007_0_Message = "Prefixes are indicated by adding a trailing *."
  532. private const L_HelpConfigsddl_010_0_Message = ""
  533. private const L_HelpConfigsddl_011_0_Message = "Example: To change the default security"
  534. private const X_HelpConfigsddl_012_0_Message = "  winrm configsddl *"
  535. private const L_NONURISECFEATUREHelpConfigsddl_000_0_Message = "winrm configsddl"
  536. private const L_NONURISECFEATUREHelpConfigsddl_001_0_Message = ""
  537. private const L_NONURISECFEATUREHelpConfigsddl_002_0_Message = "Changes the security descriptor to "
  538. private const L_NONURISECFEATUREHelpConfigsddl_002_1_Message = "control remote access to WinRM resources."
  539. private const L_NONURISECFEATUREHelpConfigsddl_004_0_Message = ""
  540. private const L_NONURISECFEATUREHelpConfigsddl_005_0_Message = "This command will launch a GUI to edit the security settings."
  541. private const L_NONURISECFEATUREHelpConfigsddl_005_1_Message = ""
  542. private const L_NONURISECFEATUREHelpConfigsddl_011_0_Message = "Example: To change the  security"
  543. private const X_NONURISECFEATUREHelpConfigsddl_012_0_Message = "  winrm configsddl "
  544.  '''''''''''''''''''''
  545. ' HELP - CUSTOMREMOTESHELL
  546. private const L_HelpCustomRemoteShell_001_0_Message = "The configuration that allows a client to run a remote shell and "
  547. private const L_HelpCustomRemoteShell_001_1_Message = "arguments based on a URI is stored in the CustomRemoteShell table."
  548. private const L_HelpCustomRemoteShell_002_0_Message = "The table is identified by the following resource URI:"
  549. private const L_HelpCustomRemoteShell_003_0_Message = ""
  550. private const L_HelpCustomRemoteShell_004_0_Message = " winrm/config/winrs/customremoteshell"
  551. private const L_HelpCustomRemoteShell_005_0_Message = ""
  552. private const L_HelpCustomRemoteShell_006_0_Message = "Each entry in this table contains three properties:"
  553. private const L_HelpCustomRemoteShell_007_0_Message = " URI - The URI of the shell resource."
  554. private const L_HelpCustomRemoteShell_008_0_Message = " Shell - The executable to be launched."
  555. private const L_HelpCustomRemoteShell_009_0_Message = " Arguments - The arguments to be passed to the shell Shell."
  556. private const L_HelpCustomRemoteShell_010_0_Message = ""
  557. private const L_HelpCustomRemoteShell_011_0_Message = "The URI is the key and is case-insensitive; wildcards, internal whitespaces"
  558. private const L_HelpCustomRemoteShell_011_1_Message = "and '?' character are not allowed."
  559. private const L_HelpCustomRemoteShell_012_0_Message = ""
  560. private const L_HelpCustomRemoteShell_013_0_Message = "The shell executable must be specified as a full path. "
  561. private const L_HelpCustomRemoteShell_013_1_Message = "It can contain environment variables; the environment"
  562. private const L_HelpCustomRemoteShell_014_0_Message = "variables are expanded on the remote machine."
  563.  
  564. private const L_HelpCustomRemoteShellExamples_001_0_Message = "Example: To see the current CustomRemoteShell configuration"
  565. private const X_HelpCustomRemoteShellExamples_002_0_Message = "  winrm enumerate winrm/config/winrs/customremoteshell"
  566. private const L_HelpCustomRemoteShellExamples_003_0_Message = ""
  567. private const L_HelpCustomRemoteShellExamples_004_0_Message = "Example: To create an entry for PowerShell:"
  568. private const X_HelpCustomRemoteShellExamples_005_0_Message = " winrm create winrm/config/winrs/customremoteshell?uri=shell/Microsoft.Powershell @{ Shell=""%windir%\system32\windowspowershell\v1.0\PowerShell.exe"";Arguments=""-s -nologo""}"
  569. private const L_HelpCustomRemoteShellExamples_006_0_Message = ""
  570.  
  571. '''''''''''''''''''''
  572. ' HELP - QUICKCONFIG
  573. private const X_HelpQuickConfig_001_0_Message = "winrm quickconfig [-quiet] [-transport:VALUE]"
  574. private const X_HelpQuickConfig_002_0_Message = ""
  575. private const X_HelpQuickConfig_003_0_Message = "Performs configuration actions to enable this machine for remote management."
  576. private const X_HelpQuickConfig_004_0_Message = "Includes:"
  577. private const X_HelpQuickConfig_005_0_Message = "  1. Start the WinRM service"
  578. private const X_HelpQuickConfig_006_0_Message = "  2. Set the WinRM service type to auto start"
  579. private const X_HelpQuickConfig_007_0_Message = "  3. Create a listener to accept request on any IP address"
  580. private const X_HelpQuickConfig_008_0_Message = "  4. Enable firewall exception for WS-Management traffic (for http only)"
  581. private const X_HelpQuickConfig_009_0_Message = ""
  582. private const X_HelpQuickConfig_010_0_Message = "-q[uiet]"
  583. private const X_HelpQuickConfig_010_1_Message = "--------"
  584. private const X_HelpQuickConfig_011_0_Message = "If present, quickconfig will not prompt for confirmation."
  585. private const X_HelpQuickConfig_012_0_Message = "-transport:VALUE"
  586. private const X_HelpQuickConfig_013_0_Message = "----------------"
  587. private const X_HelpQuickConfig_014_0_Message = "Perform quickconfig for specific transport."
  588. private const X_HelpQuickConfig_015_0_Message = "Possible options are http and https.  Defaults to http."
  589.  
  590.  
  591.  
  592. '''''''''''''''''''''
  593. ' HELP - REMOTE
  594. private const L_HelpRemote_001_0_Message = "winrm OPERATION -remote:VALUE [-unencrypted]"
  595. private const L_HelpRemote_002_0_Message = ""
  596. private const L_HelpRemote_003_0_Message = "-r[emote]:VALUE"
  597. private const L_HelpRemote_004_0_Message = "---------------"
  598. private const L_HelpRemote_005_0_Message = "Specifies identifier of remote endpoint/system.  "
  599. private const L_HelpRemote_006_0_Message = "May be a simple host name or a complete URL."
  600. private const L_HelpRemote_007_0_Message = ""
  601. private const L_HelpRemote_008_0_Message = "  [TRANSPORT://]HOST[:PORT][/PREFIX]"
  602. private const L_HelpRemote_009_0_Message = ""
  603. private const L_HelpRemote_010_0_Message = "Transport: One of HTTP or HTTPS; default is HTTP."
  604. private const L_HelpRemote_011_0_Message = "Host: Can be in the form of a DNS name, NetBIOS name, or IP address."
  605. private const L_HelpRemote_012_0_Message = "Port: Defaults to 80 for HTTP and 443 for HTTPS."
  606. private const L_HelpRemote_013_0_Message = "Prefix: Defaults to wsman."
  607. private const L_HelpRemote_014_0_Message = ""
  608. private const L_HelpRemote_015_0_Message = "Note: IPv6 addresses must be enclosed in brackets."
  609. private const L_HelpRemote_016_0_Message = "Note: When using HTTPS, the machine name must match the server's certificate"
  610. private const L_HelpRemote_017_0_Message = "      common name (CN) unless -skipCNcheck is used."
  611. private const L_HelpRemote_018_0_Message = "Note: Defaults for port and prefix can be changed in the local configuration."
  612.  
  613. private const L_HelpRemoteExample_001_0_Message = "Example: Connect to srv.corp.com via http:"
  614. private const X_HelpRemoteExample_002_0_Message = "  winrm get uri -r:srv.corp.com"
  615. private const L_HelpRemoteExample_003_0_Message = ""
  616. private const L_HelpRemoteExample_004_0_Message = "Example: Connect to local computer machine1 via https:"
  617. private const X_HelpRemoteExample_005_0_Message = "  winrm get uri -r:https://machine1"
  618. private const L_HelpRemoteExample_006_0_Message = ""
  619. private const L_HelpRemoteExample_007_0_Message = "Example: Connect to an IPv6 machine via http:"
  620. private const X_HelpRemoteExample_008_0_Message = "  winrm get uri -r:[1:2:3::8]"
  621. private const L_HelpRemoteExample_009_0_Message = ""
  622. private const L_HelpRemoteExample_010_0_Message = "Example: Connect to an IPv6 machine via https on a non-default port and URL:"
  623. private const X_HelpRemoteExample_011_0_Message = "  winrm get uri -r:https://[1:2:3::8]:444/path"
  624.  
  625. private const L_HelpRemoteUnencrypted_001_0_Message = "-un[encrypted]"
  626. private const L_HelpRemoteUnencrypted_002_0_Message = "--------------"
  627. private const L_HelpRemoteUnencrypted_003_0_Message = "Specifies that no encryption will be used when doing remote operations over"
  628. private const L_HelpRemoteUnencrypted_004_0_Message = "HTTP.  Unencrypted traffic is not allowed by default and must be enabled in"
  629. private const L_HelpRemoteUnencrypted_005_0_Message = "the local configuration."
  630.  
  631. private const L_HelpRemoteConfig_001_0_Message = "To enable this machine to be remotely managed see:"
  632.  
  633. '''''''''''''''''''''
  634. ' HELP - AUTH
  635. private const L_HelpAuth_001_0_Message = "winrm OPERATION -remote:VALUE "
  636. private const L_HelpAuth_002_0_Message = "  [-authentication:VALUE] "
  637. private const L_HelpAuth_003_0_Message = "  [-username:USERNAME] "
  638. private const L_HelpAuth_004_0_Message = "  [-password:PASSWORD]"
  639. private const L_HelpAuth_004_1_Message = "  [-certificate:THUMBPRINT]"
  640. private const L_HelpAuth_005_0_Message = ""
  641. private const L_HelpAuth_006_0_Message = "When connecting remotely, you can specify which credentials and which"
  642. private const L_HelpAuth_007_0_Message = "authentication mechanisms to use.  If none are specified the current "
  643. private const L_HelpAuth_008_0_Message = "logged-on user's credentials will be used."
  644.  
  645. private const L_HelpAuthAuth_001_0_Message = "-a[uthentication]:VALUE"
  646. private const L_HelpAuthAuth_002_0_Message = "-----------------------"
  647. private const L_HelpAuthAuth_003_0_Message = "Specifies authentication mechanism used when communicating with remote machine."
  648. private const L_HelpAuthAuth_004_0_Message = "Possible options are None, Basic, Digest, Negotiate or Kerberos."
  649. private const L_HelpAuthAuth_005_0_Message = "Examples:"
  650. private const X_HelpAuthAuth_006_0_Message = "  -a:None"
  651. private const X_HelpAuthAuth_007_0_Message = "  -a:Basic"
  652. private const X_HelpAuthAuth_008_0_Message = "  -a:Digest"
  653. private const X_HelpAuthAuth_009_0_Message = "  -a:Negotiate"
  654. private const X_HelpAuthAuth_010_0_Message = "  -a:Kerberos"
  655. private const X_HelpAuthAuth_010_1_Message = "  -a:Certificate"
  656. private const L_HelpAuthAuth_011_0_Message = "Note: If an authentication mechanism is not specified, Kerberos is used unless"
  657. private const L_HelpAuthAuth_012_0_Message = "      one of the conditions below is true, in which case Negotiate is used:"
  658. private const L_HelpAuthAuth_013_0_Message = "   -explicit credentials are supplied and the destination host is trusted"
  659. private const L_HelpAuthAuth_013_1_Message = "   -the destination host is ""localhost"", ""127.0.0.1"" or ""[::1]"""
  660. private const L_HelpAuthAuth_013_2_Message = "   -the client computer is in workgroup and the destination host is trusted"
  661. private const L_HelpAuthAuth_014_0_Message = "Note: Not all authentication mechanisms are enabled by default.  Allowed"
  662. private const L_HelpAuthAuth_015_0_Message = "      authentication mechanisms can be controlled by local configuration "
  663. private const L_HelpAuthAuth_016_0_Message = "      or group policy."
  664. private const L_HelpAuthAuth_017_0_Message = "Note: Most operations will require an authentication mode other than None."
  665. private const L_HelpAuthAuth_018_0_Message = "Note: Certificate authentication can be used only with the HTTPS transport."
  666. private const L_HelpAuthAuth_019_0_Message = "      To configure an HTTPS listener for the WinRM service run the command:"
  667. private const L_HelpAuthAuth_020_0_Message = "      ""winrm quickconfig -transport:HTTPS"""
  668.  
  669. private const L_HelpAuthUsername_001_0_Message = "-u[sername]:USERNAME"
  670. private const L_HelpAuthUsername_002_0_Message = "--------------------"
  671. private const L_HelpAuthUsername_003_0_Message = "Specifies username on remote machine. Cannot be used on local machine."
  672. private const L_HelpAuthUsername_004_0_Message = "User must be member of local Administrators group on remote machine."
  673. private const L_HelpAuthUsername_005_0_Message = "If the user account is a local account on the remote machine,"
  674. private const L_HelpAuthUsername_006_0_Message = "the syntax should be in the form -username:USERNAME"
  675. private const L_HelpAuthUsername_007_0_Message = "If the username is a domain account, the syntax should be in the form"
  676. private const L_HelpAuthUsername_008_0_Message = "-username:DOMAIN\USERNAME"
  677. private const L_HelpAuthUsername_009_0_Message = "If Basic or Digest is used, then -username is required."
  678. private const L_HelpAuthUsername_010_0_Message = "If Kerberos is used, then the current logged-on user's credentials"
  679. private const L_HelpAuthUsername_011_0_Message = "are used if -username is not supplied. Only domain credentials can"
  680. private const L_HelpAuthUsername_011_1_Message = "be used with Kerberos."
  681. private const L_HelpAuthUsername_012_0_Message = "If Negotiate is used, then -username is required unless"
  682. private const L_HelpAuthUsername_013_0_Message = "one of the conditions below is true:"
  683. private const L_HelpAuthUsername_014_0_Message = "   -the destination host is ""localhost"", ""127.0.0.1"" or ""[::1]"""
  684. private const L_HelpAuthUsername_015_0_Message = "   -the client computer is in workgroup and the destination host is trusted"
  685.  
  686. private const L_HelpAuthPassword_001_0_Message = "-p[assword]:PASSWORD"
  687. private const L_HelpAuthPassword_002_0_Message = "--------------------"
  688. private const L_HelpAuthPassword_003_0_Message = "Specifies password on command line to override interactive prompt."
  689. private const L_HelpAuthPassword_004_0_Message = "Applies only if -username:USERNAME option is used."
  690.  
  691. private const L_HelpAuthCertificate_001_0_Message = "-c[ertificate]:THUMBPRINT"
  692. private const L_HelpAuthCertificate_002_0_Message = "--------------------"
  693. private const L_HelpAuthCertificate_003_0_Message = "Specifies the thumbprint of a certificate that must exist in the local"
  694. private const L_HelpAuthCertificate_004_0_Message = "machine store or in the current user store. The certificate must be intended"
  695. private const L_HelpAuthCertificate_005_0_Message = "for client authentication."
  696. private const L_HelpAuthCertificate_006_0_Message = "Applies only if -a:Certificate is used."
  697. private const L_HelpAuthCertificate_007_0_Message = "THUMBPRINT can contain spaces, in which case it must be enclosed in"
  698. private const L_HelpAuthCertificate_008_0_Message = "double quotation marks."
  699. private const L_HelpAuthCertificate_009_0_Message = "Examples:"
  700. private const L_HelpAuthCertificate_010_0_Message = "-c:7b0cf48026409e38a2d6348761b1dd1271c4f86d"
  701. private const L_HelpAuthCertificate_011_0_Message = "-c:""7b 0c f4 80 26 40 9e 38 a2 d6 34 87 61 b1 dd 12 71 c4 f8 6d"""
  702.  
  703. '''''''''''''''''''''
  704. ' HELP - INPUT
  705. private const L_HelpInput_001_0_Message = "Input can be by either providing key/value pairs directly on the command line"
  706. private const L_HelpInput_002_0_Message = "or reading XML from a file."
  707. private const L_HelpInput_003_0_Message = ""
  708. private const L_HelpInput_004_0_Message = "  winrm OPERATION -file:VALUE "
  709. private const L_HelpInput_005_0_Message = "  winrm OPERATION @{KEY=""VALUE""[;KEY=""VALUE""]}"
  710. private const L_HelpInput_006_0_Message = ""
  711. private const L_HelpInput_007_0_Message = "Applies to set, create, and invoke operations."
  712. private const L_HelpInput_008_0_Message = "Use either @{KEY=VALUE} or input from an XML file, but not both."
  713. private const L_HelpInput_009_0_Message = ""
  714. private const L_HelpInput_010_0_Message = "-file:VALUE"
  715. private const L_HelpInput_011_0_Message = "-----------"
  716. private const L_HelpInput_012_0_Message = "Specifies name of file used as input."
  717. private const L_HelpInput_013_0_Message = "VALUE can be absolute path, relative path, or filename without path."
  718. private const L_HelpInput_014_0_Message = "Names or paths that include spaces must be enclosed in quotation marks."
  719. private const L_HelpInput_015_0_Message = ""
  720. private const L_HelpInput_016_0_Message = "@{KEY=""VALUE""[;KEY=""VALUE""]}"
  721. private const L_HelpInput_017_0_Message = "----------------------------"
  722. private const L_HelpInput_018_0_Message = "Keys are not unique."
  723. private const L_HelpInput_019_0_Message = "Values must be within quotation marks."
  724. private const L_HelpInput_020_0_Message = "$null is a special value."
  725. private const L_HelpInput_021_0_Message = ""
  726. private const L_HelpInput_022_0_Message = "Examples:"
  727. private const X_HelpInput_023_0_Message = "  @{key1=""value1"";key2=""value2""}"
  728. private const X_HelpInput_024_0_Message = "  @{key1=$null;key2=""value2""}"
  729.  
  730.  
  731. '''''''''''''''''''''
  732. ' HELP - FILTERS
  733. private const L_HelpFilter_001_0_Message = "Filters allow selecting a subset of the desired resources:"
  734. private const X_HelpFilter_002_0_Message = ""
  735. private const L_HelpFilter_003_0_Message = "winrm enumerate RESOURCE_URI -filter:EXPR [-dialect:URI] ..."
  736. private const X_HelpFilter_004_0_Message = ""
  737. private const L_HelpFilter_005_0_Message = "-filter:EXPR"
  738. private const X_HelpFilter_006_0_Message = "------------"
  739. private const L_HelpFilter_007_0_Message = "Filter expression for enumeration."
  740. private const X_HelpFilter_008_0_Message = ""
  741. private const L_HelpFilter_009_0_Message = "-dialect:URI"
  742. private const X_HelpFilter_010_0_Message = "------------"
  743. private const L_HelpFilter_011_0_Message = "Dialect of the filter expression for enumeration."
  744. private const L_HelpFilter_012_0_Message = "This may be any dialect supported by the remote service.  "
  745. private const X_HelpFilter_013_0_Message = ""
  746. private const L_HelpFilter_014_0_Message = "The following aliases can be used for the dialect URI:"
  747. private const X_HelpFilter_015_0_Message = "* WQL - http://schemas.microsoft.com/wbem/wsman/1/WQL"
  748. private const X_HelpFilter_016_0_Message = "* Selector - http://schemas.dmtf.org/wbem/wsman/1/wsman/SelectorFilter"
  749. private const X_HelpFilter_017_0_Message = ""
  750. private const L_HelpFilter_018_0_Message = "The dialect URI defaults to WQL when used with enumeration."
  751. private const X_HelpFilter_019_0_Message = ""
  752. private const L_HelpFilter_020_0_Message = "Example: Find running services"
  753. private const X_HelpFilter_011_0_Message = "  winrm e wmicimv2/Win32_Service -dialect:selector -filter:{State='Running'}"
  754. private const X_HelpFilter_022_0_Message = ""
  755. private const L_HelpFilter_023_0_Message = "Example: Find auto start services that are not running"
  756. private const X_HelpFilter_024_0_Message = "  winrm e wmicimv2/* -filter:""select * from Win32_Service where State!='Running' and StartMode='Auto'"""
  757.  
  758. '''''''''''''''''''''
  759. ' HELP - SWITCHES
  760. private const L_HelpSwitchTimeout_001_0_Message = "-timeout:MS"
  761. private const L_HelpSwitchTimeout_002_0_Message = "-----------"
  762. private const L_HelpSwitchTimeout_003_0_Message = "Timeout in milliseconds. Limits duration of corresponding operation."
  763. private const L_HelpSwitchTimeout_004_0_Message = "Default timeout can be configured by:"
  764. private const X_HelpSwitchTimeout_005_0_Message = "  winrm set winrm/config @{MaxTimeoutms=""XXXXXX""}"
  765. private const L_HelpSwitchTimeout_006_0_Message = "Where XXXXXX is an integer indicating milliseconds."
  766.  
  767. private const X_HelpSwitchSkipCACheck_001_0_Message = "-skipCAcheck"
  768. private const L_HelpSwitchSkipCACheck_002_0_Message = "------------"
  769. private const L_HelpSwitchSkipCACheck_003_0_Message = "Specifies that certificate issuer need not be a trusted root authority."
  770. private const L_HelpSwitchSkipCACheck_004_0_Message = "Used only in remote operations using HTTPS (see -remote option)."
  771. private const L_HelpSwitchSkipCACheck_005_0_Message = "This option should be used only for trusted machines."
  772.  
  773. private const X_HelpSwitchSkipCNCheck_001_0_Message = "-skipCNcheck"
  774. private const L_HelpSwitchSkipCNCheck_002_0_Message = "------------"
  775. private const L_HelpSwitchSkipCNCheck_003_0_Message = "Specifies that certificate common name (CN) of the server need not match the"
  776. private const L_HelpSwitchSkipCNCheck_004_0_Message = "hostname of the server. "
  777. private const L_HelpSwitchSkipCNCheck_005_0_Message = "Used only in remote operations using HTTPS (see -remote option)."
  778. private const L_HelpSwitchSkipCNCheck_006_0_Message = "This option should be used only for trusted machines."
  779.  
  780. private const L_HelpSwitchDialect_001_0_Message = "-dialect:VALUE"
  781. private const L_HelpSwitchDialect_002_0_Message = "--------------"
  782. private const L_HelpSwitchDialect_003_0_Message = "Dialect of the filter expression for enumeration or fragment."
  783. private const L_HelpSwitchDialect_004_0_Message = "Example: Use a WQL query"
  784. private const X_HelpSwitchDialect_005_0_Message = "  -dialect:http://schemas.microsoft.com/wbem/wsman/1/WQL"
  785. private const L_HelpSwitchDialect_006_0_Message = "Example: Use XPATH for filtering with enumeration or fragment get/set."
  786. private const X_HelpSwitchDialect_007_0_Message = "  -dialect:http://www.w3.org/TR/1999/REC-xpath-19991116"
  787.  
  788. 'private const L_HelpSwitchFilter_001_0_Message = "-filter:VALUE"
  789. 'private const L_HelpSwitchFilter_002_0_Message = "-----------------"
  790. 'private const L_HelpSwitchFilter_003_0_Message = "Filter expression for enumeration."
  791. 'private const L_HelpSwitchFilter_004_0_Message = "Example: Use a WQL query"
  792. 'private const X_HelpSwitchFilter_005_0_Message = "  -filter:""select * from Win32_process where handle=0"""
  793.  
  794. private const L_HelpSwitchFragment_001_0_Message = "-fragment:VALUE"
  795. private const L_HelpSwitchFragment_002_0_Message = "---------------"
  796. private const L_HelpSwitchFragment_003_0_Message = "Specify a section inside the instance XML that is to be updated or retrieved"
  797. private const L_HelpSwitchFragment_004_0_Message = "for the given operation."
  798. private const L_HelpSwitchFragment_005_0_Message = "Example: Get the status of the spooler service"
  799. private const X_HelpSwitchFragment_006_0_Message = "  winrm get wmicimv2/Win32_Service?name=spooler -fragment:Status/text()"
  800.  
  801. private const L_HelpSwitchOption_001_0_Message = "-options:{KEY=""VALUE""[;KEY=""VALUE""]}"
  802. private const L_HelpSwitchOption_002_0_Message = "------------------------------------"
  803. private const L_HelpSwitchOption_003_0_Message = "Key/value pairs for provider-specific options."
  804. private const L_HelpSwitchOption_004_0_Message = "To specify NULL as a value, use $null"
  805. private const L_HelpSwitchOption_005_0_Message = ""
  806. private const L_HelpSwitchOption_006_0_Message = "Examples:"
  807. private const X_HelpSwitchOption_007_0_Message = "  -options:{key1=""value1"";key2=""value2""}"
  808. private const X_HelpSwitchOption_008_0_Message = "  -options:{key1=$null;key2=""value2""}"
  809.  
  810. private const X_HelpSwitchSPNPort_001_0_Message = "-SPNPort"
  811. private const L_HelpSwitchSPNPort_002_0_Message = "--------"
  812. private const L_HelpSwitchSPNPort_003_0_Message = "Appends port number to the Service Principal Name (SPN) of the remote server."
  813. private const L_HelpSwitchSPNPort_004_0_Message = "Service principal name is used when Negotiate or Kerberos authentication"
  814. private const L_HelpSwitchSPNPort_005_0_Message = "mechanism is in use."
  815.  
  816. private const L_HelpSwitchEncoding_001_0_Message = "-encoding:VALUE"
  817. private const L_HelpSwitchEncoding_002_0_Message = "---------------"
  818. private const L_HelpSwitchEncoding_003_0_Message = "Specifies encoding type when talking to remote machine (see -remote"
  819. private const L_HelpSwitchEncoding_004_0_Message = "option). Possible options are ""utf-8"" and ""utf-16""."
  820. private const L_HelpSwitchEncoding_005_0_Message = "Default is utf-16."
  821. private const L_HelpSwitchEncoding_006_0_Message = "Examples:"
  822. private const X_HelpSwitchEncoding_007_0_Message = "  -encoding:utf-8"
  823. private const X_HelpSwitchEncoding_008_0_Message = "  -encoding:utf-16"
  824.  
  825. private const L_HelpSwitchFormat_001_0_Message = "-f[ormat]:FORMAT"
  826. private const L_HelpSwitchFormat_002_0_Message = "----------------"
  827. private const L_HelpSwitchFormat_003_0_Message = "Specifies format of output."
  828. private const L_HelpSwitchFormat_004_0_Message = "FORMAT can be ""xml"", ""pretty"" (better formatted XML), or ""text""."
  829. private const L_HelpSwitchFormat_005_0_Message = "Examples:"
  830. private const X_HelpSwitchFormat_006_0_Message = "  -format:xml"
  831. private const X_HelpSwitchFormat_007_0_Message = "  -format:pretty"
  832. private const X_HelpSwitchFormat_008_0_Message = "  -format:text"
  833.  
  834.  
  835. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  836. ' Operations
  837. private const OP_GET  = "get"
  838. private const OP_PUT  = "set"
  839. private const OP_CONFIGSDDL  = "configsddl"
  840. private const OP_CREATESDDL  = "createsddl"
  841. private const OP_CRE  = "create"
  842. private const OP_DEL  = "delete"
  843. private const OP_ENU  = "enumerate"
  844. private const OP_INV  = "invoke"
  845. private const OP_HELP = "help"
  846. private const OP_IDENTIFY    = "identify"
  847. private const OP_QUICKCONFIG = "quickconfig"
  848. private const OP_HELPMSG = "helpmsg"
  849.  
  850. ' Named parameters (key names of key/value pairs)
  851. private const NPARA_USERNAME  = "username"
  852. private const NPARA_PASSWORD  = "password"
  853. private const NPARA_CERT      = "certificate"
  854. private const NPARA_DIALECT   = "dialect"
  855. private const NPARA_FILE      = "file"
  856. private const NPARA_FILTER    = "filter"
  857. private const NPARA_HELP      = "?"
  858. private const NPARA_REMOTE    = "remote"
  859. private const NPARA_NOCACHK   = "skipcacheck"
  860. private const NPARA_NOCNCHK   = "skipcncheck"
  861. private const NPARA_SPNPORT   = "spnport"
  862. private const NPARA_TIMEOUT   = "timeout"
  863. private const NPARA_AUTH      = "authentication"
  864. private const NPARA_UNENCRYPTED = "unencrypted"
  865. private const NPARA_ENCODING  = "encoding"
  866. private const NPARA_FORMAT    = "format"
  867. private const NPARA_OPTIONS   = "options"
  868. private const NPARA_FRAGMENT  = "fragment"
  869. private const NPARA_QUIET     = "quiet"
  870. private const NPARA_TRANSPORT = "transport"
  871. private const NPARA_PSEUDO_COMMAND   = "command"
  872. private const NPARA_PSEUDO_OPERATION = "operation"
  873. private const NPARA_PSEUDO_ACTION    = "action"
  874. private const NPARA_PSEUDO_RESOURCE  = "resource"
  875. private const NPARA_PSEUDO_AT        = "@"
  876. private const NPARA_RETURN_TYPE      = "returntype"
  877. private const NPARA_SHALLOW          = "shallow"
  878. private const NPARA_BASE_PROPS_ONLY  = "basepropertiesonly"
  879.  
  880. private const SHORTCUT_CRE         = "c"
  881. private const SHORTCUT_DEL         = "d"
  882. private const SHORTCUT_ENU         = "e"
  883. private const SHORTCUT_ENU2        = "enum"
  884. private const SHORTCUT_GET         = "g"
  885. private const SHORTCUT_INV         = "i"
  886. private const SHORTCUT_IDENTIFY    = "id"
  887. private const SHORTCUT_PUT         = "s"
  888. private const SHORTCUT_PUT2        = "put"
  889. private const SHORTCUT_PUT3        = "p"
  890. private const SHORTCUT_QUICKCONFIG = "qc"
  891. private const SHORTCUT_HELPMSG    = "helpmsg"
  892.  
  893. private const SHORTCUT_AUTH        = "a"
  894. private const SHORTCUT_AUTH2       = "auth"
  895. private const SHORTCUT_FORMAT      = "f"
  896. private const SHORTCUT_PASSWORD    = "p"
  897. private const SHORTCUT_REMOTE      = "r"
  898. private const SHORTCUT_REMOTE2     = "machine"
  899. private const SHORTCUT_USERNAME    = "u"
  900. private const SHORTCUT_UNENCRYPTED = "un"
  901. private const SHORTCUT_QUIET       = "q"
  902. private const SHORTCUT_CERT        = "c"
  903.  
  904. ' Help topics
  905. private const HELP_CONFIG   = "config"
  906. private const HELP_URISECURITY   = "urisecurity"
  907. private const HELP_CERTMAPPING   = "certmapping"
  908. private const HELP_CUSTOMREMOTESHELL     = "customremoteshell"
  909. private const HELP_URIS     = "uris"
  910. private const HELP_ALIAS    = "alias"
  911. private const HELP_ALIASES  = "aliases"
  912. private const HELP_SWITCHES = "switches"
  913. private const HELP_REMOTING = "remoting"
  914. private const HELP_INPUT    = "input"
  915. private const HELP_AUTH     = "auth"
  916. private const HELP_FILTERS  = "filters"
  917.  
  918. ' Literal values in key/value pairs
  919. private const VAL_NO_AUTH     = "none"
  920. private const VAL_BASIC       = "basic"
  921. private const VAL_DIGEST      = "digest"
  922. private const VAL_KERBEROS    = "kerberos"
  923. private const VAL_NEGOTIATE   = "negotiate"
  924. private const VAL_CERT        = "certificate"
  925.  
  926. ' Enumeration returnType values
  927. private const VAL_RT_OBJECT  = "object"
  928. private const VAL_RT_EPR     = "epr"
  929. private const VAL_RT_OBJ_EPR = "objectandepr"
  930.  
  931. ' Output formatting flags
  932. private const VAL_FORMAT_XML         = "xml"
  933. private const VAL_FORMAT_PRETTY      = "pretty"
  934. private const VAL_FORMAT_PRETTY_XSLT = "WsmPty.xsl"
  935. private const VAL_FORMAT_TEXT        = "text"
  936. private const VAL_FORMAT_TEXT_XSLT   = "WsmTxt.xsl"
  937.  
  938. '''''''''''''''''''''
  939. ' Patterns
  940. private const PTRN_IPV6_1 = "([A-Fa-f0-9]{1,4}:){6}:[A-Fa-f0-9]{1,4}"
  941. private const PTRN_IPV6_2 = "([A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}"
  942. private const PTRN_IPV6_3 = "[A-Fa-f0-9]{1,4}::([A-Fa-f0-9]{1,4}:){0,5}[A-Fa-f0-9]{1,4}"
  943. private const PTRN_IPV6_4 = "([A-Fa-f0-9]{1,4}:){2}:([A-Fa-f0-9]{1,4}:){0,4}[A-Fa-f0-9]{1,4}"
  944. private const PTRN_IPV6_5 = "([A-Fa-f0-9]{1,4}:){3}:([A-Fa-f0-9]{1,4}:){0,3}[A-Fa-f0-9]{1,4}"
  945. private const PTRN_IPV6_6 = "([A-Fa-f0-9]{1,4}:){4}:([A-Fa-f0-9]{1,4}:){0,2}[A-Fa-f0-9]{1,4}"
  946. private const PTRN_IPV6_7 = "([A-Fa-f0-9]{1,4}:){5}:([A-Fa-f0-9]{1,4}:){0,1}[A-Fa-f0-9]{1,4}"
  947. private const PTRN_IPV6_S = ":"
  948.  
  949. private const PTRN_URI_LAST = "([a-z_][-a-z0-9._]*)$"
  950. private const PTRN_OPT      = "^-([a-z]+):(.*)"
  951. private const PTRN_HASH_TOK = "\s*([\w:]+)\s*=\s*(\$null|""([^""]*)"")\s*"
  952.  
  953. dim PTRN_HASH_TOK_P
  954. dim PTRN_HASH_VALIDATE
  955. PTRN_HASH_TOK_P        = "(" & PTRN_HASH_TOK & ")"
  956. PTRN_HASH_VALIDATE     = "(" & PTRN_HASH_TOK_P & ";)*(" & PTRN_HASH_TOK_P & ")"
  957.  
  958. dim PTRN_IPV6
  959. PTRN_IPV6 = "^(" & _
  960.     PTRN_IPV6_1 & ")$|^(" & PTRN_IPV6_2 & ")$|^(" & _
  961.     PTRN_IPV6_3 & ")$|^(" & PTRN_IPV6_4 & ")$|^(" & PTRN_IPV6_5 & ")$|^(" & _
  962.     PTRN_IPV6_6 & ")$|^(" & PTRN_IPV6_7 & ")$"
  963.  
  964.  
  965. '''''''''''''''''''''
  966. ' Misc
  967. private const T_O             = &h800705B4
  968. private const URI_IPMI        = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema"
  969. private const URI_WMI         = "http://schemas.microsoft.com/wbem/wsman/1/wmi"
  970. private const NS_IPMI         = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema"
  971. private const NS_CIMBASE      = "http://schemas.dmtf.org/wbem/wsman/1/base"
  972. private const NS_WSMANL       = "http://schemas.microsoft.com"
  973. private const NS_XSI          = "xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"""
  974. private const ATTR_NIL        = "xsi:nil=""true"""
  975. private const ATTR_NIL_NAME   = "xsi:nil"
  976. private const NS_XSI_URI      = "http://www.w3.org/2001/XMLSchema-instance"
  977. private const ALIAS_WQL       = "wql"
  978. private const URI_WQL_DIALECT = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
  979. private const ALIAS_XPATH       = "xpath"
  980. private const URI_XPATH_DIALECT = "http://www.w3.org/TR/1999/REC-xpath-19991116"
  981. 'Constants for MS-XML
  982. private const NODE_ATTRIBUTE  = 2
  983. private const NODE_TEXT       = 3
  984.  
  985. '''''''''''''''''''''
  986. ' Vars
  987. dim wshShellObj
  988. dim wsmanObj
  989. dim connOptionsObj
  990. dim sessionObj
  991. dim enumeratorObj
  992. dim resourceOptionsDic
  993. dim resourceLocatorObj
  994. dim wsmanInternalObj
  995.  
  996. dim cmdStr
  997. dim wsmanCmdLineObj
  998. dim inputStr
  999. dim responseStr
  1000. dim connectionStr
  1001. dim resourceUriStr
  1002. dim actionUriStr
  1003. dim rootNdNameStr
  1004. dim operation
  1005.  
  1006. dim formatOption
  1007. dim formattedStr
  1008.  
  1009. dim errNo
  1010. dim errDesc
  1011.  
  1012. dim stdIn
  1013. dim stdErr
  1014. dim stdOut
  1015. set stdIn = WScript.StdIn
  1016. set stdErr = WScript.StdErr
  1017. set stdOut = WScript.StdOut
  1018.  
  1019. Dim resourceDictionary, resourcesLoaded
  1020. Set resourceDictionary = CreateObject("Scripting.Dictionary")
  1021. resourcesLoaded = false
  1022.  
  1023.  
  1024. ' ------------------ Main() --------------------
  1025.  
  1026. If Not IsCScriptEnv() Then
  1027.     Wscript.Echo GetResource("L_ONLYCSCRIPT_Message")
  1028.     WScript.Quit(ERR_GENERAL_FAILURE)
  1029. End If
  1030.  
  1031. 'Create an instance of the WSMAN.Automation Class
  1032. set wsmanObj = CreateObject("WSMAN.Automation")
  1033.  
  1034. set wsmanInternalObj = CreateObject("WSMAN.InternalAutomation")
  1035.  
  1036. 'Get the raw text command line
  1037. cmdStr = wsmanObj.CommandLine
  1038.  
  1039. 'Expand the environment strings
  1040. set wshShellObj = WScript.CreateObject("WScript.Shell")
  1041. cmdStr = wshShellObj.ExpandEnvironmentStrings(cmdStr)
  1042.  
  1043. 'Create the command-line parsing object and parse the command line
  1044. Set wsmanCmdLineObj = New WSManCommandLineParser
  1045. If Not wsmanCmdLineObj.Parse(cmdStr) Then
  1046.     HelpMenu "help", stdOut
  1047.     WScript.Quit(ERR_GENERAL_FAILURE)
  1048. End If
  1049.  
  1050. Dim argOne
  1051. Dim argTwo
  1052. argOne = LCase(wsmanCmdLineObj.Argument(1))
  1053. argTwo = LCase(wsmanCmdLineObj.Argument(2))
  1054.  
  1055. If (argOne = OP_HELP Or argOne = NPARA_HELP Or argOne = "") Then
  1056.     HelpMenu argTwo, stdOut
  1057.     WScript.Quit(ERR_OK)
  1058. End If
  1059.  
  1060. 'Check if the help argument was presented, and display help
  1061. If wsmanCmdLineObj.ArgumentExists(NPARA_HELP) Then
  1062.     HelpMenu argOne, stdOut
  1063.     WScript.Quit(ERR_OK)
  1064. End If
  1065.  
  1066.  
  1067. If argOne = OP_HELPMSG then
  1068.     argTwo = WScript.Arguments(1)
  1069.     Dim errNumber
  1070.     Dim strHex
  1071.     if (InStr(LCase(argTwo),"0x")= 1) then
  1072.         strHex = "&H" + Mid(argTwo, 3)
  1073.         On Error Resume Next
  1074.         errNumber = CLng(strHex)
  1075.         if Err.Number <> 0 then
  1076.           HelpMenu OP_HELPMSG, stdOut
  1077.           WScript.Quit(ERR_OK)
  1078.         end if
  1079.     elseif (InStr(LCase(argTwo),"-")= 1) then                               
  1080.         strHex = "&H"+Hex(CLng(argTwo))
  1081.           On Error Resume Next
  1082.         errNumber = CLng(strHex)
  1083.         if Err.Number <> 0 then
  1084.           HelpMenu OP_HELPMSG, stdOut
  1085.           WScript.Quit(ERR_OK)
  1086.         end if
  1087.     else
  1088.            On Error Resume Next
  1089.         errNumber = CLng(argTwo)
  1090.         if Err.Number <> 0 then
  1091.             HelpMenu OP_HELPMSG, stdOut
  1092.                WScript.Quit(ERR_OK)
  1093.         end if        
  1094.     end if
  1095.     formattedStr = wsmanObj.GetErrorMessage(errNumber)
  1096.     WScript.echo formattedStr    
  1097.     WScript.Quit(ERR_OK)
  1098. End If
  1099.  
  1100. wsmanCmdLineObj.ValidateArguments()
  1101.  
  1102. 'Get and check the operation argument
  1103. operation = wsmanCmdLineObj.Operation()
  1104.  
  1105. If (wsmanCmdLineObj.ArgumentExists(NPARA_REMOTE)) Then
  1106.     connectionStr = wsmanCmdLineObj.Argument(NPARA_REMOTE)
  1107. Else
  1108.     connectionStr = ""
  1109. End If
  1110.  
  1111. 'Set the format option for result output
  1112. if(wsmanCmdLineObj.ArgumentExists(NPARA_FORMAT)) then
  1113.     formatOption = wsmanCmdLineObj.Argument(NPARA_FORMAT)   
  1114.     if Not (LCase(formatOption) = VAL_FORMAT_XML Or _
  1115.             LCase(formatOption) = VAL_FORMAT_PRETTY Or _
  1116.             LCase(formatOption) = VAL_FORMAT_TEXT) Then
  1117.         stdErr.WriteLine GetResource("L_FORMATLERROR_Message") & """" & formatOption & """"
  1118.         WScript.Quit(ERR_GENERAL_FAILURE)
  1119.     end if
  1120. else
  1121.     formatOption = VAL_FORMAT_TEXT
  1122. end if
  1123.  
  1124.  
  1125. 'Create the wsman automation API session object
  1126. set sessionObj = CreateSession(wsmanObj, connectionStr, wsmanCmdLineObj, formatOption)
  1127.  
  1128. 'Get the resource and action uri strings
  1129. resourceUriStr = ""
  1130. if operation = OP_INV then
  1131.     actionUriStr = wsmanCmdLineObj.Argument(NPARA_PSEUDO_ACTION)
  1132. End If
  1133. '#ifdef URI_SECURITY_FEATURE  
  1134. 'if this feature is not enabled no params to be passed to configsddl command
  1135. If (operation <> OP_IDENTIFY and operation <> OP_QUICKCONFIG and operation <> OP_CONFIGSDDL) Then
  1136.     resourceUriStr = wsmanCmdLineObj.Argument(NPARA_PSEUDO_RESOURCE)
  1137.     'Determine the name to use for the root node in the message
  1138.     rootNdNameStr = GetRootNodeName(operation, resourceUriStr, actionUriStr)
  1139. End If
  1140.  
  1141. '#ifdef URI_SECURITY_FEATURE  
  1142. 'automation still allows for a param which is the uri to be configured
  1143. 'so if this feature is not enabled, we supply a dummy non-localizable
  1144. 'param for display purposes only
  1145. If (operation = OP_CONFIGSDDL) Then
  1146.     resourceUriStr ="winrm/config/service/RootSddl"
  1147.     'Determine the name to use for the root node in the message
  1148.     rootNdNameStr = GetRootNodeName(operation, resourceUriStr, actionUriStr)
  1149. End If
  1150.  
  1151.  
  1152. 'Create the ResourceLocator object
  1153. If resourceUriStr <> "" Then
  1154.   on error resume next
  1155.   set resourceLocatorObj = CreateAndInitializeResourceLocator(wsmanObj,resourceUriStr,wsmanCmdLineObj)
  1156.   if resourceLocatorObj Is Nothing then
  1157.       if Err.Number <> 0 then
  1158.           errNo = Err.Number
  1159.           errDesc = Err.Description
  1160.           stdErr.WriteLine GetResource("L_ERRNO_Message") & " " & errNo & " 0x" & Hex(errNo)
  1161.           stdErr.WriteLine errDesc
  1162.       end if
  1163.      WScript.Quit(ERR_GENERAL_FAILURE)
  1164.   end if
  1165. End If
  1166.  
  1167. 'Gather the input parameters, if present, from the command line or a file. For Put,
  1168. 'and input from @{...} instead of file, first do a Get to retrieve the present state 
  1169. 'of the object against which to apply the @{...} changes prior to the actual Put.
  1170. on error resume next
  1171. if not ProcessInput(wsmanObj, operation, rootNdNameStr, _
  1172.            wsmanCmdLineObj, resourceLocatorObj,sessionObj, inputStr, formatOption) then    
  1173.    WScript.Quit(ERR_GENERAL_FAILURE)
  1174. end if
  1175.             
  1176. 'Now execute the indicated operation.
  1177. on error resume next
  1178. select case operation
  1179.     case OP_DEL 
  1180.         sessionObj.Delete(resourceLocatorObj)
  1181.     case OP_GET 
  1182.         responseStr = sessionObj.Get(resourceLocatorObj)
  1183.     case OP_PUT
  1184.        responseStr = sessionObj.Put(resourceLocatorObj, inputStr)
  1185.     case OP_CONFIGSDDL
  1186.        responseStr = wsmanInternalObj.ConfigSDDL(sessionObj,resourceLocatorObj)    
  1187.     '#ifdef URI_SECURITY_FEATURE         
  1188.     'case OP_CREATESDDL    
  1189.     '   responseStr = sessionObj.CreateSDDL(resourceLocatorObj)          
  1190.     case OP_CRE
  1191.         responseStr = sessionObj.Create(resourceLocatorObj, inputStr)
  1192.     case OP_INV
  1193.         responseStr = sessionObj.Invoke(actionUriStr, resourceLocatorObj, inputStr)
  1194.     case OP_ENU
  1195.          Enumerate wsmanObj, sessionObj, wsmanCmdLineObj, resourceLocatorObj, formatOption
  1196.     case OP_IDENTIFY
  1197.         responseStr = sessionObj.Identify
  1198.     case OP_QUICKCONFIG
  1199.          QuickConfig sessionObj, wsmanCmdLineObj
  1200.     case else 
  1201.         ASSERTBOOL False, GetResource("L_UNKOPNM_Message") & "'" & operation & "'"
  1202. end select
  1203.  
  1204. 'Process the output or error messages.
  1205. if Err.Number <> 0 then
  1206.     ASSERTERR sessionObj, formatOption
  1207.     on error goto 0
  1208. else
  1209.     if operation <> OP_ENU and operation <> OP_DEL and operation <> OP_QUICKCONFIG then
  1210.         If Reformat(responseStr,formattedStr,formatOption) Then
  1211.             WScript.echo formattedStr
  1212.         Else
  1213.             stdErr.WriteLine GetResource("L_FORMATFAILED_Message")
  1214.             stdErr.WriteLine responseStr
  1215.             WScript.Quit(ERR_GENERAL_FAILURE)
  1216.         End If
  1217.     end if
  1218. end if
  1219.  
  1220. 'Exist the script.
  1221. WScript.Quit(ERR_OK)
  1222.  
  1223. ' ------------------ Utilities --------------------
  1224.  
  1225.  
  1226.  
  1227. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  1228. ' Loads resource strings from an ini file of the appropriate locale
  1229. Private Function LoadResourceData
  1230.         If resourcesLoaded Then
  1231.                 Exit Function
  1232.         End If 
  1233.  
  1234.     Dim lang, value, ini
  1235.         Dim fso
  1236.         Set fso = WScript.CreateObject("Scripting.FileSystemObject")
  1237.         
  1238.         On Error Resume Next
  1239.         lang = GetUILanguage()
  1240.         If Err.Number <> 0 Then
  1241.                 'API does not exist prior to Vista, use Getlocale for downlevel
  1242.         Err.Clear
  1243.                 lang = GetLocale()
  1244.         End If
  1245.         
  1246.  
  1247.     ini = fso.GetParentFolderName(WScript.ScriptFullName) & "\winrm\" _
  1248.         & ToHex(lang) & "\" & fso.GetBaseName(WScript.ScriptName) &  ".ini"
  1249.  
  1250.         'stderr.writeline "Reading resources from " & ini
  1251.  
  1252.     If fso.FileExists(ini) Then
  1253.         Dim stream, file
  1254.         Const ForReading = 1, TristateTrue = -1 'Read file in unicode format
  1255.  
  1256.         'Debug.WriteLine "Using resource file " & ini
  1257.  
  1258.         Set stream = fso.OpenTextFile(ini, ForReading, False, TristateTrue)
  1259.         ReadResources(stream)
  1260.            stream.Close
  1261.     End If
  1262.  
  1263.         resourcesLoaded = true
  1264. End Function
  1265.  
  1266. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  1267. ' Reads resource strings from an ini file
  1268. Function ReadResources(stream)
  1269.     Const ERROR_FILE_NOT_FOUND = 2
  1270.     Dim ln, arr, key, value
  1271.  
  1272.     If Not IsObject(stream) Then Err.Raise ERROR_FILE_NOT_FOUND
  1273.  
  1274.     Do Until stream.AtEndOfStream
  1275.         ln = stream.ReadLine
  1276.  
  1277.         arr = Split(ln, "=", 2, 1)
  1278.         If UBound(arr, 1) = 1 Then
  1279.             ' Trim the key and the value first before trimming quotes
  1280.             key = Trim(arr(0))
  1281.             value = TrimChar(Trim(arr(1)), """")
  1282.  
  1283.             'WScript.stderr.writeline "Read key " & key & " = " & value
  1284.                         If key <> "" Then
  1285.                                 resourceDictionary.Add key, value
  1286.                         End If
  1287.         End If
  1288.     Loop
  1289. End Function
  1290.  
  1291. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  1292. ' Trim a character from the text string
  1293. Private Function TrimChar(s, c)
  1294.     Const vbTextCompare = 1
  1295.  
  1296.     ' Trim character from the start
  1297.     If InStr(1, s, c, vbTextCompare) = 1 Then
  1298.         s = Mid(s, 2)
  1299.     End If
  1300.         
  1301.     ' Trim character from the end
  1302.     If InStr(Len(s), s, c, vbTextCompare) = Len(s) Then
  1303.         s = Mid(s, 1, Len(s) - 1)
  1304.     End If
  1305.  
  1306.     TrimChar = s
  1307. End Function
  1308.  
  1309. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  1310. ' Get a 4-digit hexadecimal number
  1311. Private Function ToHex(n)
  1312.     Dim s : s = Hex(n)
  1313.     ToHex = String(4 - Len(s), "0") & s
  1314. End Function
  1315.  
  1316. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  1317. ' Get the resource string with the given name from the locale specific
  1318. ' dictionary.  If not found, use the built in default.
  1319. Private function GetResource(name)
  1320.         LoadResourceData
  1321.         If resourceDictionary.Exists(name) Then
  1322.                 GetResource = resourceDictionary.Item(name)
  1323.         Else
  1324.                 GetResource = Eval(name)
  1325.         End If
  1326. End Function
  1327.  
  1328. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  1329. ' Reads entire text file and return as string
  1330. private function ReadFile(file)
  1331.     
  1332.     dim fso, f
  1333.  
  1334.     set fso = CreateObject("Scripting.FileSystemObject")
  1335.     ASSERTBOOL fso.FileExists(file), GetResource("L_NOFILE_Message") & "'" & file & "'"
  1336.     set f = fso.OpenTextFile(file, 1, false,-2)
  1337.     ReadFile = f.ReadAll
  1338.  
  1339.     f.Close
  1340.     set f = Nothing
  1341.     set fso = Nothing
  1342. end function 
  1343.  
  1344. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  1345. ' Name:    CommandLineParser
  1346. ' Purpose: To Parse Command-Line Arguments for access to Named and Unnamed 
  1347. '          arguments.
  1348.  
  1349. Class CommandLineParser
  1350.     Private m_allArguments
  1351.     Private m_namedArguments
  1352.     Private m_unnamedArguments
  1353.     Private m_operationShortcuts
  1354.     Private m_parameterShortcuts
  1355.     Private m_indexFirstSwitch
  1356.  
  1357.     Private Sub ErrorHandler(isFatal,errorMessage)
  1358.         WScript.StdErr.WriteLine GetResource("L_ERR_Message") & errorMessage
  1359.         If isFatal Then
  1360.             WScript.Quit(ERR_GENERAL_FAILURE)
  1361.         End If
  1362.     End Sub
  1363.     
  1364.     Private Sub Class_Initialize()
  1365.         Set m_allArguments     = CreateObject("Scripting.Dictionary")
  1366.         Set m_namedArguments   = CreateObject("Scripting.Dictionary")
  1367.         Set m_unnamedArguments = CreateObject("Scripting.Dictionary")
  1368.         m_indexFirstSwitch = -1
  1369.  
  1370.         Set m_operationShortcuts = CreateObject("Scripting.Dictionary")
  1371.         m_operationShortcuts.Add SHORTCUT_CRE,  OP_CRE
  1372.         m_operationShortcuts.Add SHORTCUT_DEL,  OP_DEL
  1373.         m_operationShortcuts.Add SHORTCUT_ENU,  OP_ENU
  1374.         m_operationShortcuts.Add SHORTCUT_ENU2, OP_ENU
  1375.         m_operationShortcuts.Add SHORTCUT_GET,  OP_GET
  1376.         m_operationShortcuts.Add SHORTCUT_INV,  OP_INV
  1377.         m_operationShortcuts.Add SHORTCUT_IDENTIFY,  OP_IDENTIFY
  1378.         m_operationShortcuts.Add SHORTCUT_PUT,  OP_PUT
  1379.         m_operationShortcuts.Add SHORTCUT_PUT2, OP_PUT
  1380.         m_operationShortcuts.Add SHORTCUT_PUT3, OP_PUT
  1381.         m_operationShortcuts.Add SHORTCUT_QUICKCONFIG, OP_QUICKCONFIG
  1382.         m_operationShortcuts.Add SHORTCUT_HELPMSG, OP_HELPMSG
  1383.         
  1384.         Set m_parameterShortcuts = CreateObject("Scripting.Dictionary")
  1385.         m_parameterShortcuts.Add SHORTCUT_AUTH,  NPARA_AUTH
  1386.         m_parameterShortcuts.Add SHORTCUT_AUTH2, NPARA_AUTH
  1387.         m_parameterShortcuts.Add SHORTCUT_FORMAT, NPARA_FORMAT
  1388.         m_parameterShortcuts.Add SHORTCUT_PASSWORD, NPARA_PASSWORD
  1389.         m_parameterShortcuts.Add SHORTCUT_REMOTE,  NPARA_REMOTE
  1390.         m_parameterShortcuts.Add SHORTCUT_REMOTE2, NPARA_REMOTE
  1391.         m_parameterShortcuts.Add SHORTCUT_USERNAME, NPARA_USERNAME
  1392.         m_parameterShortcuts.Add SHORTCUT_UNENCRYPTED, NPARA_UNENCRYPTED
  1393.         m_parameterShortcuts.Add SHORTCUT_QUIET, NPARA_QUIET
  1394.         m_parameterShortcuts.Add SHORTCUT_CERT, NPARA_CERT
  1395.     End Sub
  1396.  
  1397.     Public Function FirstSwitchIndex()
  1398.         FirstSwitchIndex = m_indexFirstSwitch
  1399.     End Function
  1400.  
  1401.     Public Function Count()
  1402.           Count = m_unnamedArguments.Count + m_namedArguments.Count
  1403.     End Function
  1404.     Public Function UnnamedCount()
  1405.           UnnamedCount = m_unnamedArguments.Count
  1406.     End Function
  1407.     
  1408.     Public Function PositionName(index)
  1409.         Dim keyArray
  1410.         PositionName = ""
  1411.         If IsNumeric(index) Then
  1412.             If index >=0 And index < m_allArguments.Count Then
  1413.                 PositionName = m_allArguments(index)
  1414.             End If
  1415.         End If
  1416.     End Function
  1417.  
  1418.     Public Function UnnamedExists(index)
  1419.         UnnamedExists = False
  1420.         If IsNumeric(index) Then
  1421.             If index >=0 And index < m_unnamedArguments.Count Then
  1422.                 UnnamedExists = True
  1423.             End If
  1424.         End If
  1425.     End Function
  1426.     
  1427.     Public Function UnnamedValue(index)
  1428.         UnnamedValue = ""
  1429.         If IsNumeric(index) Then
  1430.             If index >=0 And index < m_unnamedArguments.Count Then
  1431.                 UnnamedValue = m_unnamedArguments(index)
  1432.             End If
  1433.         End If
  1434.     End Function
  1435.     
  1436.     Public Function NamedCount()
  1437.         NamedCount = m_namedArguments.Count
  1438.     End Function
  1439.     Public Function NamedExists(key)
  1440.         NamedExists = m_namedArguments.Exists(key)
  1441.     End Function
  1442.  
  1443.     Public Function NamedValue(key)
  1444.         NamedValue = ""
  1445.         If m_namedArguments.Exists(key) Then
  1446.             NamedValue = m_namedArguments(key)
  1447.         End If
  1448.     End Function
  1449.     
  1450.     Public Function NamedValueByIndex(index)
  1451.         Dim itemArray
  1452.         NamedValueByIndex = ""
  1453.         If IsNumeric(index) Then
  1454.             If index >= 0 And index < m_namedArguments.Count Then
  1455.                 itemArray = m_namedArguments.Items
  1456.                 NamedValueByIndex = itemArray(index)
  1457.             End If
  1458.         End If
  1459.     End Function
  1460.  
  1461.     Public Function NamedKeyByIndex(index)
  1462.         Dim keyArray
  1463.         NamedKeyByIndex = ""
  1464.         If IsNumeric(index) Then
  1465.             If index >= 0 And index < m_namedArguments.Count Then
  1466.                 keyArray = m_namedArguments.Keys
  1467.                 NamedKeyByIndex = keyArray(index)
  1468.             End If
  1469.         End If
  1470.     End Function
  1471.  
  1472.     Public Function Parse(cmdlineStr)
  1473.         Dim cmdlineStrLen
  1474.  
  1475.         Dim parseIndex
  1476.         Dim inQuote
  1477.         Dim inCurly
  1478.  
  1479.         Dim currentParameter
  1480.         Dim parameterName
  1481.         Dim parameterValue
  1482.         Dim parameterColonPos
  1483.         Dim currentChar
  1484.         Dim parameterValueQuoted
  1485.  
  1486.         m_allArguments.RemoveAll
  1487.         m_namedArguments.RemoveAll
  1488.         m_unnamedArguments.RemoveAll   
  1489.              
  1490.         parseIndex = 1
  1491.         inCurly = False
  1492.         inQuote = False
  1493.  
  1494.         cmdlineStrLen = Len(cmdlineStr)
  1495.  
  1496.         Do While parseIndex <= cmdlineStrLen
  1497.  
  1498.             currentParameter = ""
  1499.             inQuote = False
  1500.             inCurly = False
  1501.  
  1502.             'skip whitespace
  1503.             Do While parseIndex <= cmdlineStrLen
  1504.                 currentChar = Mid(cmdlineStr,parseIndex,1)
  1505.                 If currentChar <> " " Then
  1506.                     Exit Do
  1507.                 End If
  1508.                 parseIndex = parseIndex + 1
  1509.             Loop
  1510.  
  1511.             'capture text until first unquoted or uncurlied space, or end of string
  1512.             Do While parseIndex <= cmdlineStrLen
  1513.                 currentChar = Mid(cmdlineStr,parseIndex,1)
  1514.                 If currentChar = "{" Then
  1515.                     If Not inQuote Then
  1516.                         inCurly = True
  1517.                     End If
  1518.                     currentParameter = currentParameter & currentChar
  1519.                 ElseIf currentChar = "}" Then
  1520.                     If Not inQuote Then
  1521.                         inCurly = False
  1522.                     End If
  1523.                     currentParameter = currentParameter & currentChar
  1524.                 ElseIf currentChar = """" Then
  1525.                     If inQuote Then
  1526.                         If Mid(cmdlineStr,parseIndex-1,1) <> "\" Then
  1527.                             inQuote = False
  1528.                         End If
  1529.                     Else
  1530.                         inQuote = True
  1531.                     End If
  1532.                     currentParameter = currentParameter & currentChar
  1533.                 ElseIf currentChar = " " Then
  1534.                     If inQuote Or inCurly Then
  1535.                         currentParameter = currentParameter & currentChar
  1536.                     Else
  1537.                         Exit Do
  1538.                     End If
  1539.                 Else
  1540.                     currentParameter = currentParameter & currentChar
  1541.                 End If
  1542.                 parseIndex = parseIndex + 1
  1543.             Loop
  1544.  
  1545.             'process the command line segment
  1546.             If Len(currentParameter) > 0 Then
  1547.                 'for named parameters
  1548.                 If Left(currentParameter,1) = "-" Or Left(currentParameter,1) = "/" Then
  1549.                     If Left(currentParameter,2) = "//" Or Left(currentParameter,2) = "--" Then
  1550.                         'skip all double-prefix parameters - assumed for scripting host i.e. //nologo
  1551.                     Else
  1552.                         parameterColonPos = InStr(currentParameter,":")
  1553.                         If parameterColonPos > 0 Then
  1554.                             parameterName = LCase(Mid(currentParameter,2,parameterColonPos-2))
  1555.                             parameterValueQuoted = False
  1556.                             If Mid(currentParameter,parameterColonPos + 1,1) = """" Then
  1557.                                 If Right(currentParameter,1) = """" Then
  1558.                                     parameterValueQuoted = True
  1559.                                 Else
  1560.                                     ErrorHandler True,L_ImproperUseOfQuotes_ErrorMessage & parameterName
  1561.                                 End If
  1562.                             ElseIf Mid(currentParameter,Len(currentParameter),1) = """" Then
  1563.                                 ErrorHandler True,L_ImproperUseOfQuotes_ErrorMessage & parameterName
  1564.                             End If
  1565.                             If parameterValueQuoted Then
  1566.                                 parameterValue = Mid(currentParameter,parameterColonPos + 2,Len(currentParameter) - parameterColonPos - 2)
  1567.                             Else
  1568.                                 parameterValue = Mid(currentParameter,parameterColonPos + 1)
  1569.                             End If
  1570.                         Else
  1571.                             parameterName = LCase(Mid(currentParameter,2))
  1572.                             parameterValue = ""
  1573.                         End If
  1574.                         If m_parameterShortcuts.Exists(LCase(parameterName)) Then
  1575.                             parameterName = m_parameterShortcuts(LCase(parameterName))
  1576.                         End If
  1577.                         If Len(parameterName) > 0 Then
  1578.                             If m_namedArguments.Exists(parameterName) Then
  1579.                                 ErrorHandler True,L_OPTNOTUNQ_Message & parameterName
  1580.                             End If
  1581.                             parameterValue = Replace(parameterValue, "\""", """")
  1582.                             If (0 = m_namedArguments.Count) Then
  1583.                                 m_indexFirstSwitch = m_allArguments.Count
  1584.                             End If
  1585.                             If Len(parameterValue) > 0 Then
  1586.                                 m_namedArguments.Add parameterName,parameterValue
  1587.                             Else
  1588.                                 m_namedArguments.Add parameterName,""
  1589.                             End If
  1590.                             m_allArguments.Add m_allArguments.Count, parameterName
  1591.                         Else
  1592.                             ErrorHandler True,L_BLANKOPT_ErrorMessage
  1593.                         End If
  1594.                     End If
  1595.                 'for unnamed parameters             
  1596.                 Else
  1597.                     parameterName = m_unnamedArguments.Count
  1598.                     If Left(currentParameter,1) = """" And Right(currentParameter,1) = """" Then
  1599.                         parameterValue = Mid(currentParameter,2,Len(currentParameter)-2)
  1600.                     Else                                        
  1601.                         parameterValue = currentParameter
  1602.                     End If
  1603.                     parameterValue = Replace(parameterValue, "\""", """")
  1604.                     If m_operationShortcuts.Exists(LCase(parameterValue)) Then
  1605.                          parameterValue = m_operationShortcuts(LCase(parameterValue))
  1606.                     End If
  1607.                     m_unnamedArguments.Add parameterName,parameterValue
  1608.                     m_allArguments.Add m_allArguments.Count, parameterValue
  1609.                 End If
  1610.             End If
  1611.         Loop
  1612.         Parse = (m_unnamedArguments.Count + m_namedArguments.Count) > 0
  1613.     End Function
  1614. End Class
  1615.  
  1616. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  1617. ' Name:    WSManCommandLineParser
  1618. ' Purpose: To Parse Command-Line Arguments and provide covenient access to all
  1619. '          WSMan specific arguments, named and unnamed, by making positional
  1620. '          effectively named
  1621. Class WSManCommandLineParser
  1622.     private m_op
  1623.     private m_commandLineParser
  1624.     private m_commandIndex
  1625.     private m_allowedOperations
  1626.     private m_allowedParameterNames
  1627.     private m_knownParameterNames
  1628.  
  1629.     Private Sub ErrorHandler(isFatal,errorMessage)
  1630.         WScript.StdErr.WriteLine GetResource("L_ERR_Message") & errorMessage
  1631.         If isFatal Then
  1632.             WScript.Quit(ERR_GENERAL_FAILURE)
  1633.         End If
  1634.     End Sub
  1635.     
  1636.     Private Sub LoadOperations
  1637.         m_allowedOperations.Add OP_GET, 1
  1638.         m_allowedOperations.Add OP_PUT, 1  
  1639.         '#ifdef URI_SECURITY_FEATURE
  1640.         'we allow configsddl to take a param and allow createsddlalso
  1641.         'm_allowedOperations.Add OP_CONFIGSDDL, 1     
  1642.         'm_allowedOperations.Add OP_CREATESDDL, 1
  1643.         '#else
  1644.         'no params for configsddl              
  1645.         m_allowedOperations.Add OP_CONFIGSDDL, 0
  1646.         m_allowedOperations.Add OP_CRE, 1
  1647.         m_allowedOperations.Add OP_DEL, 1
  1648.         m_allowedOperations.Add OP_ENU, 1
  1649.         m_allowedOperations.Add OP_INV, 2
  1650.         m_allowedOperations.Add OP_IDENTIFY, 0
  1651.         m_allowedOperations.Add OP_QUICKCONFIG, 0
  1652.         m_allowedOperations.Add OP_HELPMSG, 1
  1653.     End Sub
  1654.  
  1655.     Private Sub LoadAllowedParameters(op)
  1656.         m_allowedParameterNames.Add NPARA_HELP,true
  1657.  
  1658.         If (op = OP_QUICKCONFIG) Then
  1659.             m_allowedParameterNames.Add NPARA_QUIET,true
  1660.             m_allowedParameterNames.Add NPARA_TRANSPORT,true
  1661.         elseif (op = OP_IDENTIFY) Then
  1662.             m_allowedParameterNames.Add NPARA_USERNAME,true
  1663.             m_allowedParameterNames.Add NPARA_PASSWORD,true
  1664.             m_allowedParameterNames.Add NPARA_CERT,true
  1665.             m_allowedParameterNames.Add NPARA_REMOTE,true
  1666.             m_allowedParameterNames.Add NPARA_NOCACHK,true
  1667.             m_allowedParameterNames.Add NPARA_NOCNCHK,true
  1668.             m_allowedParameterNames.Add NPARA_SPNPORT,true
  1669.             m_allowedParameterNames.Add NPARA_TIMEOUT,true
  1670.             m_allowedParameterNames.Add NPARA_AUTH,true
  1671.             m_allowedParameterNames.Add NPARA_UNENCRYPTED,true
  1672.             m_allowedParameterNames.Add NPARA_ENCODING,true
  1673.             m_allowedParameterNames.Add NPARA_FORMAT,true        
  1674.         Else
  1675.             m_allowedParameterNames.Add NPARA_USERNAME,true
  1676.             m_allowedParameterNames.Add NPARA_PASSWORD,true
  1677.             m_allowedParameterNames.Add NPARA_CERT,true
  1678.             m_allowedParameterNames.Add NPARA_DIALECT,true
  1679.             m_allowedParameterNames.Add NPARA_FILE,true
  1680.             m_allowedParameterNames.Add NPARA_FILTER,true
  1681.             m_allowedParameterNames.Add NPARA_REMOTE,true
  1682.             m_allowedParameterNames.Add NPARA_NOCACHK,true
  1683.             m_allowedParameterNames.Add NPARA_NOCNCHK,true
  1684.             m_allowedParameterNames.Add NPARA_SPNPORT,true
  1685.             m_allowedParameterNames.Add NPARA_TIMEOUT,true
  1686.             m_allowedParameterNames.Add NPARA_AUTH,true
  1687.             m_allowedParameterNames.Add NPARA_UNENCRYPTED,true
  1688.             m_allowedParameterNames.Add NPARA_ENCODING,true
  1689.             m_allowedParameterNames.Add NPARA_FORMAT,true
  1690.             m_allowedParameterNames.Add NPARA_OPTIONS,true
  1691.             m_allowedParameterNames.Add NPARA_FRAGMENT,true
  1692.         End If
  1693.  
  1694.         if (op = OP_ENU) Then
  1695.             m_allowedParameterNames.Add NPARA_RETURN_TYPE,true
  1696.             m_allowedParameterNames.Add NPARA_SHALLOW,true
  1697.             m_allowedParameterNames.Add NPARA_BASE_PROPS_ONLY,true
  1698.         End If
  1699.         
  1700.         m_knownParameterNames.Add NPARA_HELP,true
  1701.         m_knownParameterNames.Add NPARA_QUIET,true
  1702.         m_knownParameterNames.Add NPARA_TRANSPORT,true
  1703.         m_knownParameterNames.Add NPARA_USERNAME,true
  1704.         m_knownParameterNames.Add NPARA_PASSWORD,true
  1705.         m_knownParameterNames.Add NPARA_CERT,true
  1706.         m_knownParameterNames.Add NPARA_DIALECT,true
  1707.         m_knownParameterNames.Add NPARA_FILE,true
  1708.         m_knownParameterNames.Add NPARA_FILTER,true
  1709.         m_knownParameterNames.Add NPARA_REMOTE,true
  1710.         m_knownParameterNames.Add NPARA_NOCACHK,true
  1711.         m_knownParameterNames.Add NPARA_NOCNCHK,true
  1712.         m_knownParameterNames.Add NPARA_SPNPORT,true
  1713.         m_knownParameterNames.Add NPARA_TIMEOUT,true
  1714.         m_knownParameterNames.Add NPARA_AUTH,true
  1715.         m_knownParameterNames.Add NPARA_UNENCRYPTED,true
  1716.         m_knownParameterNames.Add NPARA_ENCODING,true
  1717.         m_knownParameterNames.Add NPARA_FORMAT,true
  1718.         m_knownParameterNames.Add NPARA_OPTIONS,true
  1719.         m_knownParameterNames.Add NPARA_FRAGMENT,true
  1720.         m_knownParameterNames.Add NPARA_RETURN_TYPE,true
  1721.         m_knownParameterNames.Add NPARA_SHALLOW,true
  1722.         m_knownParameterNames.Add NPARA_BASE_PROPS_ONLY,true
  1723.     End Sub
  1724.  
  1725.     Public Function ValidateArguments()
  1726.         Dim unnamedCount
  1727.         Dim unnamedCountExpected
  1728.         Dim valid 
  1729.         Dim index
  1730.         valid = True
  1731.  
  1732.         m_op = LCase(Argument(NPARA_PSEUDO_OPERATION))
  1733.         If (Not m_allowedOperations.Exists(m_op)) Then
  1734.             ErrorHandler True, GetResource("L_UNKOPNM_Message") & "'" & m_op & "'"
  1735.         End If
  1736.  
  1737.         LoadAllowedParameters m_op
  1738.  
  1739.         'Make sure there the right number of unnamed arguments based upon op
  1740.         unnamedCount = m_commandLineParser.UnnamedCount - m_commandIndex
  1741.         unnamedCountExpected = m_allowedOperations(m_op) + 2
  1742.         'Remove @{} from count
  1743.         If (ArgumentExists(NPARA_PSEUDO_AT)) Then
  1744.             unnamedCount = unnamedCount - 1
  1745.         End If
  1746.         If (unnamedCount <> unnamedCountExpected) Then
  1747.             valid = False
  1748.         End If
  1749.  
  1750.         'Make sure the unnamed parameters come first
  1751.         If (m_commandLineParser.FirstSwitchIndex <= unnamedCountExpected) Then
  1752.             If (m_commandLineParser.FirstSwitchIndex > 0) Then
  1753.                 valid = False
  1754.             End If
  1755.         End If
  1756.  
  1757.         If (ArgumentExists(NPARA_PSEUDO_AT) Or ArgumentExists(NPARA_FILE)) Then
  1758.             If (operation <> OP_INV And operation <> OP_CRE And operation <> OP_PUT) Then
  1759.                 ErrorHandler True, L_OpDoesntAcceptInput_ErrorMessage
  1760.             End If
  1761.         End If
  1762.  
  1763.         'loop through all named parameters and make sure they are in the allowed list
  1764.         For index = 0 To m_commandLineParser.NamedCount - 1
  1765.             If Not m_knownParameterNames.Exists(LCase(m_commandLineParser.NamedKeyByIndex(index))) Then
  1766.                 valid = False
  1767.                 ErrorHandler False, GetResource("L_UNKOPT_ErrorMessage") & m_commandLineParser.NamedKeyByIndex(index)
  1768.             Elseif Not m_allowedParameterNames.Exists(LCase(m_commandLineParser.NamedKeyByIndex(index))) Then
  1769.                 valid = False
  1770.                 ErrorHandler False, GetResource("L_INVOPT_ErrorMessage") & m_commandLineParser.NamedKeyByIndex(index)
  1771.             End If
  1772.         Next
  1773.         If Not valid Then
  1774.             ErrorHandler True,L_UNKOPT_GenMessage & m_commandLineParser.NamedKeyByIndex(index)
  1775.         End If
  1776.     End Function
  1777.  
  1778.     Private Sub Class_Initialize()
  1779.         Set m_commandLineParser = New CommandLineParser
  1780.         Set m_allowedOperations     = CreateObject("Scripting.Dictionary")
  1781.         Set m_allowedParameterNames = CreateObject("Scripting.Dictionary")
  1782.         Set m_knownParameterNames   = CreateObject("Scripting.Dictionary")
  1783.         m_commandIndex = 0
  1784.         LoadOperations
  1785.     End Sub
  1786.  
  1787.     Public Function Operation()
  1788.         Operation = m_op
  1789.     End Function
  1790.  
  1791.     Public Function ArgumentExists(argumentName)
  1792.         Dim index
  1793.         ArgumentExists = False
  1794.         If LCase(argumentName) = NPARA_PSEUDO_COMMAND Then
  1795.             ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex)
  1796.         ElseIf LCase(argumentName) = NPARA_PSEUDO_OPERATION Then
  1797.             ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex + 1)
  1798.         ElseIf LCase(argumentName) = NPARA_PSEUDO_ACTION Then
  1799.             If LCase(m_commandLineParser.UnnamedValue(m_commandIndex + 1)) = OP_INV Then
  1800.                 ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex + 2)
  1801.             End If
  1802.         ElseIf LCase(argumentName) = NPARA_PSEUDO_RESOURCE Then
  1803.             If LCase(m_commandLineParser.UnnamedValue(m_commandIndex + 1)) = OP_INV Then
  1804.                 ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex + 3)
  1805.             Else
  1806.                 ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex + 2)
  1807.             End If
  1808.         ElseIf argumentName = NPARA_PSEUDO_AT Then
  1809.             For index = m_commandIndex To m_commandLineParser.UnnamedCount - 1
  1810.                 If Mid(m_commandLineParser.UnnamedValue(index),1,1) = NPARA_PSEUDO_AT Then
  1811.                     ArgumentExists = True
  1812.                     Exit For
  1813.                 End If
  1814.             Next
  1815.         Else
  1816.             ArgumentExists = m_commandLineParser.NamedExists(argumentName)
  1817.         End If
  1818.     End Function
  1819.  
  1820.     Public Function Argument(argumentName)
  1821.         Dim index
  1822.         If IsNumeric(argumentName) Then
  1823.             Argument = m_commandLineParser.PositionName(argumentName + m_commandIndex)
  1824.         ElseIf LCase(argumentName) = NPARA_PSEUDO_COMMAND Then
  1825.             Argument = m_commandLineParser.UnnamedValue(m_commandIndex)
  1826.         ElseIf LCase(argumentName) = NPARA_PSEUDO_OPERATION Then
  1827.             Argument = m_commandLineParser.UnnamedValue(m_commandIndex + 1)
  1828.         ElseIf LCase(argumentName) = NPARA_PSEUDO_ACTION Then
  1829.             If LCase(m_commandLineParser.UnnamedValue(m_commandIndex + 1)) = OP_INV Then
  1830.                 Argument = m_commandLineParser.UnnamedValue(m_commandIndex + 2)
  1831.             Else
  1832.                 Argument = ""
  1833.             End If
  1834.         ElseIf LCase(argumentName) = NPARA_PSEUDO_RESOURCE Then
  1835.             If LCase(m_commandLineParser.UnnamedValue(m_commandIndex + 1)) = OP_INV Then
  1836.                 Argument = m_commandLineParser.UnnamedValue(m_commandIndex + 3)
  1837.             Else
  1838.                 Argument = m_commandLineParser.UnnamedValue(m_commandIndex + 2)
  1839.             End If
  1840.         ElseIf argumentName = NPARA_PSEUDO_AT Then
  1841.             For index = m_commandIndex To m_commandLineParser.UnnamedCount - 1
  1842.                 If Mid(m_commandLineParser.UnnamedValue(index),1,1) = NPARA_PSEUDO_AT Then
  1843.                     Argument = Mid(m_commandLineParser.UnnamedValue(index),2)
  1844.                     Exit For
  1845.                 Else
  1846.                     Argument = ""
  1847.                 End If
  1848.             Next
  1849.         Else
  1850.             Argument = m_commandLineParser.NamedValue(argumentName)
  1851.             If argumentName = NPARA_FORMAT Then
  1852.                 If (Mid(Argument,1,1) = "#") Then
  1853.                    Argument = Mid(Argument,2)
  1854.                 End If
  1855.             End If
  1856.         End If
  1857.     End Function
  1858.         
  1859.     Public Function Count
  1860.         Count = m_commandLineParser.Count - m_commandIndex
  1861.     End Function
  1862.  
  1863.     Public Function Parse(commandLineStr)
  1864.         Dim rval
  1865.         Dim index
  1866.         rval = m_commandLineParser.Parse(commandLineStr)
  1867.         If rval Then
  1868.             rval = False
  1869.             For index = 0 To m_commandLineParser.UnnamedCount - 1
  1870.                 If InStr(LCase(m_commandLineParser.UnnamedValue(index)),"winrm.vbs") > 0 Then
  1871.                     m_commandIndex = index
  1872.                     rval = True
  1873.                     Exit For
  1874.                 End If
  1875.             Next
  1876.             If Not rval Then
  1877.                 ErrorHandler True, GetResource("L_ScriptNameNotFound_ErrorMessage")
  1878.             End If
  1879.         End If
  1880.         Parse = rval
  1881.     End Function
  1882.  
  1883. End Class
  1884.  
  1885.  
  1886. '''''''''''''''''''''    
  1887. ' Removes ?params part from URI
  1888.  
  1889. private function StripParams(uri)
  1890.     
  1891.     dim qmpos
  1892.     
  1893.     ASSERTBOOL Len(uri) <> 0, GetResource("L_URIZERO_Message")
  1894.     
  1895.     qmpos = InStr(uri, "?")
  1896.     if qmpos <> 0 then
  1897.         StripParams = Left(uri, qmpos - 1)
  1898.     else
  1899.         StripParams = uri
  1900.     end if
  1901.  
  1902.       
  1903. end function
  1904.  
  1905. '''''''''''''''''''''    
  1906. ' Enumerate helper
  1907.  
  1908. private function Enumerate(wsmanObj, session, cmdlineOptions, resLocator, formatOption)
  1909.     dim filter
  1910.     dim dialect
  1911.     dim e
  1912.     dim res
  1913.     dim formattedText
  1914.     dim flags
  1915.     
  1916.     flags = 0
  1917.      
  1918.     if cmdlineOptions.ArgumentExists(NPARA_FILTER) then
  1919.         filter = cmdlineOptions.Argument(NPARA_FILTER)
  1920.         dialect = URI_WQL_DIALECT
  1921.     end if
  1922.     
  1923.     if cmdlineOptions.ArgumentExists(NPARA_DIALECT) then
  1924.         dialect = cmdlineOptions.Argument(NPARA_DIALECT)
  1925.     end if
  1926.     
  1927.     If LCase(dialect) = "selector" Then
  1928.         dialect = "http://schemas.dmtf.org/wbem/wsman/1/wsman/SelectorFilter"
  1929.         dim dict
  1930.         set dict = ProcessParameterHash(filter)
  1931.         If dict Is Nothing Then
  1932.             Exit Function
  1933.         End If
  1934.  
  1935.         Dim name
  1936.         Dim value
  1937.         filter = "<wsman:SelectorSet xmlns:wsman='http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'>"
  1938.         For Each name In dict
  1939.             value = dict(name)
  1940.             filter = filter & "<wsman:Selector Name='" & Escape(name) & "'>" & Escape(value) & "</wsman:Selector>"
  1941.         Next
  1942.         filter = filter & "</wsman:SelectorSet>"
  1943.     End If
  1944.     If LCase(dialect) = "wql" Then
  1945.         dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
  1946.     End If
  1947.  
  1948.     if cmdlineOptions.ArgumentExists(NPARA_RETURN_TYPE) then
  1949.         select case LCase(cmdlineOptions.Argument(NPARA_RETURN_TYPE))
  1950.             case VAL_RT_OBJECT
  1951.                 ' default
  1952.             case VAL_RT_EPR
  1953.                 flags = wsmanObj.EnumerationFlagReturnEPR
  1954.             case VAL_RT_OBJ_EPR
  1955.                 flags = wsmanObj.EnumerationFlagReturnObjectAndEPR
  1956.             case else
  1957.                 ASSERTBOOL false, "-" & NPARA_RETURN_TYPE & ":" & cmdlineOptions.Argument(NPARA_RETURN_TYPE) & " is not a valid option"
  1958.         end select
  1959.     end if
  1960.     
  1961.     if (cmdlineOptions.ArgumentExists(NPARA_SHALLOW)) then
  1962.         flags = flags OR wsmanObj.EnumerationFlagHierarchyShallow
  1963.     elseif (cmdlineOptions.ArgumentExists(NPARA_BASE_PROPS_ONLY)) then
  1964.         flags = flags OR wsmanObj.EnumerationFlagHierarchyDeepBasePropsOnly
  1965.     else
  1966.         flags = flags OR wsmanObj.EnumerationFlagHierarchyDeep
  1967.     end if
  1968.     
  1969.     on error resume next
  1970.     set e = session.Enumerate(resLocator, filter, dialect, flags)
  1971.     if Err.Number = T_O then
  1972.         set e = session.Enumerate(resLocator, filter, dialect, flags)
  1973.         if Err.Number = T_O then
  1974.             set e = session.Enumerate(resLocator, filter, dialect, flags)
  1975.         end if
  1976.     end if
  1977.     ASSERTERR session, formatOption
  1978.     on error goto 0
  1979.     
  1980.     if cmdlineOptions.ArgumentExists(NPARA_TIMEOUT) then
  1981.         e.Timeout = cmdlineOptions.Argument(NPARA_TIMEOUT)
  1982.     end if
  1983.  
  1984.     if(LCase(formatOption) <> VAL_FORMAT_TEXT) then
  1985.         wscript.echo "<wsman:Results xmlns:wsman=""http://schemas.dmtf.org/wbem/wsman/1/wsman/results"">"
  1986.     end if
  1987.     
  1988.     do while Not e.AtEndOfStream
  1989.         on error resume next
  1990.         res = e.ReadItem()
  1991.         if Err.Number = T_O then
  1992.             res = e.ReadItem()
  1993.             if Err.Number = T_O then
  1994.                 res = e.ReadItem()
  1995.             end if
  1996.         end if
  1997.         if Err.Number <> 0 then
  1998.             stdErr.WriteLine e.Error
  1999.             wscript.echo "</wsman:Results>"
  2000.         end if
  2001.         ASSERTERR e, formatOption
  2002.         on error goto 0
  2003.         
  2004.         'reformat if requested
  2005.         on error resume next
  2006.         err.clear
  2007.         if not Reformat(res,formattedText,formatOption) then
  2008.             exit do
  2009.         end if
  2010.         wscript.echo formattedText
  2011.     loop        
  2012.     
  2013.     if(LCase(formatOption) <> VAL_FORMAT_TEXT) then
  2014.         wscript.echo "</wsman:Results>"
  2015.     end if
  2016.            
  2017.     set e = Nothing 
  2018.     Enumerate = ""
  2019. end function
  2020.  
  2021. '''''''''''''''''''''    
  2022. private function GetSuffix(resUri)
  2023.     ASSERTBOOL Len(resUri) <> 0, GetResource("L_URIZERO_Message")
  2024.  
  2025.     GetSuffix = "_INPUT"
  2026. end function
  2027.  
  2028. '''''''''''''''''''''    
  2029. ' QuickConfig helper
  2030. Private Function QuickConfig(session, cmdlineOptions)
  2031.     Dim analysisInputXml
  2032.     Dim analysisOutputXml
  2033.     Dim analysisOutput
  2034.     Dim transport
  2035.         
  2036.     If (Not cmdlineOptions.ArgumentExists(NPARA_TRANSPORT)) Then
  2037.         transport = "http"
  2038.     Else
  2039.         transport = cmdlineOptions.Argument(NPARA_TRANSPORT)
  2040.     End If
  2041.  
  2042.     analysisInputXml = "<Analyze_INPUT xmlns=""http://schemas.microsoft.com/wbem/wsman/1/config/service""><Transport>" & transport & "</Transport></Analyze_INPUT>"
  2043.     On Error Resume Next
  2044.     analysisOutputXml = sessionObj.Invoke("Analyze", "winrm/config/service", analysisInputXml)
  2045.     If Err.Number <> 0 Then
  2046.         Exit Function
  2047.     End If
  2048.  
  2049. 'wscript.echo analysisOutputXml
  2050.  
  2051.     On Error Resume Next
  2052.     Set analysisOutput = CreateObject("MSXML2.DOMDocument.3.0")
  2053.     If Err.number <> 0 Then
  2054.         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_MSXML3MISSING_Message")
  2055.         Exit Function
  2056.     End If
  2057.  
  2058.     analysisOutput.LoadXML(analysisOutputXml)
  2059.     If (analysisOutput.parseError.errorCode <> 0) Then
  2060.         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_XMLERROR_Message") & paramXmlFile.parseError.reason
  2061.         Exit Function
  2062.     End If
  2063.  
  2064.     Dim xpathEnabled
  2065.     Dim xpathText
  2066.     Dim xpathUpdate
  2067.     xpathEnabled = "/s:Analyze_OUTPUT/s:RemotingEnabled"
  2068.     xpathText    = "/s:Analyze_OUTPUT/s:Results"
  2069.     xpathUpdate  = "/s:Analyze_OUTPUT/s:EnableRemoting_INPUT"
  2070.  
  2071.     Dim enabled
  2072.     Dim displayText
  2073.     Dim updateInputXml
  2074.     enabled = GetElementByXpath(analysisOutput, xpathEnabled)
  2075.     If (enabled = "true") Then
  2076.         stdOut.WriteLine GetResource("L_QuickConfigNoChangesNeeded_Message")
  2077.         Exit Function
  2078.     End If
  2079.     If (enabled <> "false") Then
  2080.         stdErr.WriteLine GetResource("L_QuickConfig_InvalidBool_0_ErrorMessage")
  2081.         Exit Function
  2082.     End If
  2083.  
  2084.     displayText    = GetElementByXpath(analysisOutput, xpathText)
  2085.     updateInputXml = GetElementByXpath(analysisOutput, xpathUpdate)
  2086.  
  2087. 'wscript.echo updateInputXml
  2088.     
  2089.     If (updateInputXml = "" OR displayText = "") Then
  2090.         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_QuickConfig_MissingUpdateXml_0_ErrorMessage")
  2091.         Exit Function
  2092.     End If 
  2093.     
  2094.     stdOut.writeline GetResource("L_QuickConfig_UpdatesNeeded_0_Message")
  2095.     stdOut.writeline GetResource("L_QuickConfig_UpdatesNeeded_1_Message")
  2096.     stdOut.writeline ""
  2097.     stdOut.writeline displayText
  2098.     stdOut.writeline ""
  2099.  
  2100.     If (Not cmdlineOptions.ArgumentExists(NPARA_QUIET)) Then
  2101.         stdOut.write     GetResource("L_QuickConfig_Prompt_0_Message")
  2102.         dim answer
  2103.         answer = LCase(stdIn.ReadLine)
  2104.         If answer <> "y" And answer <> "yes" Then
  2105.             Exit Function
  2106.         End If
  2107.         stdOut.writeline ""
  2108.     End If
  2109.  
  2110.     Dim updateOutputXml
  2111.     On Error Resume Next
  2112.     updateOutputXml = sessionObj.Invoke("EnableRemoting", "winrm/config/service", updateInputXml)
  2113.     If Err.Number <> 0 Then
  2114.         Exit Function
  2115.     End If
  2116.  
  2117. 'wscript.echo updateOutputXml
  2118.  
  2119.     Dim updateOutput
  2120.  
  2121.     On Error Resume Next
  2122.     Set updateOutput = CreateObject("MSXML2.DOMDocument.3.0")
  2123.     If Err.number <> 0 Then
  2124.         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_MSXML3MISSING_Message")
  2125.         Exit Function
  2126.     End If
  2127.  
  2128.     updateOutput.LoadXML(updateOutputXml)
  2129.     If (updateOutput.parseError.errorCode <> 0) Then
  2130.         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_XMLERROR_Message") & paramXmlFile.parseError.reason
  2131.         Exit Function
  2132.     End If
  2133.  
  2134.     Dim xpathStatus
  2135.     Dim xpathResult
  2136.     xpathStatus = "/s:EnableRemoting_OUTPUT/s:Status"
  2137.     xpathResult = "/s:EnableRemoting_OUTPUT/s:Results"
  2138.  
  2139.     Dim status
  2140.     Dim resultText
  2141.     status     = GetElementByXpath(updateOutput, xpathStatus)
  2142.     resultText = GetElementByXpath(updateOutput, xpathResult)
  2143.     If (status = "succeeded") Then
  2144.         stdOut.WriteLine GetResource("L_QuickConfigUpdated_Message")
  2145.     Else
  2146.         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_QuickConfigUpdateFailed_ErrorMessage")
  2147.     End If
  2148.  
  2149.     If (resultText <> "") Then
  2150.         stdOut.WriteLine ""
  2151.         stdOut.WriteLine resultText
  2152.     End If
  2153.  
  2154. End Function
  2155.  
  2156. '''''''''''''''''''''    
  2157. ' Helper to run xpath over msxml obj and find single element
  2158. Private Function GetElementByXpath(msxmlObj, xpath)
  2159.     GetElementByXpath = ""
  2160.  
  2161.     msxmlObj.setProperty "SelectionLanguage", "XPath" 
  2162.     msxmlObj.setproperty "SelectionNamespaces", "xmlns:s=""http://schemas.microsoft.com/wbem/wsman/1/config/service""" 
  2163.  
  2164.     Dim elementList
  2165.     Dim currentElement
  2166.  
  2167.     Set currentElement = msxmlObj.selectSingleNode(xpath)
  2168.     If Not currentElement is Nothing Then
  2169.         If currentElement.hasChildNodes() Then
  2170.             If currentElement.childNodes.length = 1 Then
  2171.                 dim aNode
  2172.                 Set aNode = currentElement.childNodes.nextNode()
  2173.                 If aNode.nodeType = NODE_TEXT Then
  2174.                     GetElementByXpath = aNode.text
  2175.                     Exit Function
  2176.                 End If
  2177.             End If
  2178.         End If
  2179.         GetElementByXpath = currentElement.xml
  2180.     End If
  2181.     Exit Function
  2182.  
  2183.     Set elementList = msxmlObj.selectNodes(xpath)
  2184.     If elementList.length = 1 Then
  2185.         Set currentElement = elementList.nextNode()
  2186.         If currentElement.nodeType = NODE_TEXT Then
  2187.             GetElementByXpath = currentElement.text
  2188.         Else
  2189.             GetElementByXpath = currentElement.xml
  2190.         End If
  2191.     End If
  2192. End Function
  2193.  
  2194. '''''''''''''''''''''    
  2195. ' Returns XML ns depending on the type of URI
  2196.  
  2197. private function GetXmlNs(resUri)
  2198.     dim resUriLCase
  2199.     dim s1
  2200.     dim s2
  2201.     
  2202.     ASSERTBOOL Len(resUri) <> 0, GetResource("L_URIZERO_Message")
  2203.  
  2204.     resUriLCase = LCase(resUri)
  2205.  
  2206.     if InStr(resUriLCase, URI_IPMI) <> 0 then
  2207.         GetXmlNs = StripParams(resUri)
  2208.     elseif InStr(resUriLCase, URI_WMI) <> 0 then
  2209.         GetXmlNs = StripParams(resUri)
  2210.     else 
  2211.         GetXmlNs = StripParams(resUri) & ".xsd"
  2212.     end if
  2213.     
  2214.     GetXmlNs = "xmlns:p=""" & GetXmlNs & """"
  2215. end function
  2216.  
  2217. '''''''''''''''''''''    
  2218. ' Verify if target is in IPv6 format
  2219.  
  2220. private function IsIPv6(target)
  2221.     dim regexpObj
  2222.     Set regexpObj = New RegExp
  2223.  
  2224.     regexpObj.Pattern = PTRN_IPV6_S
  2225.     regexpObj.IgnoreCase = TRUE
  2226.     dim matches
  2227.     set matches = regExpObj.Execute(target)
  2228.     if matches.Count <> 0 then
  2229.         IsIPv6 = true
  2230.     else 
  2231.         IsIPv6 = false
  2232.     end if
  2233. end function
  2234.  
  2235. '''''''''''''''''''''    
  2236. ' Extracts XML root node nm. from URI
  2237.  
  2238. private function GetRootNodeName(opr, resUri, actUri)
  2239.     dim uriTmp
  2240.     dim sfx
  2241.     dim s
  2242.  
  2243.     dim regexpObj
  2244.     Set regexpObj = New RegExp
  2245.          
  2246.     ASSERTBOOL Len(opr) <> 0, "'opr' parameter is 0 length or null"    
  2247.     
  2248.     sfx = ""
  2249.     select case opr
  2250.         case OP_PUT 
  2251.             uriTmp = resUri     
  2252.         case OP_CRE
  2253.             uriTmp = resUri
  2254.         case OP_INV
  2255.             uriTmp = actUri
  2256.             sfx = GetSuffix(resUri)
  2257.         case else 
  2258.             GetRootNodeName = ""
  2259.             exit function
  2260.     end select
  2261.     ASSERTBOOL Len(uriTmp) <> 0, GetResource("L_URIZERO_Message")
  2262.  
  2263.     uriTmp = StripParams(uriTmp)
  2264.  
  2265.     regexpObj.Pattern = PTRN_URI_LAST
  2266.     regexpObj.IgnoreCase = TRUE
  2267.     dim matches
  2268.     set matches = regexpObj.Execute(uriTmp)
  2269.     ASSERTBOOL matches.Count = 1, GetResource("L_NOLASTTOK_Message")
  2270.  
  2271.     uriTmp = matches(0)
  2272.     ASSERTBOOL Len(uriTmp) <> 0, GetResource("L_URIZEROTOK_Message")
  2273.              
  2274.     GetRootNodeName = uriTmp & sfx
  2275. end function
  2276.  
  2277. private function ProcessParameterHash(hashString)
  2278.     on error resume next    
  2279.     dim matches
  2280.     dim m
  2281.  
  2282.     dim regexpObj
  2283.  
  2284.     Set regexpObj = New RegExp
  2285.     regexpObj.Global = True
  2286.     regexpObj.IgnoreCase = True
  2287.  
  2288.     dim resultDictionary
  2289.     set resultDictionary = CreateObject("Scripting.Dictionary")
  2290.  
  2291.     
  2292.     If Len(hashString) > 0 then    
  2293.         If Len(hashString) > 2 Then
  2294.             If Mid(hashString,1,1) <> "{" Or Mid(hashString,Len(hashString),1) <> "}" Then
  2295.                 stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
  2296.                 set ProcessParameterHash = Nothing
  2297.                 Exit Function
  2298.             End If
  2299.  
  2300.             regexpObj.Pattern = PTRN_HASH_VALIDATE
  2301.             regexpObj.ignoreCase = true
  2302.             set matches = regexpObj.Execute(hashString)
  2303.             if matches.Count <> 1 then
  2304.                 stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
  2305.                 set ProcessParameterHash = Nothing
  2306.                 Exit Function
  2307.             end if
  2308.         
  2309.             regexpObj.Pattern = PTRN_HASH_TOK
  2310.             regexpObj.ignoreCase = true
  2311.             set matches = regexpObj.Execute(hashString)
  2312.             if matches.Count > 0 then
  2313.                 for each m in matches
  2314.                     if resultDictionary.Exists(m.Submatches(0)) then
  2315.                         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOARRAY_Message") & m.Submatches(0)
  2316.                         set ProcessParameterHash = Nothing
  2317.                         Exit Function
  2318.                     end if
  2319.                     if LCase(m.Submatches(1)) = "$null" then
  2320.                         resultDictionary.Add m.Submatches(0),null
  2321.                     else
  2322.                         resultDictionary.Add m.Submatches(0),m.Submatches(2)
  2323.                     end if
  2324.                 next
  2325.             end if
  2326.         ElseIf hashString <> "{}" Then
  2327.             stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
  2328.             set ProcessParameterHash = Nothing
  2329.             Exit Function
  2330.         End If
  2331.     Else
  2332.         stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
  2333.         set ProcessParameterHash = Nothing
  2334.         Exit Function
  2335.     End If
  2336.         
  2337.     set ProcessParameterHash = resultDictionary
  2338. end function
  2339.  
  2340.  
  2341. private function CreateAndInitializeResourceLocator(wsman,resourceUri,cmdlineOptions)
  2342.     on error resume next
  2343.     
  2344.     Dim key
  2345.     dim resourceLocator
  2346.     dim paramMap
  2347.     Dim optionsValue
  2348.  
  2349.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2350.     ' create the resource locator object
  2351.  
  2352.     Set resourceLocator = Wsman.CreateResourceLocator(resourceUri)
  2353.     if Err.number <> 0 then
  2354.         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_RESOURCELOCATOR_Message")
  2355.         set CreateAndInitializeResourceLocator = Nothing
  2356.         exit function
  2357.     end if
  2358.  
  2359.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2360.     ' set the options on the resource locator
  2361.     optionsValue = cmdlineOptions.Argument("options")
  2362.     If Len(optionsValue) Then
  2363.         set paramMap = ProcessParameterHash(optionsValue)
  2364.         if paramMap Is Nothing then
  2365.             set CreateAndInitializeResourceLocator = Nothing
  2366.             'todo exit function
  2367.         end if
  2368.         for each key in paramMap
  2369.             if IsNull(paramMap(key)) then
  2370.                 resourceLocator.AddOption key, null
  2371.             else
  2372.                 resourceLocator.AddOption key,paramMap(key)
  2373.             end if
  2374.         next
  2375.     End If
  2376.  
  2377.     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2378.     ' set the fragment path and fragment dialect on the resource locator
  2379.  
  2380.     if(cmdlineOptions.ArgumentExists(NPARA_FRAGMENT)) then
  2381.         resourceLocator.FragmentPath = cmdlineOptions.Argument(NPARA_FRAGMENT)
  2382.     end if
  2383.     if(cmdlineOptions.ArgumentExists(NPARA_DIALECT)) then
  2384.         resourceLocator.FragmentDialect = cmdlineOptions.Argument(NPARA_DIALECT)
  2385.     end if
  2386.  
  2387.     set CreateAndInitializeResourceLocator = resourceLocator
  2388. end function
  2389.  
  2390.  
  2391.  
  2392. '''''''''''''''''''''    
  2393. ' Reads input XML from the stdin or builds XML from @{...}
  2394.  
  2395. private function ProcessInput(wsman, operation, root, cmdlineOptions, resourceLocator,sessionObj,inputStr,formatOption)
  2396.     on error resume next
  2397.     
  2398.     dim parameterDic,key
  2399.     
  2400.     dim putStr
  2401.     dim elementList
  2402.     dim currentElement
  2403.     dim paramXmlFile
  2404.     dim tmpNode
  2405.     dim parameterString
  2406.     dim parameterCount
  2407.     dim xmlns
  2408.     
  2409.     'make sure it's a relevent operation
  2410.     select case operation
  2411.         case OP_PUT 
  2412.         case OP_CRE
  2413.         case OP_INV
  2414.         case else 
  2415.             inputStr = ""
  2416.             ProcessInput = true
  2417.             exit function
  2418.     end select
  2419.  
  2420.     xmlns = GetXmlNs(resourceLocator.ResourceURI)
  2421.  
  2422.     'process the parameters into a Map
  2423.     parameterString = cmdlineOptions.Argument(NPARA_PSEUDO_AT)
  2424.     parameterCount = 0
  2425.     If Len(parameterString) Then
  2426.         set parameterDic = ProcessParameterHash(parameterString)
  2427.         'if parameter processing failed, exit
  2428.         if parameterDic Is Nothing then
  2429.             set ProcessInput = false
  2430.             exit function
  2431.         end if
  2432.         parameterCount = parameterDic.Count
  2433.     End If
  2434.     
  2435.     'if there were no parameters, get from file
  2436.     if parameterCount = 0 then 
  2437.         if cmdlineOptions.ArgumentExists(NPARA_FILE) then
  2438.             inputStr = ReadFile(cmdlineOptions.Argument(NPARA_FILE))
  2439.             ProcessInput = true
  2440.             exit function
  2441.         end if
  2442.     end if
  2443.  
  2444.     if operation = OP_CRE Or operation = OP_INV  then
  2445.         dim nilns
  2446.         nilns = ""
  2447.         dim parameters
  2448.         parameters = ""                
  2449.     if parameterCount > 0 then 
  2450.             for each key in parameterDic
  2451.                 parameters = parameters & "<p:" & key
  2452.                 if IsNull(parameterDic(key)) then
  2453.                     parameters = parameters & " " & ATTR_NIL
  2454.                     nilns = " " & NS_XSI
  2455.                 end if 
  2456.                 parameters = parameters & ">" & Escape(parameterDic(key)) & _
  2457.                     "</p:" & key & ">"                     
  2458.             next
  2459.         end if
  2460.  
  2461.         putStr = "<p:" & root & " " & xmlns & nilns & ">" & _
  2462.             parameters & "</p:" & root & ">"
  2463.  
  2464.     elseif operation = OP_PUT then
  2465.  
  2466.         if parameterCount = 0 then
  2467.                 stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOINPUT_Message")
  2468.             inputStr = ""
  2469.             ProcessInput = false
  2470.             exit function
  2471.         end if
  2472.         
  2473.         'get the original resource xml
  2474.         on error resume next
  2475.         putStr = sessionObj.Get(resourceLocator)
  2476.         if Err.Number <> 0 then
  2477.             ASSERTERR sessionObj, formatOption
  2478.             inputStr = ""
  2479.             ProcessInput = false
  2480.             exit function
  2481.         end if
  2482.         
  2483.         'create an MSXML DomDocument object to work with the resource xml
  2484.         on error resume next
  2485.         Set paramXmlFile = CreateObject("MSXML2.DOMDocument.3.0")
  2486.         if Err.number <> 0 then
  2487.             stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_MSXML3MISSING_Message")
  2488.             inputStr = ""
  2489.             ProcessInput = false
  2490.             exit function
  2491.         end if
  2492.         paramXmlFile.async = false
  2493.         
  2494.         'load the domdocument with the resource xml   
  2495.         paramXmlFile.LoadXML(putStr)
  2496.         if (paramXmlFile.parseError.errorCode <> 0) then
  2497.             stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_XMLERROR_Message") & paramXmlFile.parseError.reason
  2498.             inputStr = ""
  2499.             ProcessInput = false
  2500.             exit function
  2501.         end if
  2502.         paramXmlFile.setProperty "SelectionLanguage", "XPath" 
  2503.         
  2504.         'loop through the command-line name/value pairs
  2505.         for each key in parameterDic
  2506.            'find the elements matching the key
  2507.             Dim xpathString
  2508.             xpathString = "/*/*[local-name()=""" & key & """]"
  2509.             if LCase(key) = "location" then
  2510.                 'Ignore cim:Location
  2511.                 xpathString = "/*/*[local-name()=""" & key & """ and namespace-uri() != """ & NS_CIMBASE & """]"
  2512.             end if
  2513.             Set elementList = paramXmlFile.selectNodes(xpathString)
  2514.             
  2515.             'make sure there is 1 - error on 0 or > 1
  2516.             if elementList.length = 0 then
  2517.                 stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOMATCH_Message") & key
  2518.                 inputStr = ""
  2519.                 ProcessInput = false
  2520.                 Exit Function
  2521.             elseif elementList.length > 1 then
  2522.                 stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_MULTIMATCH_Message") & key
  2523.                 inputStr = ""
  2524.                 ProcessInput = false
  2525.                 Exit Function                  
  2526.             else      
  2527.                 'get the node from the list
  2528.                 Set currentElement = elementList.nextNode()
  2529.                 'make sure the node does not have anything other than 1 or less text children                    
  2530.                 if currentElement.hasChildNodes() then
  2531.                     if currentElement.childNodes.length > 1 then
  2532.                         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOTATTR_Message") & key
  2533.                         inputStr = ""
  2534.                         ProcessInput = false
  2535.                         Exit Function
  2536.                     else
  2537.                         dim aNode
  2538.                         Set aNode = currentElement.childNodes.nextNode()
  2539.                         if aNode.nodeType <> NODE_TEXT then
  2540.                             stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOTATTR_Message") & key
  2541.                             inputStr = ""
  2542.                             ProcessInput = false
  2543.                             Exit Function
  2544.                         end if
  2545.                     end if
  2546.                 end if
  2547.                 if IsNull(parameterDic(key)) then
  2548.                     Set tmpNode = paramXmlFile.createNode(NODE_ATTRIBUTE,ATTR_NIL_NAME,NS_XSI_URI)
  2549.                     tmpNode.text = "true"
  2550.                     currentElement.setAttributeNode tmpNode
  2551.                     currentElement.text = ""
  2552.                 else
  2553.                     'delete nil attribute if present
  2554.                     currentElement.attributes.removeNamedItem(ATTR_NIL_NAME)
  2555.                     currentElement.text = parameterDic(key)
  2556.                 end if
  2557.             end If        
  2558.         next
  2559.         putStr = paramXmlFile.xml
  2560.     end if
  2561.     inputStr = putStr
  2562.     ProcessInput = true
  2563. end function
  2564.  
  2565. private function ReadStdIn()
  2566.     while Not stdIn.AtEndOfStream
  2567.         ReadStdIn = ReadStdIn & stdIn.ReadAll
  2568.     wend
  2569. end function
  2570.  
  2571. '''''''''''''''''''''    
  2572. ' Escapes non XML chars
  2573.  
  2574. private function Escape(str)
  2575.     dim i 
  2576.     for i = 1 to Len(str)
  2577.         select case Mid(str, i, 1)
  2578.             case "&" 
  2579.                 Escape = Escape & "&"
  2580.             case "<"
  2581.                 Escape = Escape & "<"
  2582.             case ">"
  2583.                 Escape = Escape & ">"
  2584.             case """"
  2585.                 Escape = Escape & """
  2586.             case "'"
  2587.                 Escape = Escape & "'"
  2588.             case else 
  2589.                 Escape = Escape & Mid(str, i, 1)
  2590.         end select
  2591.     next
  2592. end function
  2593.  
  2594. '''''''''''''''''''''    
  2595. ' Checks if this script is running under cscript.exe
  2596.  
  2597. private function IsCScriptEnv()
  2598.     if InStrRev(LCase(WScript.FullName), "cscript.exe", -1) <> 0 then
  2599.         IsCScriptEnv = True
  2600.     else 
  2601.         IsCScriptEnv = False
  2602.     end if
  2603. end function
  2604.  
  2605. private function CreateSession(wsman, conStr, optDic, formatOption)
  2606.     dim sessionFlags
  2607.     dim conOpt 
  2608.     dim session
  2609.     dim authVal
  2610.     dim encodingVal
  2611.     dim encryptVal
  2612.     dim pw
  2613.     dim tout
  2614.      
  2615.     sessionFlags = 0
  2616.     set conOpt = Nothing
  2617.  
  2618.     if optDic.ArgumentExists(NPARA_ENCODING) then
  2619.         ASSERTNAL(NPARA_ENCODING)
  2620.         ASSERTBOOL optDic.ArgumentExists(NPARA_REMOTE), "The '-encoding' option is only valid when used with the '-remote' option"
  2621.         encodingVal = optDic.Argument(NPARA_ENCODING)
  2622.         if LCase(encodingVal) = "utf-8" then
  2623.             sessionFlags = sessionFlags OR wsman.SessionFlagUTF8
  2624.         elseif LCase(encodingVal) <> "utf-16" then    ' default is UTF-16, so no extra flags needed
  2625.             ' Invalid!  
  2626.             ASSERTBOOL false, "The specified encoding flag is invalid."
  2627.         end if
  2628.     end if
  2629.  
  2630.     if optDic.ArgumentExists(NPARA_UNENCRYPTED) then
  2631.         ASSERTBOOL optDic.ArgumentExists(NPARA_REMOTE),     "The '-" & NPARA_UNENCRYPTED & "' option is only valid when used with the '-remote' option"
  2632.         'C API will ensure that unencrypted is only used w/ http
  2633.         sessionFlags = sessionFlags OR wsman.SessionFlagNoEncryption
  2634.     end if
  2635.  
  2636.  
  2637.     if not optDic.ArgumentExists(NPARA_REMOTE) then
  2638.         ASSERTBOOL not optDic.ArgumentExists(NPARA_AUTH),     "The '-" & NPARA_AUTH & "' option is only valid when used with the '-remote' option"
  2639.         ASSERTBOOL not optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option is only valid when used with the '-remote' option"
  2640.         ASSERTBOOL not optDic.ArgumentExists(NPARA_PASSWORD), "The '-" & NPARA_PASSWORD & "' option is only valid when used with the '-remote' option"
  2641.         ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT),     "The '-" & NPARA_CERT & "' option is only valid when used with the '-remote' option"
  2642.         ASSERTBOOL not optDic.ArgumentExists(NPARA_NOCACHK),  "The '-" & NPARA_NOCACHK & "' option is only valid when used with the '-remote' option"
  2643.         ASSERTBOOL not optDic.ArgumentExists(NPARA_NOCNCHK),  "The '-" & NPARA_NOCNCHK & "' option is only valid when used with the '-remote' option"
  2644.         ASSERTBOOL not optDic.ArgumentExists(NPARA_SPNPORT),  "The '-" & NPARA_SPNPORT & "' option is only valid when used with the '-remote' option"
  2645.     elseif optDic.ArgumentExists(NPARA_AUTH) then
  2646.         ASSERTNAL(NPARA_AUTH)
  2647.         authVal = optDic.Argument(NPARA_AUTH)
  2648.         select case LCase(authVal)
  2649.             case VAL_NO_AUTH
  2650.                 sessionFlags = sessionFlags OR wsman.SessionFlagUseNoAuthentication
  2651.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT),     "The '-" & NPARA_CERT & "' option is not valid for '-auth:none'"
  2652.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option is not valid for '-auth:none'"
  2653.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_PASSWORD), "The '-" & NPARA_PASSWORD & "' option is only valid for '-auth:none'"
  2654.             case VAL_BASIC
  2655.                 'Use -username and -password.  
  2656.                 ASSERTBOOL optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option must be specified for '-auth:basic'"
  2657.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:basic'"
  2658.                 sessionFlags = sessionFlags OR wsman.SessionFlagCredUsernamePassword OR wsman.SessionFlagUseBasic
  2659.             case VAL_DIGEST
  2660.                 'Use -username and -password.  
  2661.                 ASSERTBOOL optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option must be specified for '-auth:digest'"
  2662.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:digest'"
  2663.                 sessionFlags = sessionFlags OR wsman.SessionFlagCredUsernamePassword OR wsman.SessionFlagUseDigest
  2664.             case VAL_KERBEROS
  2665.                 '-username and -password are optional.  
  2666.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:kerberos'"
  2667.                 sessionFlags = sessionFlags OR wsman.SessionFlagUseKerberos
  2668.             case VAL_NEGOTIATE
  2669.                 '-username and -password are optional.  
  2670.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:negotiate'"
  2671.                 sessionFlags = sessionFlags OR wsman.SessionFlagUseNegotiate
  2672.             case VAL_CERT
  2673.                 '-certificate is mandatory.  
  2674.                 ASSERTBOOL optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option must be specified for '-auth:certificate'"
  2675.                 '-username or -password must not be used
  2676.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option is not valid for '-auth:certificate'"
  2677.                 ASSERTBOOL not optDic.ArgumentExists(NPARA_PASSWORD), "The '-" & NPARA_PASSWORD & "' option is only valid for '-auth:certificate'"
  2678.                 sessionFlags = sessionFlags OR wsman.SessionFlagUseClientCertificate
  2679.             case else 
  2680.                 ASSERTBOOL false, "The specified '-" & NPARA_AUTH & "' flag '" & authVal & "' has an invalid value."
  2681.         end select
  2682.     end if
  2683.     
  2684.     if optDic.ArgumentExists(NPARA_USERNAME) then
  2685.         ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option cannot be used together with '-username'"
  2686.         set conOpt = wsman.CreateConnectionOptions
  2687.         conOpt.UserName = optDic.Argument(NPARA_USERNAME)
  2688.         if optDic.ArgumentExists(NPARA_PASSWORD) then
  2689.             conOpt.Password = optDic.Argument(NPARA_PASSWORD)
  2690.         end if
  2691.         sessionFlags = sessionFlags OR wsman.SessionFlagCredUsernamePassword
  2692.     end if
  2693.     
  2694.     if optDic.ArgumentExists(NPARA_CERT) then
  2695.         ASSERTBOOL not optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option cannot be used together with '-certificate'"
  2696.         ASSERTBOOL not optDic.ArgumentExists(NPARA_PASSWORD), "The '-" & NPARA_PASSWORD & "' option cannot be used together with '-certificate'"
  2697.         set conOpt = wsman.CreateConnectionOptions
  2698.         conOpt.CertificateThumbprint = optDic.Argument(NPARA_CERT)
  2699.         if optDic.ArgumentExists(NPARA_AUTH) then
  2700.             ASSERTBOOL (LCase(optDic.Argument(NPARA_AUTH)) = VAL_CERT), "The " & NPARA_CERT & " option is only valid when the authentication mechanism is " & VAL_CERT
  2701.         end if
  2702.         '-auth might be missing, in which case we assume -a:Certificate
  2703.         sessionFlags = sessionFlags OR wsman.SessionFlagUseClientCertificate
  2704.     end if
  2705.     
  2706.     if optDic.ArgumentExists(NPARA_NOCACHK) then
  2707.         'C API will ensure this is only used w/ https
  2708.         sessionFlags = sessionFlags OR wsman.SessionFlagSkipCACheck
  2709.     end if
  2710.  
  2711.     if optDic.ArgumentExists(NPARA_NOCNCHK) then
  2712.         'C API will ensure this is only used w/ https
  2713.         sessionFlags = sessionFlags OR wsman.SessionFlagSkipCNCheck
  2714.     end if
  2715.  
  2716.     if optDic.ArgumentExists(NPARA_SPNPORT) then
  2717.         'this is only valid if -auth is not specified or if -auth:Negotiate or -auth:Kerberos is specified 
  2718.         if optDic.ArgumentExists(NPARA_AUTH) then
  2719.             ASSERTBOOL (LCase(optDic.Argument(NPARA_AUTH)) = VAL_NEGOTIATE OR LCase(optDic.Argument(NPARA_AUTH)) = VAL_KERBEROS), "The " & NPARA_SPNPORT & " option is only valid when the authentication mechanism is " & VAL_NEGOTIATE & " or " & VAL_KERBEROS
  2720.         end if
  2721.         sessionFlags = sessionFlags OR wsman.SessionFlagEnableSPNServerPort
  2722.     end if
  2723.  
  2724.     on error resume next
  2725.     set session = wsman.CreateSession(conStr, sessionFlags, conOpt)
  2726.     ASSERTERR wsman, formatOption
  2727.     on error goto 0
  2728.  
  2729.     if optDic.ArgumentExists(NPARA_TIMEOUT) then
  2730.         ASSERTNAL(NPARA_TIMEOUT)
  2731.         tout = optDic.Argument(NPARA_TIMEOUT)
  2732.         ASSERTBOOL IsNumeric(tout), "Numeric value for -timeout option is expected"
  2733.         session.Timeout = optDic.Argument(NPARA_TIMEOUT)        
  2734.     end if
  2735.     
  2736.     set CreateSession = session
  2737. end function
  2738.  
  2739. private sub ASSERTERR(obj, formatOption)
  2740.     dim errNo
  2741.     dim errDesc
  2742.     dim responseStr
  2743.     dim formattedStr
  2744.  
  2745.     if Err.Number <> 0 then
  2746.         errNo = Err.Number
  2747.         errDesc = Err.Description
  2748.         responseStr = obj.Error
  2749.         If Reformat(responseStr,formattedStr,formatOption) Then
  2750.             stdErr.WriteLine formattedStr
  2751.         Else
  2752.             stdErr.WriteLine responseStr
  2753.         End if
  2754.         stdErr.WriteLine GetResource("L_ERRNO_Message") & " " & errNo & " 0x" & Hex(errNo)
  2755.         stdErr.WriteLine errDesc
  2756.         WScript.Quit(ERR_GENERAL_FAILURE)
  2757.     end if
  2758. end sub
  2759.  
  2760. ' Assert Named Argument Length
  2761. private sub ASSERTNAL(namedArg)
  2762.     if Len(wsmanCmdLineObj.Argument(namedArg)) = 0 then
  2763.         stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_ARGNOVAL_Message") & namedArg
  2764.         WScript.Quit(ERR_GENERAL_FAILURE)
  2765.     end if
  2766. end sub
  2767.  
  2768. private sub ASSERTBOOL(bool, msg)
  2769.     if Not bool then
  2770.         stdErr.WriteLine GetResource("L_ERR_Message") & msg
  2771.         WScript.Quit(ERR_GENERAL_FAILURE)
  2772.     end if
  2773. end sub
  2774.  
  2775. private function ReFormat(rawStr,formattedStr,formatOption)
  2776.     dim xslFile
  2777.     dim xmlFile
  2778.     dim xmlFileName
  2779.     dim xslFileName 
  2780.  
  2781.     if Len(rawStr) = 0 then
  2782.         ReFormat = false
  2783.         exit function
  2784.     end if
  2785.     
  2786.     on error resume next
  2787.     err.clear
  2788.     
  2789.     if LCase(formatOption) = VAL_FORMAT_XML then
  2790.         formattedStr = rawStr
  2791.     else
  2792.         set xmlFile = CreateObject("MSXML2.DOMDOCUMENT.3.0")
  2793.         if Err.number <> 0 then
  2794.             stdErr.WriteLine GetResource("L_MSXML3MISSING_Message")
  2795.             on error goto 0
  2796.             ReFormat = false
  2797.             exit function
  2798.         end if
  2799.  
  2800.         set xslFile = CreateObject("MSXML2.DOMDOCUMENT.3.0")
  2801.         if Err.number <> 0 then
  2802.             stdErr.WriteLine GetResource("L_MSXML3MISSING_Message")
  2803.             on error goto 0
  2804.             ReFormat = false
  2805.             exit function
  2806.         end if
  2807.         
  2808.         xmlFile.async = false
  2809.         xslFile.async = false
  2810.             
  2811.         xmlFile.LoadXML(rawStr)
  2812.         if (xmlFile.parseError.errorCode <> 0) then
  2813.             stdErr.WriteLine GetResource("L_XMLERROR_Message") & xmlFile.parseError.reason
  2814.             on error goto 0
  2815.             ReFormat = false
  2816.             exit function
  2817.         end if
  2818.         
  2819.         if LCase(formatOption) = VAL_FORMAT_TEXT then
  2820.             If Not xslFile.load(VAL_FORMAT_TEXT_XSLT) Then
  2821.                 stdErr.WriteLine GetResource("L_XSLERROR_Message") & VAL_FORMAT_TEXT_XSLT
  2822.                 if xslFile.parseError.errorCode < 0 then
  2823.                     stdErr.WriteLine xslFile.parseError.reason
  2824.                 end if
  2825.                 on error goto 0
  2826.                 ReFormat = false
  2827.                 exit function
  2828.             end if
  2829.         elseif LCase(formatOption) = VAL_FORMAT_PRETTY then    
  2830.             If Not xslFile.load(VAL_FORMAT_PRETTY_XSLT) Then
  2831.                 stdErr.WriteLine GetResource("L_XSLERROR_Message") & VAL_FORMAT_PRETTY_XSLT
  2832.                 if xslFile.parseError.errorCode < 0 then
  2833.                     stdErr.WriteLine xslFile.parseError.reason
  2834.                 end if
  2835.                 on error goto 0
  2836.                 ReFormat = false
  2837.                 exit function
  2838.             end if
  2839.         else
  2840.             stdErr.WriteLine GetResource("L_FORMATLERROR_Message") & formatOption
  2841.             stdErr.WriteLine 
  2842.             on error goto 0
  2843.             ReFormat = false
  2844.             exit function
  2845.         end if
  2846.         
  2847.         formattedStr = xmlFile.transformNode (xslFile)
  2848.         if Err.number <> 0 then
  2849.             stdErr.WriteLine Err.Description
  2850.             on error goto 0
  2851.             ReFormat = false
  2852.             exit function
  2853.         end if
  2854.     end if
  2855.     ReFormat = true
  2856. end function
  2857.  
  2858.  
  2859. Private Sub HelpMenu(topic, stream)
  2860.     Dim helpMenu
  2861.     Set helpMenu = CreateObject("Scripting.Dictionary")
  2862.     helpMenu.Add OP_HELP, "HelpHelp"
  2863.     helpMenu.Add OP_GET,  "HelpGet"
  2864.     helpMenu.Add OP_PUT,  "HelpSet"
  2865.     helpMenu.Add OP_CONFIGSDDL,  "HelpConfigSDDL"
  2866.     '#ifdef URI_SECURITY_FEATURE      
  2867.     'helpMenu.Add OP_CREATESDDL,  "HelpCreateSDDL"    
  2868.     helpMenu.Add OP_CRE,  "HelpCreate"
  2869.     helpMenu.Add OP_DEL,  "HelpDelete"
  2870.     helpMenu.Add OP_ENU,  "HelpEnum"
  2871.     helpMenu.Add OP_INV,  "HelpInvoke"
  2872.     helpMenu.Add OP_QUICKCONFIG,  "HelpQuickConfig"
  2873.     helpMenu.Add OP_IDENTIFY,  "HelpIdentify"
  2874.     helpMenu.Add OP_HELPMSG,  "HelpMsg"
  2875.  
  2876.     helpMenu.Add NPARA_USERNAME, "HelpAuth"
  2877.     helpMenu.Add NPARA_PASSWORD, "HelpAuth"
  2878.     helpMenu.Add NPARA_DIALECT,  "HelpSwitches"
  2879.     helpMenu.Add NPARA_FILE,     "HelpInput"
  2880.     helpMenu.Add NPARA_FILTER,   "HelpSwitches"
  2881.     helpMenu.Add NPARA_REMOTE,   "HelpRemote"
  2882.     helpMenu.Add NPARA_NOCACHK,  "HelpSwitches"
  2883.     helpMenu.Add NPARA_NOCNCHK,  "HelpSwitches"
  2884.     helpMenu.Add NPARA_SPNPORT,  "HelpSwitches"
  2885.     helpMenu.Add NPARA_TIMEOUT,  "HelpSwitches"
  2886.     helpMenu.Add NPARA_AUTH,     "HelpAuth"
  2887.     helpMenu.Add NPARA_UNENCRYPTED, "HelpRemote"
  2888.     helpMenu.Add NPARA_ENCODING, "HelpSwitches"
  2889.     helpMenu.Add NPARA_FORMAT,   "HelpSwitches"
  2890.     helpMenu.Add NPARA_OPTIONS,  "HelpSwitches"
  2891.     helpMenu.Add NPARA_FRAGMENT, "HelpSwitches"
  2892.     helpMenu.Add "@{}",          "HelpInput"
  2893.  
  2894.     helpMenu.Add HELP_CONFIG,    "HelpConfig"
  2895.     '#ifdef URI_SECURITY_FEATURE  
  2896.     'helpMenu.Add HELP_URISECURITY,    "HelpUriSecurity"
  2897.     helpMenu.Add HELP_CertMapping,    "HelpCertMapping"
  2898.     helpMenu.Add HELP_CUSTOMREMOTESHELL,    "HelpCustomRemoteShell"
  2899.     helpMenu.Add HELP_URIS,      "HelpUris"
  2900.     helpMenu.Add HELP_ALIAS,     "HelpAlias"
  2901.     helpMenu.Add HELP_ALIASES,   "HelpAlias"
  2902.     helpMenu.Add HELP_FILTERS,   "HelpFilters"
  2903.     helpMenu.Add HELP_SWITCHES,  "HelpSwitches"
  2904.     helpMenu.Add HELP_REMOTING,  "HelpRemote"
  2905.     helpMenu.Add HELP_INPUT,     "HelpInput"
  2906.     helpMenu.Add HELP_AUTH,      "HelpAuth"
  2907.  
  2908.     Dim helpFctn
  2909.     topic = LCase(topic)
  2910.     If helpMenu.Exists(topic) Then
  2911.         helpFctn = helpMenu(topic)
  2912.     Else
  2913.         helpFctn = "HelpHelp"
  2914.     End If
  2915.  
  2916.     stream.WriteLine GetResource("L_Help_Title_0_Message") & vbNewLine
  2917.  
  2918.     If topic <> "all" Then
  2919.         Dim cmd
  2920.         cmd = "Call " & helpFctn & "(stream)"
  2921.         Execute(cmd)
  2922.     Else
  2923.         HelpAll(stream)
  2924.     End If
  2925. End Sub
  2926.  
  2927. Private Sub HelpTopic(stream, label)
  2928.     dim NL 
  2929.     NL = vbNewLine
  2930.     Dim seperator
  2931.     seperator = vbNewLine & "-------------------------------------------------------------------------------"
  2932.     stream.WriteLine seperator & NL & "TOPIC: " & label & NL
  2933.  
  2934. End Sub 
  2935.  
  2936. Private Sub HelpAll(stream)
  2937.     Dim seperator
  2938.     seperator = vbNewLine & "-------------------------------------------------------------------------------"
  2939.     dim NL 
  2940.     NL = vbNewLine
  2941.  
  2942.     HelpTopic stream, "winrm -?"
  2943.     HelpHelp stream
  2944.     
  2945.     HelpTopic stream, "winrm get -?"
  2946.     HelpGet stream
  2947.  
  2948.     HelpTopic stream, "winrm set -?"
  2949.     HelpSet stream
  2950.  
  2951.     HelpTopic stream, "winrm create -?"
  2952.     HelpCreate stream
  2953.  
  2954.     HelpTopic stream, "winrm delete -?"
  2955.     HelpDelete stream
  2956.  
  2957.     HelpTopic stream, "winrm enumerate -?"
  2958.     HelpEnum stream
  2959.  
  2960.     HelpTopic stream, "winrm invoke -?"
  2961.     HelpInvoke stream
  2962.  
  2963.     HelpTopic stream, "winrm identify -?"
  2964.     HelpIdentify stream
  2965.  
  2966.     HelpTopic stream, "winrm quickconfig -?"
  2967.     HelpQuickConfig stream
  2968.  
  2969.     HelpTopic stream, "winrm helpmsg -?"
  2970.     HelpMsg stream
  2971.  
  2972.     
  2973.     HelpTopic stream, "winrm help uris"
  2974.     HelpUris stream
  2975.  
  2976.     HelpTopic stream, "winrm help alias"
  2977.     HelpAlias stream
  2978.  
  2979.     HelpTopic stream, "winrm help config"
  2980.     HelpConfig stream
  2981.  
  2982.     '#ifdef URI_SECURITY_FEATURE  
  2983.     'HelpTopic stream, "winrm help urisecurity"
  2984.     'HelpUriSecurity stream
  2985.  
  2986.     HelpTopic stream, "winrm help configsddl"
  2987.     HelpConfigsddl stream
  2988.  
  2989.     '#ifdef URI_SECURITY_FEATURE  
  2990.     'HelpTopic stream, "winrm help createsddl"
  2991.     'HelpCreatesddl stream
  2992.  
  2993.     HelpTopic stream, "winrm help certmapping"
  2994.     HelpCertMapping stream
  2995.  
  2996.     HelpTopic stream, "winrm help customremoteshell"
  2997.     HelpCustomRemoteShell stream
  2998.  
  2999.     HelpTopic stream, "winrm help remoting"
  3000.     HelpRemote stream
  3001.  
  3002.     HelpTopic stream, "winrm help auth"
  3003.     HelpAuth stream
  3004.  
  3005.     HelpTopic stream, "winrm help input"
  3006.     HelpInput stream
  3007.  
  3008.     HelpTopic stream, "winrm help filters"
  3009.     HelpFilters stream
  3010.  
  3011.     HelpTopic stream, "winrm help switches"
  3012.     HelpSwitches stream
  3013. End Sub
  3014.  
  3015. ''''''''''''''''''''''''''''''''''''''''''''
  3016. ' HELP - HELP
  3017. Private Sub HelpHelp(stream)
  3018. dim NL 
  3019. NL = vbNewLine
  3020. stream.WriteLine _
  3021. GetResource("L_HelpHelp_000_0_Message") & NL & _
  3022. GetResource("L_HelpHelp_001_0_Message") & NL & _
  3023. GetResource("L_HelpHelp_001_1_Message") & NL & _
  3024. GetResource("L_HelpHelp_002_0_Message") & NL & _
  3025. GetResource("L_HelpHelp_003_0_Message") & NL & _
  3026. GetResource("L_HelpHelp_004_0_Message") & NL & _
  3027. GetResource("L_HelpHelp_005_0_Message") & NL & _
  3028. GetResource("L_HelpHelp_007_0_Message") & NL & _
  3029. GetResource("L_HelpHelp_008_0_Message") & NL & _
  3030. GetResource("L_HelpHelp_009_0_Message") & NL & _
  3031. GetResource("L_HelpHelp_010_0_Message") & NL & _
  3032. GetResource("L_HelpHelp_011_0_Message") & NL & _
  3033. GetResource("L_HelpHelp_012_0_Message") & NL & _
  3034. GetResource("L_HelpHelp_013_0_Message") & NL & _
  3035. GetResource("L_HelpHelp_014_0_Message") & NL & _
  3036. GetResource("L_HelpHelp_015_0_Message") & NL & _
  3037. GetResource("L_HelpHelp_015_1_Message") & NL & _
  3038. GetResource("L_HelpHelp_016_0_Message") & NL & _
  3039. GetResource("L_HelpHelp_016_1_Message") 
  3040. '#ifdef URI_SECURITY_FEATURE  
  3041. 'GetResource("L_HelpHelp_016_2_Message") & NL & _
  3042. stream.WriteLine _
  3043. GetResource("L_HelpHelp_016_3_Message") & NL & _
  3044. GetResource("L_HelpHelp_016_4_Message") & NL & _
  3045. GetResource("L_HelpHelp_017_0_Message") & NL & _
  3046. GetResource("L_HelpHelp_018_0_Message") & NL & _
  3047. GetResource("L_HelpHelp_019_0_Message") & NL & _
  3048. GetResource("L_HelpHelp_020_0_Message") & NL & _
  3049. GetResource("L_HelpHelp_021_0_Message")   
  3050. '#ifdef URI_SECURITY_FEATURE  
  3051. 'GetResource("L_HelpHelp_021_1_Message") & NL & _
  3052. stream.WriteLine _
  3053. GetResource("L_HelpHelp_021_2_Message") & NL & _
  3054. GetResource("L_HelpHelp_021_3_Message") & NL & _
  3055. GetResource("L_HelpHelp_021_4_Message") & NL & _
  3056. GetResource("L_HelpHelp_022_0_Message") & NL & _
  3057. GetResource("L_HelpHelp_023_0_Message") & NL & _
  3058. GetResource("L_HelpHelp_024_0_Message") & NL & _
  3059. GetResource("L_HelpHelp_025_0_Message")
  3060.  
  3061. ' GetResource("X_HelpHelp_006_0_Message") & NL & _
  3062. ' GetResource("L_HelpHelp_015_0_Message") & NL & _
  3063.  
  3064. End Sub
  3065.  
  3066. '''''''''''''''''''''
  3067. ' HELP - GET
  3068. Private Sub HelpGet(stream)
  3069. dim NL 
  3070. NL = vbNewLine
  3071. stream.WriteLine _
  3072. GetResource("L_HelpGet_000_0_Message") & NL & _
  3073. GetResource("L_HelpGet_001_0_Message") & NL & _
  3074. GetResource("L_HelpGet_002_0_Message") & NL & _
  3075. GetResource("L_HelpGet_003_0_Message") & NL & _
  3076. GetResource("L_HelpGet_004_0_Message") & NL & _
  3077. GetResource("L_HelpGet_005_0_Message") & NL & _
  3078. GetResource("X_HelpGet_006_0_Message") & NL & _
  3079. GetResource("L_HelpGet_007_0_Message") & NL & _
  3080. GetResource("L_HelpGet_008_0_Message") & NL & _
  3081. GetResource("X_HelpGet_009_0_Message") & NL & _
  3082. GetResource("L_HelpGet_010_0_Message")  
  3083. '#ifdef URI_SECURITY_FEATURE  
  3084. 'GetResource("L_HelpGet_011_0_Message") & NL & _
  3085. 'GetResource("X_HelpGet_012_0_Message") & NL & _
  3086. 'GetResource("L_HelpGet_013_0_Message") & NL & _
  3087. stream.WriteLine _
  3088. GetResource("L_HelpGet_014_0_Message") & NL & _
  3089. GetResource("X_HelpGet_015_0_Message") & NL & _
  3090. GetResource("L_HelpGet_016_0_Message") & NL & _
  3091. GetResource("L_HelpGet_017_0_Message") & NL & _
  3092. GetResource("X_HelpGet_018_0_Message") & NL & _
  3093. GetResource("L_HelpGet_019_0_Message") & NL & _
  3094. GetResource("L_Help_Blank_0_Message") & NL & _
  3095. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3096. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3097. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  3098. GetResource("X_Help_SeeAlso_Switches_Message")
  3099. End Sub
  3100.  
  3101.  
  3102. '''''''''''''''''''''
  3103. ' HELP - CREATESDDL
  3104. Private Sub HelpCreatesddl(stream)
  3105. dim NL 
  3106. NL = vbNewLine
  3107. stream.WriteLine _
  3108. GetResource("L_HelpCreatesddl_000_0_Message") & NL & _
  3109. GetResource("L_HelpCreatesddl_001_0_Message") & NL & _
  3110. GetResource("L_HelpCreatesddl_002_0_Message") & NL & _
  3111. GetResource("L_HelpCreatesddl_002_1_Message") & NL & _
  3112. GetResource("L_HelpCreatesddl_003_0_Message") & NL & _
  3113. GetResource("L_HelpCreatesddl_004_0_Message") & NL & _
  3114. GetResource("L_HelpCreatesddl_005_0_Message") & NL & _
  3115. GetResource("L_HelpCreatesddl_005_1_Message") & NL & _
  3116. GetResource("X_HelpCreatesddl_006_0_Message") & NL & _
  3117. GetResource("L_HelpCreatesddl_007_0_Message") & NL & _
  3118. GetResource("L_HelpCreatesddl_010_0_Message") & NL & _
  3119. GetResource("L_HelpCreatesddl_011_0_Message") & NL & _
  3120. GetResource("X_HelpCreatesddl_012_0_Message") & NL & _
  3121. GetResource("L_Help_Blank_0_Message") & NL & _
  3122. GetResource("L_Help_SeeAlso_Title_Message") & NL 
  3123. '#ifdef URI_SECURITY_FEATURE  
  3124. 'GetResource("X_Help_SeeAlso_UriSecurity_Message") & NL & _
  3125. 'GetResource("X_Help_SeeAlso_createSDDL_Message") & NL & _
  3126. GetResource("X_Help_SeeAlso_Switches_Message")
  3127. End Sub
  3128.  
  3129.  
  3130. '''''''''''''''''''''
  3131. ' HELP - CONFIGSDDL
  3132. Private Sub HelpConfigsddl(stream)
  3133. dim NL 
  3134. NL = vbNewLine
  3135. '#ifdef URI_SECURITY_FEATURE  
  3136. 'stream.WriteLine _
  3137. 'GetResource("L_HelpConfigsddl_000_0_Message") & NL & _
  3138. 'GetResource("L_HelpConfigsddl_001_0_Message") & NL & _
  3139. 'GetResource("L_HelpConfigsddl_002_0_Message") & NL & _
  3140. 'GetResource("L_HelpConfigsddl_002_1_Message") & NL & _
  3141. 'GetResource("L_HelpConfigsddl_003_0_Message") & NL & _
  3142. 'GetResource("L_HelpConfigsddl_004_0_Message") & NL & _
  3143. 'GetResource("L_HelpConfigsddl_005_0_Message") & NL & _
  3144. 'GetResource("L_HelpConfigsddl_005_1_Message") & NL & _
  3145. 'GetResource("X_HelpConfigsddl_006_0_Message") & NL & _
  3146. 'GetResource("L_HelpConfigsddl_007_0_Message") & NL & _
  3147. 'GetResource("L_HelpConfigsddl_010_0_Message") & NL & _
  3148. 'GetResource("L_HelpConfigsddl_011_0_Message") & NL & _
  3149. 'GetResource("X_HelpConfigsddl_012_0_Message") & NL & _
  3150. 'GetResource("L_Help_Blank_0_Message") & NL & _
  3151. 'GetResource("L_Help_SeeAlso_Title_Message")  & NL & _
  3152. 'GetResource("X_Help_SeeAlso_UriSecurity_Message") & NL & _
  3153. 'GetResource("X_Help_SeeAlso_configSDDL_Message") & NL & _
  3154. 'GetResource("X_Help_SeeAlso_Switches_Message")
  3155. '#else
  3156. stream.WriteLine _
  3157. GetResource("L_NONURISECFEATUREHelpConfigsddl_000_0_Message") & NL & _
  3158. GetResource("L_NONURISECFEATUREHelpConfigsddl_001_0_Message") & NL & _
  3159. GetResource("L_NONURISECFEATUREHelpConfigsddl_002_0_Message") & NL & _
  3160. GetResource("L_NONURISECFEATUREHelpConfigsddl_002_1_Message") & NL & _
  3161. GetResource("L_NONURISECFEATUREHelpConfigsddl_004_0_Message") & NL & _
  3162. GetResource("L_NONURISECFEATUREHelpConfigsddl_005_0_Message") & NL & _
  3163. GetResource("L_NONURISECFEATUREHelpConfigsddl_005_1_Message") & NL & _
  3164. GetResource("L_NONURISECFEATUREHelpConfigsddl_011_0_Message") & NL & _
  3165. GetResource("X_NONURISECFEATUREHelpConfigsddl_012_0_Message") & NL & _
  3166. GetResource("L_Help_Blank_0_Message") & NL & _
  3167. GetResource("L_Help_SeeAlso_Title_Message")  & NL & _
  3168. GetResource("X_Help_SeeAlso_configSDDL_Message") & NL & _
  3169. GetResource("X_Help_SeeAlso_Switches_Message")
  3170. End Sub
  3171.  
  3172. '''''''''''''''''''''
  3173. ' HELP - SET
  3174. Private Sub HelpSet(stream)
  3175. dim NL 
  3176. NL = vbNewLine
  3177. stream.WriteLine _
  3178. GetResource("L_HelpSet_001_0_Message") & NL & _
  3179. GetResource("L_HelpSet_002_0_Message") & NL & _
  3180. GetResource("L_HelpSet_003_0_Message") & NL & _
  3181. GetResource("L_HelpSet_004_0_Message") & NL & _
  3182. GetResource("L_HelpSet_005_0_Message") & NL & _
  3183. GetResource("L_HelpSet_006_0_Message") & NL & _
  3184. GetResource("L_HelpSet_007_0_Message") & NL & _
  3185. GetResource("L_HelpSet_008_0_Message") & NL & _
  3186. GetResource("L_HelpSet_009_0_Message") & NL & _
  3187. GetResource("X_HelpSet_010_0_Message") & NL & _
  3188. GetResource("L_HelpSet_011_0_Message") & NL & _
  3189. GetResource("L_HelpSet_012_0_Message") & NL & _
  3190. GetResource("X_HelpSet_013_0_Message") & NL & _
  3191. GetResource("L_HelpSet_014_0_Message")  
  3192. '#ifdef URI_SECURITY_FEATURE  
  3193. 'GetResource("L_HelpSet_015_0_Message") & NL & _
  3194. 'GetResource("X_HelpSet_016_0_Message") & NL & _
  3195. 'GetResource("L_HelpSet_017_0_Message") & NL & _
  3196. stream.WriteLine _
  3197. GetResource("L_HelpSet_018_0_Message") & NL & _
  3198. GetResource("X_HelpSet_019_0_Message") & NL & _
  3199. GetResource("L_HelpSet_020_0_Message") & NL & _
  3200. GetResource("L_HelpSet_021_0_Message") & NL & _
  3201. GetResource("X_HelpSet_022_0_Message") & NL & _
  3202. GetResource("L_Help_Blank_0_Message") & NL & _
  3203. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3204. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3205. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  3206. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  3207. GetResource("X_Help_SeeAlso_Switches_Message")
  3208. End Sub
  3209.  
  3210. '''''''''''''''''''''
  3211. ' HELP - CREATE
  3212. Private Sub HelpCreate(stream)
  3213. dim NL 
  3214. NL = vbNewLine
  3215. stream.WriteLine _
  3216. GetResource("L_HelpCreate_001_0_Message") & NL & _
  3217. GetResource("L_HelpCreate_002_0_Message") & NL & _
  3218. GetResource("L_HelpCreate_003_0_Message") & NL & _
  3219. GetResource("L_HelpCreate_004_0_Message") & NL & _
  3220. GetResource("L_HelpCreate_005_0_Message") & NL & _
  3221. GetResource("L_HelpCreate_006_0_Message") & NL & _
  3222. GetResource("L_HelpCreate_007_0_Message") & NL & _
  3223. GetResource("L_HelpCreate_008_0_Message") & NL & _
  3224. GetResource("X_HelpCreate_009_0_Message") & NL & _
  3225. GetResource("L_HelpCreate_010_0_Message") & NL & _
  3226. GetResource("L_HelpCreate_011_0_Message") & NL & _
  3227. GetResource("X_HelpCreate_012_0_Message") & NL & _
  3228. GetResource("L_HelpCreate_013_0_Message") & NL & _
  3229. GetResource("L_HelpCreate_014_0_Message") & NL & _
  3230. GetResource("L_HelpCreate_015_0_Message") & NL & _
  3231. GetResource("X_HelpCreate_016_0_Message") & NL & _
  3232. GetResource("L_HelpCreate_017_0_Message")  
  3233. '#ifdef URI_SECURITY_FEATURE  
  3234. 'GetResource("L_HelpCreate_018_0_Message") & NL & _
  3235. 'GetResource("X_HelpCreate_019_0_Message") & NL & _
  3236. 'GetResource("L_HelpCreate_020_0_Message") & NL & _
  3237. 'GetResource("L_HelpCreate_021_0_Message") & NL & _
  3238. stream.WriteLine _
  3239. GetResource("L_HelpCreate_022_0_Message") & NL & _
  3240. GetResource("X_HelpCreate_023_0_Message") & NL & _
  3241. GetResource("L_HelpCreate_024_0_Message") & NL & _
  3242. GetResource("L_HelpCreate_025_0_Message") & NL & _
  3243. GetResource("X_HelpCreate_026_0_Message") & NL & _
  3244. GetResource("L_Help_Blank_0_Message") & NL & _
  3245. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3246. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3247. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  3248. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  3249. GetResource("X_Help_SeeAlso_Switches_Message")
  3250. End Sub
  3251.  
  3252. '''''''''''''''''''''
  3253. ' HELP - DELETE
  3254. Private Sub HelpDelete(stream)
  3255. dim NL 
  3256. NL = vbNewLine
  3257. stream.WriteLine _
  3258. GetResource("L_HelpDelete_001_0_Message") & NL & _
  3259. GetResource("L_HelpDelete_002_0_Message") & NL & _
  3260. GetResource("L_HelpDelete_003_0_Message") & NL & _
  3261. GetResource("L_HelpDelete_004_0_Message") & NL & _
  3262. GetResource("L_HelpDelete_005_0_Message") & NL & _
  3263. GetResource("X_HelpDelete_006_0_Message") & NL & _
  3264. GetResource("L_HelpDelete_007_0_Message") & NL & _
  3265. GetResource("L_HelpDelete_008_0_Message") & NL & _
  3266. GetResource("X_HelpDelete_009_0_Message") & NL & _
  3267. GetResource("L_HelpDelete_010_0_Message")  
  3268. '#ifdef URI_SECURITY_FEATURE  
  3269. 'GetResource("L_HelpDelete_011_0_Message") & NL & _
  3270. 'GetResource("X_HelpDelete_012_0_Message") & NL & _
  3271. 'GetResource("L_HelpDelete_013_0_Message") & NL & _
  3272. stream.WriteLine _
  3273. GetResource("L_HelpDelete_014_0_Message") & NL & _
  3274. GetResource("X_HelpDelete_015_0_Message") & NL & _
  3275. GetResource("L_Help_Blank_0_Message") & NL & _
  3276. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3277. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3278. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  3279. GetResource("X_Help_SeeAlso_Switches_Message")
  3280. End Sub
  3281.  
  3282. '''''''''''''''''''''
  3283. ' HELP - ENUMERATE
  3284. Private Sub HelpEnum(stream)
  3285. dim NL 
  3286. NL = vbNewLine
  3287. stream.WriteLine _
  3288. GetResource("L_HelpEnum_001_0_Message") & NL & _
  3289. GetResource("L_HelpEnum_001_1_Message") & NL & _
  3290. GetResource("L_HelpEnum_002_0_Message") & NL & _
  3291. GetResource("L_HelpEnum_003_0_Message") & NL & _
  3292. GetResource("L_HelpEnum_004_0_Message") & NL & _
  3293. GetResource("L_HelpEnum_005_0_Message") & NL & _
  3294. GetResource("L_HelpEnum_006_0_Message") & NL & _
  3295. GetResource("L_HelpEnum_006_1_Message") & NL & _
  3296. GetResource("L_HelpEnum_006_2_Message") & NL & _
  3297. GetResource("L_HelpEnum_006_3_Message") & NL & _
  3298. GetResource("L_HelpEnum_006_4_Message") & NL & _
  3299. GetResource("L_HelpEnum_006_5_Message") & NL & _
  3300. GetResource("L_HelpEnum_006_6_Message") & NL & _
  3301. GetResource("L_HelpEnum_006_7_Message") & NL & _
  3302. GetResource("L_HelpEnum_006_8_Message") & NL & _
  3303. GetResource("L_HelpEnum_006_9_Message") & NL & _
  3304. GetResource("L_HelpEnum_006_10_Message") & NL & _
  3305. GetResource("L_HelpEnum_006_11_Message") & NL & _
  3306. GetResource("L_HelpEnum_006_12_Message") & NL & _
  3307. GetResource("L_HelpEnum_006_13_Message") & NL & _
  3308. GetResource("L_HelpEnum_006_14_Message") & NL & _
  3309. GetResource("L_HelpEnum_006_15_Message") & NL & _
  3310. GetResource("L_HelpEnum_006_16_Message") & NL & _
  3311. GetResource("L_HelpEnum_006_17_Message") & NL & _
  3312. GetResource("L_HelpEnum_006_18_Message") & NL & _
  3313. GetResource("L_HelpEnum_006_19_Message") & NL & _
  3314. GetResource("L_HelpEnum_006_20_Message") & NL & _
  3315. GetResource("L_HelpEnum_006_21_Message") & NL & _
  3316. GetResource("L_HelpEnum_006_22_Message") & NL & _
  3317. GetResource("L_HelpEnum_006_23_Message") & NL & _
  3318. GetResource("L_HelpEnum_007_0_Message") & NL & _
  3319. GetResource("X_HelpEnum_008_0_Message") & NL & _
  3320. GetResource("L_HelpEnum_009_0_Message") & NL & _
  3321. GetResource("L_HelpEnum_010_0_Message") & NL & _
  3322. GetResource("X_HelpEnum_011_0_Message") & NL & _
  3323. GetResource("L_HelpEnum_012_0_Message") & NL & _
  3324. GetResource("L_HelpEnum_016_0_Message") & NL & _
  3325. GetResource("X_HelpEnum_017_0_Message") & NL & _
  3326. GetResource("L_HelpEnum_018_0_Message")  
  3327. '#ifdef URI_SECURITY_FEATURE  
  3328. 'GetResource("L_HelpEnum_019_0_Message") & NL & _
  3329. 'GetResource("X_HelpEnum_020_0_Message") & NL & _
  3330. 'GetResource("L_HelpEnum_021_0_Message") & NL & _
  3331. stream.WriteLine _
  3332. GetResource("L_HelpEnum_022_0_Message") & NL & _
  3333. GetResource("X_HelpEnum_023_0_Message") & NL & _
  3334. GetResource("L_HelpEnum_024_0_Message") & NL & _
  3335. GetResource("L_HelpEnum_025_0_Message") & NL & _
  3336. GetResource("X_HelpEnum_026_0_Message") & NL & _
  3337. GetResource("L_Help_Blank_0_Message") & NL & _
  3338. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3339. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3340. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  3341. GetResource("X_Help_SeeAlso_Filters_Message") & NL & _
  3342. GetResource("X_Help_SeeAlso_Switches_Message")
  3343. End Sub
  3344.  
  3345. '''''''''''''''''''''
  3346. ' HELP - INVOKE
  3347. Private Sub HelpInvoke(stream)
  3348. dim NL 
  3349. NL = vbNewLine
  3350. stream.WriteLine _
  3351. GetResource("L_HelpInvoke_001_0_Message") & NL & _
  3352. GetResource("L_HelpInvoke_002_0_Message") & NL & _
  3353. GetResource("L_HelpInvoke_003_0_Message") & NL & _
  3354. GetResource("L_HelpInvoke_004_0_Message") & NL & _
  3355. GetResource("L_HelpInvoke_005_0_Message") & NL & _
  3356. GetResource("L_HelpInvoke_006_0_Message") & NL & _
  3357. GetResource("L_HelpInvoke_007_0_Message") & NL & _
  3358. GetResource("L_HelpInvoke_008_0_Message") & NL & _
  3359. GetResource("X_HelpInvoke_009_0_Message") & NL & _
  3360. GetResource("L_HelpInvoke_010_0_Message") & NL & _
  3361. GetResource("L_HelpInvoke_011_0_Message") & NL & _
  3362. GetResource("X_HelpInvoke_012_0_Message") & NL & _
  3363. GetResource("L_HelpInvoke_013_0_Message") & NL & _
  3364. GetResource("X_HelpInvoke_014_0_Message") & NL & _
  3365. GetResource("L_HelpInvoke_015_0_Message") & NL & _
  3366. GetResource("L_HelpInvoke_016_0_Message") & NL & _
  3367. GetResource("X_HelpInvoke_017_0_Message") & NL & _
  3368. GetResource("L_Help_Blank_0_Message") & NL & _
  3369. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3370. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3371. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  3372. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  3373. GetResource("X_Help_SeeAlso_Switches_Message")
  3374. End Sub
  3375.  
  3376. '''''''''''''''''''''
  3377. ' HELP - IDENTIFY
  3378. Private Sub HelpIdentify(stream)
  3379. dim NL 
  3380. NL = vbNewLine
  3381. stream.WriteLine _
  3382. GetResource("X_HelpIdentify_001_0_Message") & NL & _
  3383. GetResource("L_HelpIdentify_003_0_Message") & NL & _
  3384. GetResource("L_HelpIdentify_004_0_Message") & NL & _
  3385. GetResource("L_HelpIdentify_005_0_Message") & NL & _
  3386. GetResource("L_HelpIdentify_006_0_Message") & NL & _
  3387. GetResource("L_HelpIdentify_007_0_Message") & NL & _
  3388. GetResource("L_HelpIdentify_008_0_Message") & NL & _
  3389. GetResource("L_HelpIdentify_009_0_Message") & NL & _
  3390. GetResource("X_HelpIdentify_010_0_Message") & NL & _
  3391. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3392. GetResource("X_Help_SeeAlso_Switches_Message") & NL & _
  3393. GetResource("X_Help_SeeAlso_Remoting_Message")
  3394. End Sub
  3395.  
  3396. '''''''''''''''''''''
  3397. ' HELP - HELPMSG
  3398. Private Sub HelpMsg(stream)
  3399. dim NL 
  3400. NL = vbNewLine
  3401. stream.WriteLine _
  3402. GetResource("X_HelpHelpMessaage_001_0_Message") & NL & _
  3403. GetResource("X_HelpHelpMessaage_002_0_Message") & NL & _
  3404. GetResource("X_HelpHelpMessaage_003_0_Message") & NL & _
  3405. GetResource("X_HelpHelpMessaage_004_0_Message") & NL & _
  3406. GetResource("X_HelpHelpMessaage_005_0_Message") & NL & _
  3407. GetResource("X_HelpHelpMessaage_006_0_Message")
  3408. End Sub
  3409.  
  3410.  
  3411. '''''''''''''''''''''
  3412. ' HELP - AUTH
  3413. Private Sub HelpAuth(stream)
  3414. dim NL 
  3415. NL = vbNewLine
  3416. stream.WriteLine _
  3417. GetResource("L_HelpAuth_001_0_Message") & NL & _
  3418. GetResource("L_HelpAuth_002_0_Message") & NL & _
  3419. GetResource("L_HelpAuth_003_0_Message") & NL & _
  3420. GetResource("L_HelpAuth_004_0_Message") & NL & _
  3421. GetResource("L_HelpAuth_004_1_Message") & NL & _
  3422. GetResource("L_HelpAuth_005_0_Message") & NL & _
  3423. GetResource("L_HelpAuth_006_0_Message") & NL & _
  3424. GetResource("L_HelpAuth_007_0_Message") & NL & _
  3425. GetResource("L_HelpAuth_008_0_Message") & NL & _
  3426. GetResource("L_Help_Blank_0_Message") & NL & _
  3427. GetResource("L_HelpAuthAuth_001_0_Message") & NL & _
  3428. GetResource("L_HelpAuthAuth_002_0_Message") & NL & _
  3429. GetResource("L_HelpAuthAuth_003_0_Message") & NL & _
  3430. GetResource("L_HelpAuthAuth_004_0_Message") & NL & _
  3431. GetResource("L_HelpAuthAuth_005_0_Message") & NL & _
  3432. GetResource("X_HelpAuthAuth_006_0_Message") & NL & _
  3433. GetResource("X_HelpAuthAuth_007_0_Message") & NL & _
  3434. GetResource("X_HelpAuthAuth_008_0_Message") & NL & _
  3435. GetResource("X_HelpAuthAuth_009_0_Message") & NL & _
  3436. GetResource("X_HelpAuthAuth_010_0_Message") & NL & _
  3437. GetResource("X_HelpAuthAuth_010_1_Message") & NL & _
  3438. GetResource("L_HelpAuthAuth_011_0_Message") & NL & _
  3439. GetResource("L_HelpAuthAuth_012_0_Message") & NL & _
  3440. GetResource("L_HelpAuthAuth_013_0_Message") & NL & _
  3441. GetResource("L_HelpAuthAuth_013_1_Message") & NL & _
  3442. GetResource("L_HelpAuthAuth_013_2_Message") & NL & _
  3443. GetResource("L_HelpAuthAuth_014_0_Message") & NL & _
  3444. GetResource("L_HelpAuthAuth_015_0_Message") & NL & _
  3445. GetResource("L_HelpAuthAuth_016_0_Message") & NL & _
  3446. GetResource("L_HelpAuthAuth_017_0_Message") & NL & _
  3447. GetResource("L_HelpAuthAuth_018_0_Message") & NL & _
  3448. GetResource("L_HelpAuthAuth_019_0_Message") & NL & _
  3449. GetResource("L_HelpAuthAuth_020_0_Message") & NL & _
  3450. GetResource("L_Help_Blank_0_Message") & NL & _
  3451. GetResource("L_HelpAuthUsername_001_0_Message") & NL & _
  3452. GetResource("L_HelpAuthUsername_002_0_Message") & NL & _
  3453. GetResource("L_HelpAuthUsername_003_0_Message") & NL & _
  3454. GetResource("L_HelpAuthUsername_004_0_Message") & NL & _
  3455. GetResource("L_HelpAuthUsername_005_0_Message") & NL & _
  3456. GetResource("L_HelpAuthUsername_006_0_Message") & NL & _
  3457. GetResource("L_HelpAuthUsername_007_0_Message") & NL & _
  3458. GetResource("L_HelpAuthUsername_008_0_Message") & NL & _
  3459. GetResource("L_HelpAuthUsername_009_0_Message") & NL & _
  3460. GetResource("L_HelpAuthUsername_010_0_Message") & NL & _
  3461. GetResource("L_HelpAuthUsername_011_0_Message") & NL & _
  3462. GetResource("L_HelpAuthUsername_011_1_Message") & NL & _
  3463. GetResource("L_HelpAuthUsername_012_0_Message") & NL & _
  3464. GetResource("L_HelpAuthUsername_013_0_Message") & NL & _
  3465. GetResource("L_HelpAuthUsername_014_0_Message") & NL & _
  3466. GetResource("L_HelpAuthUsername_015_0_Message") & NL & _
  3467. GetResource("L_Help_Blank_0_Message") & NL & _
  3468. GetResource("L_HelpAuthPassword_001_0_Message") & NL & _
  3469. GetResource("L_HelpAuthPassword_002_0_Message") & NL & _
  3470. GetResource("L_HelpAuthPassword_003_0_Message") & NL & _
  3471. GetResource("L_HelpAuthPassword_004_0_Message") & NL & _
  3472. GetResource("L_Help_Blank_0_Message") & NL & _
  3473. GetResource("L_HelpAuthCertificate_001_0_Message") & NL & _
  3474. GetResource("L_HelpAuthCertificate_002_0_Message") & NL & _
  3475. GetResource("L_HelpAuthCertificate_003_0_Message") & NL & _
  3476. GetResource("L_HelpAuthCertificate_004_0_Message") & NL & _
  3477. GetResource("L_HelpAuthCertificate_005_0_Message") & NL & _
  3478. GetResource("L_HelpAuthCertificate_006_0_Message") & NL & _
  3479. GetResource("L_HelpAuthCertificate_007_0_Message") & NL & _
  3480. GetResource("L_HelpAuthCertificate_008_0_Message") & NL & _
  3481. GetResource("L_HelpAuthCertificate_009_0_Message") & NL & _
  3482. GetResource("L_HelpAuthCertificate_010_0_Message") & NL & _
  3483. GetResource("L_HelpAuthCertificate_011_0_Message") & NL & _
  3484. GetResource("L_Help_Blank_0_Message") & NL & _
  3485. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3486. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3487. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  3488. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  3489. GetResource("X_Help_SeeAlso_Switches_Message")
  3490. End Sub
  3491.  
  3492. '''''''''''''''''''''
  3493. ' HELP - FILTERS
  3494. Private Sub HelpFilters(stream)
  3495. dim NL 
  3496. NL = vbNewLine
  3497. stream.WriteLine _
  3498. GetResource("L_HelpFilter_001_0_Message") & NL & _
  3499. GetResource("X_HelpFilter_002_0_Message") & NL & _
  3500. GetResource("L_HelpFilter_003_0_Message") & NL & _
  3501. GetResource("X_HelpFilter_004_0_Message") & NL & _
  3502. GetResource("L_HelpFilter_005_0_Message") & NL & _
  3503. GetResource("X_HelpFilter_006_0_Message") & NL & _
  3504. GetResource("L_HelpFilter_007_0_Message") & NL & _
  3505. GetResource("X_HelpFilter_008_0_Message") & NL & _
  3506. GetResource("L_HelpFilter_009_0_Message") & NL & _
  3507. GetResource("X_HelpFilter_010_0_Message") & NL & _
  3508. GetResource("L_HelpFilter_011_0_Message") & NL & _
  3509. GetResource("L_HelpFilter_012_0_Message") & NL & _
  3510. GetResource("X_HelpFilter_013_0_Message") & NL & _
  3511. GetResource("L_HelpFilter_014_0_Message") & NL & _
  3512. GetResource("X_HelpFilter_015_0_Message") & NL & _
  3513. GetResource("X_HelpFilter_016_0_Message") & NL & _
  3514. GetResource("X_HelpFilter_017_0_Message") & NL & _
  3515. GetResource("L_HelpFilter_018_0_Message") & NL & _
  3516. GetResource("X_HelpFilter_019_0_Message") & NL & _
  3517. GetResource("L_HelpFilter_020_0_Message") & NL & _
  3518. GetResource("X_HelpFilter_021_0_Message") & NL & _
  3519. GetResource("X_HelpFilter_022_0_Message") & NL & _
  3520. GetResource("L_HelpFilter_023_0_Message") & NL & _
  3521. GetResource("X_HelpFilter_024_0_Message") & NL & _
  3522. GetResource("L_Help_Blank_0_Message") & NL & _
  3523. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3524. GetResource("X_Help_SeeAlso_Enumerate_Message")
  3525. End Sub
  3526.  
  3527.  
  3528. '''''''''''''''''''''
  3529. ' HELP - SWITCHES
  3530. Private Sub HelpSwitches(stream)
  3531. dim NL 
  3532. NL = vbNewLine
  3533. stream.WriteLine _
  3534. GetResource("L_HelpSwitchTimeout_001_0_Message") & NL & _
  3535. GetResource("L_HelpSwitchTimeout_002_0_Message") & NL & _
  3536. GetResource("L_HelpSwitchTimeout_003_0_Message") & NL & _
  3537. GetResource("L_HelpSwitchTimeout_004_0_Message") & NL & _
  3538. GetResource("X_HelpSwitchTimeout_005_0_Message") & NL & _
  3539. GetResource("L_HelpSwitchTimeout_006_0_Message") & NL & _
  3540. GetResource("L_Help_Blank_0_Message") & NL & _
  3541. GetResource("X_HelpSwitchSkipCACheck_001_0_Message") & NL & _
  3542. GetResource("L_HelpSwitchSkipCACheck_002_0_Message") & NL & _
  3543. GetResource("L_HelpSwitchSkipCACheck_003_0_Message") & NL & _
  3544. GetResource("L_HelpSwitchSkipCACheck_004_0_Message") & NL & _
  3545. GetResource("L_HelpSwitchSkipCACheck_005_0_Message") & NL & _
  3546. GetResource("L_Help_Blank_0_Message") & NL & _
  3547. GetResource("X_HelpSwitchSkipCNCheck_001_0_Message") & NL & _
  3548. GetResource("L_HelpSwitchSkipCNCheck_002_0_Message") & NL & _
  3549. GetResource("L_HelpSwitchSkipCNCheck_003_0_Message") & NL & _
  3550. GetResource("L_HelpSwitchSkipCNCheck_004_0_Message") & NL & _
  3551. GetResource("L_HelpSwitchSkipCNCheck_005_0_Message") & NL & _
  3552. GetResource("L_HelpSwitchSkipCNCheck_006_0_Message") & NL & _
  3553. GetResource("L_Help_Blank_0_Message") & NL & _
  3554. GetResource("L_HelpSwitchDialect_001_0_Message") & NL & _
  3555. GetResource("L_HelpSwitchDialect_002_0_Message") & NL & _
  3556. GetResource("L_HelpSwitchDialect_003_0_Message") & NL & _
  3557. GetResource("L_HelpSwitchDialect_004_0_Message") & NL & _
  3558. GetResource("X_HelpSwitchDialect_005_0_Message") & NL & _
  3559. GetResource("L_HelpSwitchDialect_006_0_Message") & NL & _
  3560. GetResource("X_HelpSwitchDialect_007_0_Message") & NL & _
  3561. GetResource("L_Help_Blank_0_Message") & NL & _
  3562. GetResource("L_HelpSwitchFragment_001_0_Message") & NL & _
  3563. GetResource("L_HelpSwitchFragment_002_0_Message") & NL & _
  3564. GetResource("L_HelpSwitchFragment_003_0_Message") & NL & _
  3565. GetResource("L_HelpSwitchFragment_004_0_Message") & NL & _
  3566. GetResource("L_HelpSwitchFragment_005_0_Message") & NL & _
  3567. GetResource("X_HelpSwitchFragment_006_0_Message") & NL & _
  3568. GetResource("L_Help_Blank_0_Message") & NL & _
  3569. GetResource("L_HelpSwitchOption_001_0_Message") & NL & _
  3570. GetResource("L_HelpSwitchOption_002_0_Message") & NL & _
  3571. GetResource("L_HelpSwitchOption_003_0_Message") & NL & _
  3572. GetResource("L_HelpSwitchOption_004_0_Message") & NL & _
  3573. GetResource("L_HelpSwitchOption_005_0_Message") & NL & _
  3574. GetResource("L_HelpSwitchOption_006_0_Message") & NL & _
  3575. GetResource("X_HelpSwitchOption_007_0_Message") & NL & _
  3576. GetResource("X_HelpSwitchOption_008_0_Message") & NL & _
  3577. GetResource("L_Help_Blank_0_Message") & NL & _
  3578. GetResource("X_HelpSwitchSPNPort_001_0_Message") & NL & _
  3579. GetResource("L_HelpSwitchSPNPort_002_0_Message") & NL & _
  3580. GetResource("L_HelpSwitchSPNPort_003_0_Message") & NL & _
  3581. GetResource("L_HelpSwitchSPNPort_004_0_Message") & NL & _
  3582. GetResource("L_HelpSwitchSPNPort_005_0_Message") & NL & _
  3583. GetResource("L_Help_Blank_0_Message") & NL & _
  3584. GetResource("L_HelpSwitchEncoding_001_0_Message") & NL & _
  3585. GetResource("L_HelpSwitchEncoding_002_0_Message") & NL & _
  3586. GetResource("L_HelpSwitchEncoding_003_0_Message") & NL & _
  3587. GetResource("L_HelpSwitchEncoding_004_0_Message") & NL & _
  3588. GetResource("L_HelpSwitchEncoding_005_0_Message") & NL & _
  3589. GetResource("L_HelpSwitchEncoding_006_0_Message") & NL & _
  3590. GetResource("X_HelpSwitchEncoding_007_0_Message") & NL & _
  3591. GetResource("X_HelpSwitchEncoding_008_0_Message") & NL & _
  3592. GetResource("L_Help_Blank_0_Message") & NL & _
  3593. GetResource("L_HelpSwitchFormat_001_0_Message") & NL & _
  3594. GetResource("L_HelpSwitchFormat_002_0_Message") & NL & _
  3595. GetResource("L_HelpSwitchFormat_003_0_Message") & NL & _
  3596. GetResource("L_HelpSwitchFormat_004_0_Message") & NL & _
  3597. GetResource("L_HelpSwitchFormat_005_0_Message") & NL & _
  3598. GetResource("X_HelpSwitchFormat_006_0_Message") & NL & _
  3599. GetResource("X_HelpSwitchFormat_007_0_Message") & NL & _
  3600. GetResource("X_HelpSwitchFormat_008_0_Message")
  3601. End Sub
  3602.  
  3603. '''''''''''''''''''''
  3604. ' HELP - INPUT
  3605. Private Sub HelpInput(stream)
  3606. dim NL 
  3607. NL = vbNewLine
  3608. stream.WriteLine _
  3609. GetResource("L_HelpInput_001_0_Message") & NL & _
  3610. GetResource("L_HelpInput_002_0_Message") & NL & _
  3611. GetResource("L_HelpInput_003_0_Message") & NL & _
  3612. GetResource("L_HelpInput_004_0_Message") & NL & _
  3613. GetResource("L_HelpInput_005_0_Message") & NL & _
  3614. GetResource("L_HelpInput_006_0_Message") & NL & _
  3615. GetResource("L_HelpInput_007_0_Message") & NL & _
  3616. GetResource("L_HelpInput_008_0_Message") & NL & _
  3617. GetResource("L_HelpInput_009_0_Message") & NL & _
  3618. GetResource("L_HelpInput_010_0_Message") & NL & _
  3619. GetResource("L_HelpInput_011_0_Message") & NL & _
  3620. GetResource("L_HelpInput_012_0_Message") & NL & _
  3621. GetResource("L_HelpInput_013_0_Message") & NL & _
  3622. GetResource("L_HelpInput_014_0_Message") & NL & _
  3623. GetResource("L_HelpInput_015_0_Message") & NL & _
  3624. GetResource("L_HelpInput_016_0_Message") & NL & _
  3625. GetResource("L_HelpInput_017_0_Message") & NL & _
  3626. GetResource("L_HelpInput_018_0_Message") & NL & _
  3627. GetResource("L_HelpInput_019_0_Message") & NL & _
  3628. GetResource("L_HelpInput_020_0_Message") & NL & _
  3629. GetResource("L_HelpInput_021_0_Message") & NL & _
  3630. GetResource("L_HelpInput_022_0_Message") & NL & _
  3631. GetResource("X_HelpInput_023_0_Message") & NL & _
  3632. GetResource("X_HelpInput_024_0_Message") & NL & _
  3633. GetResource("L_Help_Blank_0_Message") & NL & _
  3634. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3635. GetResource("X_Help_SeeAlso_Set_Message") & NL & _
  3636. GetResource("X_Help_SeeAlso_Create_Message") & NL & _
  3637. GetResource("X_Help_SeeAlso_Invoke_Message")
  3638. End Sub
  3639.  
  3640. '''''''''''''''''''''
  3641. ' HELP - REMOTE
  3642. Private Sub HelpRemote(stream)
  3643. dim NL 
  3644. NL = vbNewLine
  3645. stream.WriteLine _
  3646. GetResource("L_HelpRemote_001_0_Message") & NL & _
  3647. GetResource("L_HelpRemote_002_0_Message") & NL & _
  3648. GetResource("L_HelpRemote_003_0_Message") & NL & _
  3649. GetResource("L_HelpRemote_004_0_Message") & NL & _
  3650. GetResource("L_HelpRemote_005_0_Message") & NL & _
  3651. GetResource("L_HelpRemote_006_0_Message") & NL & _
  3652. GetResource("L_HelpRemote_007_0_Message") & NL & _
  3653. GetResource("L_HelpRemote_008_0_Message") & NL & _
  3654. GetResource("L_HelpRemote_009_0_Message") & NL & _
  3655. GetResource("L_HelpRemote_010_0_Message") & NL & _
  3656. GetResource("L_HelpRemote_011_0_Message") & NL & _
  3657. GetResource("L_HelpRemote_012_0_Message") & NL & _
  3658. GetResource("L_HelpRemote_013_0_Message") & NL & _
  3659. GetResource("L_HelpRemote_014_0_Message") & NL & _
  3660. GetResource("L_HelpRemote_015_0_Message") & NL & _
  3661. GetResource("L_HelpRemote_016_0_Message") & NL & _
  3662. GetResource("L_HelpRemote_017_0_Message") & NL & _
  3663. GetResource("L_HelpRemote_018_0_Message") & NL & _
  3664. GetResource("L_Help_Blank_0_Message") & NL & _
  3665. GetResource("L_HelpRemoteExample_001_0_Message") & NL & _
  3666. GetResource("X_HelpRemoteExample_002_0_Message") & NL & _
  3667. GetResource("L_HelpRemoteExample_003_0_Message") & NL & _
  3668. GetResource("L_HelpRemoteExample_004_0_Message") & NL & _
  3669. GetResource("X_HelpRemoteExample_005_0_Message") & NL & _
  3670. GetResource("L_HelpRemoteExample_006_0_Message") & NL & _
  3671. GetResource("L_HelpRemoteExample_007_0_Message") & NL & _
  3672. GetResource("X_HelpRemoteExample_008_0_Message") & NL & _
  3673. GetResource("L_HelpRemoteExample_009_0_Message") & NL & _
  3674. GetResource("L_HelpRemoteExample_010_0_Message") & NL & _
  3675. GetResource("X_HelpRemoteExample_011_0_Message") & NL & _
  3676. GetResource("L_Help_Blank_0_Message") & NL & _
  3677. GetResource("L_HelpRemoteUnencrypted_001_0_Message") & NL & _
  3678. GetResource("L_HelpRemoteUnencrypted_002_0_Message") & NL & _
  3679. GetResource("L_HelpRemoteUnencrypted_003_0_Message") & NL & _
  3680. GetResource("L_HelpRemoteUnencrypted_004_0_Message") & NL & _
  3681. GetResource("L_HelpRemoteUnencrypted_005_0_Message") & NL & _
  3682. GetResource("L_Help_Blank_0_Message") & NL & _
  3683. GetResource("L_HelpRemoteConfig_001_0_Message") & NL & _
  3684. GetResource("X_Help_SeeAlso_Config_Message") & NL & _
  3685. GetResource("L_Help_Blank_0_Message") & NL & _
  3686. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3687. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3688. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  3689. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  3690. GetResource("X_Help_SeeAlso_Switches_Message")
  3691. End Sub
  3692.  
  3693. '''''''''''''''''''''
  3694. ' HELP - CONFIG
  3695. Private Sub HelpConfig(stream)
  3696. dim NL 
  3697. NL = vbNewLine
  3698. stream.WriteLine _
  3699. GetResource("L_HelpConfig_001_0_Message") & NL & _
  3700. GetResource("L_HelpConfig_002_0_Message") & NL & _
  3701. GetResource("L_HelpConfig_003_0_Message") & NL & _
  3702. GetResource("L_HelpConfig_004_0_Message") & NL & _
  3703. GetResource("L_HelpConfig_005_0_Message") & NL & _
  3704. GetResource("L_HelpConfig_006_0_Message") & NL & _
  3705. GetResource("L_HelpConfig_007_0_Message") & NL & _
  3706. GetResource("L_HelpConfig_008_0_Message") & NL & _
  3707. GetResource("L_HelpConfig_009_0_Message") & NL & _
  3708. GetResource("X_HelpConfig_010_0_Message") & NL & _
  3709. GetResource("X_HelpConfig_011_0_Message") & NL & _
  3710. GetResource("X_HelpConfig_012_0_Message")  
  3711. '#ifdef URI_SECURITY_FEATURE  
  3712. 'GetResource("X_HelpConfig_012_1_Message") & NL & _
  3713. stream.WriteLine _
  3714. GetResource("X_HelpConfig_012_2_Message") & NL & _
  3715. GetResource("X_HelpConfig_012_3_Message") & NL & _
  3716. GetResource("L_HelpConfig_013_0_Message") & NL & _
  3717. GetResource("L_HelpConfig_014_0_Message") & NL & _
  3718. GetResource("L_HelpConfig_015_0_Message") & NL & _
  3719. GetResource("L_Help_Blank_0_Message") & NL & _
  3720. GetResource("L_HelpConfigAddress_001_0_Message") & NL & _
  3721. GetResource("L_HelpConfigAddress_002_0_Message") & NL & _
  3722. GetResource("L_HelpConfigAddress_003_0_Message") & NL & _
  3723. GetResource("L_HelpConfigAddress_004_0_Message") & NL & _
  3724. GetResource("L_HelpConfigAddress_005_0_Message") & NL & _
  3725. GetResource("L_HelpConfigAddress_006_0_Message") & NL & _
  3726. GetResource("L_HelpConfigAddress_007_0_Message") & NL & _
  3727. GetResource("L_HelpConfigAddress_008_0_Message") & NL & _
  3728. GetResource("L_Help_Blank_0_Message") & NL & _
  3729. GetResource("L_HelpCustomRemoteShell_001_0_Message") & NL & _
  3730. GetResource("L_HelpCustomRemoteShell_001_1_Message") & NL & _
  3731. GetResource("L_HelpCustomRemoteShell_002_0_Message") & NL & _
  3732. GetResource("L_HelpCustomRemoteShell_003_0_Message") & NL & _
  3733. GetResource("L_HelpCustomRemoteShell_004_0_Message") & NL & _
  3734. GetResource("L_HelpCustomRemoteShell_005_0_Message") & NL & _
  3735. GetResource("L_HelpCustomRemoteShell_006_0_Message") & NL & _
  3736. GetResource("L_HelpCustomRemoteShell_007_0_Message") & NL & _
  3737. GetResource("L_HelpCustomRemoteShell_008_0_Message") & NL & _
  3738. GetResource("L_HelpCustomRemoteShell_009_0_Message") & NL & _
  3739. GetResource("L_HelpCustomRemoteShell_010_0_Message") & NL & _
  3740. GetResource("L_HelpCustomRemoteShell_011_0_Message") & NL & _
  3741. GetResource("L_HelpCustomRemoteShell_011_1_Message") & NL & _
  3742. GetResource("L_HelpCustomRemoteShell_012_0_Message") & NL & _
  3743. GetResource("L_HelpCustomRemoteShell_013_0_Message") & NL & _
  3744. GetResource("L_HelpCustomRemoteShell_013_1_Message") & NL & _
  3745. GetResource("L_HelpCustomRemoteShell_014_0_Message") & NL & _
  3746. GetResource("L_Help_Blank_0_Message") & NL & _
  3747. GetResource("L_HelpCustomRemoteShellExamples_001_0_Message") & NL & _
  3748. GetResource("X_HelpCustomRemoteShellExamples_002_0_Message") & NL & _
  3749. GetResource("L_HelpCustomRemoteShellExamples_003_0_Message") & NL & _
  3750. GetResource("L_HelpCustomRemoteShellExamples_004_0_Message") & NL & _
  3751. GetResource("X_HelpCustomRemoteShellExamples_005_0_Message") & NL & _
  3752. GetResource("L_HelpCustomRemoteShellExamples_006_0_Message") & NL & _
  3753. GetResource("L_Help_Blank_0_Message") & NL & _
  3754. GetResource("L_HelpConfigTransport_001_0_Message") & NL & _
  3755. GetResource("L_HelpConfigTransport_002_0_Message") & NL & _
  3756. GetResource("L_HelpConfigTransport_003_0_Message") & NL & _
  3757. GetResource("L_HelpConfigTransport_004_0_Message") & NL & _
  3758. GetResource("L_HelpConfigTransport_005_0_Message") & NL & _
  3759. GetResource("L_HelpConfigTransport_006_0_Message") & NL & _
  3760. GetResource("L_HelpConfigTransport_007_0_Message") & NL & _
  3761. GetResource("L_HelpConfigTransport_008_0_Message") & NL & _
  3762. GetResource("L_HelpConfigTransport_009_0_Message") & NL & _
  3763. GetResource("L_HelpConfigTransport_010_0_Message") & NL & _
  3764. GetResource("L_HelpConfigTransport_011_0_Message") & NL & _
  3765. GetResource("L_HelpConfigTransport_012_0_Message") & NL & _
  3766. GetResource("L_HelpConfigTransport_013_0_Message") & NL & _
  3767. GetResource("L_HelpConfigTransport_014_0_Message") & NL & _
  3768. GetResource("L_Help_Blank_0_Message") & NL & _
  3769. GetResource("L_HelpConfigExamples_001_0_Message") & NL & _
  3770. GetResource("X_HelpConfigExamples_002_0_Message") & NL & _
  3771. GetResource("L_HelpConfigExamples_003_0_Message") & NL & _
  3772. GetResource("L_HelpConfigExamples_004_0_Message") & NL & _
  3773. GetResource("X_HelpConfigExamples_005_0_Message") & NL & _
  3774. GetResource("L_HelpConfigExamples_006_0_Message") & NL & _
  3775. GetResource("L_HelpConfigExamples_007_0_Message") & NL & _
  3776. GetResource("X_HelpConfigExamples_008_0_Message") & NL & _
  3777. GetResource("L_HelpConfigExamples_009_0_Message") & NL & _
  3778. GetResource("L_HelpConfigExamples_010_0_Message") & NL & _
  3779. GetResource("X_HelpConfigExamples_011_0_Message") & NL & _
  3780. GetResource("L_Help_Blank_0_Message") & NL & _
  3781. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3782. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  3783. GetResource("X_Help_SeeAlso_Aliases_Message") 
  3784. '#ifdef URI_SECURITY_FEATURE  
  3785. 'GetResource("X_Help_SeeAlso_UriSecurity_Message") & NL & _
  3786. stream.WriteLine _
  3787. GetResource("X_Help_SeeAlso_CertMapping_Message") & NL & _
  3788. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  3789. GetResource("X_Help_SeeAlso_Switches_Message")
  3790. End Sub
  3791.  
  3792. '''''''''''''''''''''
  3793. ' HELP - URISECURITY
  3794. Private Sub HelpUriSecurity(stream)
  3795. dim NL 
  3796. NL = vbNewLine
  3797. stream.WriteLine _
  3798. GetResource("L_HelpUriSecurity_001_0_Message") & NL & _
  3799. GetResource("L_HelpUriSecurity_002_0_Message") & NL & _
  3800. GetResource("L_HelpUriSecurity_003_0_Message") & NL & _
  3801. GetResource("L_HelpUriSecurity_004_0_Message") & NL & _
  3802. GetResource("L_HelpUriSecurity_005_0_Message") & NL & _
  3803. GetResource("L_HelpUriSecurity_006_0_Message") & NL & _
  3804. GetResource("L_HelpUriSecurity_007_0_Message") & NL & _
  3805. GetResource("L_HelpUriSecurity_008_0_Message") & NL & _
  3806. GetResource("L_HelpUriSecurity_009_0_Message") & NL & _
  3807. GetResource("L_HelpUriSecurity_010_0_Message") & NL & _
  3808. GetResource("L_HelpUriSecurity_011_0_Message") & NL & _
  3809. GetResource("L_HelpUriSecurity_012_0_Message") & NL & _
  3810. GetResource("L_HelpUriSecurity_012_1_Message") & NL & _
  3811. GetResource("L_HelpUriSecurity_012_2_Message") & NL & _
  3812. GetResource("L_HelpUriSecurity_013_0_Message") & NL & _
  3813. GetResource("L_HelpUriSecurity_014_0_Message") & NL & _
  3814. GetResource("L_HelpUriSecurity_015_0_Message") & NL & _
  3815. GetResource("L_HelpUriSecurity_016_0_Message") & NL & _
  3816. GetResource("L_Help_Blank_0_Message") & NL & _
  3817. GetResource("L_Help_Blank_0_Message") & NL & _
  3818. GetResource("L_Help_Blank_0_Message") & NL & _
  3819. GetResource("L_HelpUriSecurityExamples_001_0_Message") & NL & _
  3820. GetResource("L_HelpUriSecurityExamples_001_1_Message") & NL & _
  3821. GetResource("X_HelpUriSecurityExamples_002_0_Message") & NL & _
  3822. GetResource("L_HelpUriSecurityExamples_003_0_Message") & NL & _
  3823. GetResource("L_HelpUriSecurityExamples_004_0_Message") & NL & _
  3824. GetResource("L_HelpUriSecurityExamples_006_0_Message") & NL & _
  3825. GetResource("X_HelpUriSecurityExamples_006_0_Message") & NL & _
  3826. GetResource("X_HelpUriSecurityExamples_007_0_Message") & NL & _
  3827. GetResource("L_Help_Blank_0_Message") & NL & _
  3828. GetResource("L_Help_SeeAlso_Title_Message") 
  3829. '#ifdef URI_SECURITY_FEATURE  
  3830. 'GetResource("X_Help_SeeAlso_createSDDL_Message") & NL & _
  3831. stream.WriteLine _
  3832. GetResource("X_Help_SeeAlso_configSDDL_Message") & NL & _
  3833. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  3834. GetResource("X_Help_SeeAlso_Switches_Message")
  3835. End Sub
  3836.  
  3837.  
  3838. '''''''''''''''''''''
  3839. ' HELP - CertMapping
  3840. Private Sub HelpCertMapping(stream)
  3841. dim NL 
  3842. NL = vbNewLine
  3843. stream.WriteLine _
  3844. GetResource("L_HelpCertMapping_001_0_Message") & NL & _
  3845. GetResource("L_HelpCertMapping_002_0_Message") & NL & _
  3846. GetResource("L_HelpCertMapping_003_0_Message") & NL & _
  3847. GetResource("L_HelpCertMapping_003_1_Message") & NL & _
  3848. GetResource("L_HelpCertMapping_004_0_Message") & NL & _
  3849. GetResource("L_HelpCertMapping_005_0_Message") & NL & _
  3850. GetResource("L_HelpCertMapping_006_0_Message") & NL & _
  3851. GetResource("L_HelpCertMapping_007_0_Message") & NL & _
  3852. GetResource("L_HelpCertMapping_008_0_Message") & NL & _
  3853. GetResource("L_HelpCertMapping_009_0_Message") & NL & _
  3854. GetResource("L_HelpCertMapping_009_1_Message") & NL & _
  3855. GetResource("L_HelpCertMapping_009_2_Message") & NL & _
  3856. GetResource("L_HelpCertMapping_009_3_Message") & NL & _
  3857. GetResource("L_HelpCertMapping_010_0_Message") & NL & _
  3858. GetResource("L_HelpCertMapping_011_0_Message") & NL & _
  3859. GetResource("L_HelpCertMapping_012_0_Message") & NL & _
  3860. GetResource("L_HelpCertMapping_012_1_Message") & NL & _
  3861. GetResource("L_HelpCertMapping_012_2_Message") & NL & _
  3862. GetResource("L_HelpCertMapping_013_0_Message") & NL & _
  3863. GetResource("L_HelpCertMapping_014_0_Message") & NL & _
  3864. GetResource("L_HelpCertMapping_014_1_Message") & NL & _
  3865. GetResource("L_HelpCertMapping_014_2_Message") & NL & _
  3866. GetResource("L_HelpCertMapping_014_3_Message") & NL & _
  3867. GetResource("L_HelpCertMapping_014_4_Message") & NL & _
  3868. GetResource("L_HelpCertMapping_015_0_Message") & NL & _
  3869. GetResource("L_HelpCertMapping_016_0_Message") & NL & _
  3870. GetResource("L_HelpCertMapping_017_0_Message") & NL & _
  3871. GetResource("L_HelpCertMapping_018_0_Message") & NL & _
  3872. GetResource("L_HelpCertMapping_019_0_Message") & NL & _
  3873. GetResource("L_HelpCertMapping_020_0_Message") & NL & _
  3874. GetResource("L_HelpCertMapping_021_0_Message") & NL & _
  3875. GetResource("L_HelpCertMapping_022_0_Message") & NL & _
  3876. GetResource("L_Help_Blank_0_Message") & NL & _
  3877. GetResource("L_Help_Blank_0_Message") & NL & _
  3878. GetResource("L_Help_Blank_0_Message") & NL & _
  3879. GetResource("L_HelpCertMappingExamples_001_0_Message") & NL & _
  3880. GetResource("X_HelpCertMappingExamples_002_0_Message") & NL & _
  3881. GetResource("L_Help_Blank_0_Message") & NL & _
  3882. GetResource("L_HelpCertMappingExamples_003_0_Message") & NL & _
  3883. GetResource("X_HelpCertMappingExamples_004_0_Message") & NL & _
  3884. GetResource("L_HelpCertMappingExamples_005_0_Message") & NL & _
  3885. GetResource("L_Help_Blank_0_Message") & NL & _
  3886. GetResource("L_Help_SeeAlso_Title_Message")  
  3887. '#ifdef URI_SECURITY_FEATURE  
  3888. 'GetResource("X_Help_SeeAlso_UriSecurity_Message") & NL & _
  3889. 'GetResource("X_Help_SeeAlso_createSDDL_Message") & NL & _
  3890. stream.WriteLine _
  3891. GetResource("X_Help_SeeAlso_configSDDL_Message") & NL & _
  3892. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  3893. GetResource("X_Help_SeeAlso_Switches_Message")
  3894. End Sub
  3895.  
  3896. '''''''''''''''''''''
  3897. ' HELP - CUSTOMREMOTESHELL
  3898. Private Sub HelpCustomRemoteShell(stream)
  3899. dim NL 
  3900. NL = vbNewLine
  3901. stream.WriteLine _
  3902. GetResource("L_HelpCustomRemoteShell_001_0_Message") & NL & _
  3903. GetResource("L_HelpCustomRemoteShell_001_1_Message") & NL & _
  3904. GetResource("L_HelpCustomRemoteShell_002_0_Message") & NL & _
  3905. GetResource("L_HelpCustomRemoteShell_003_0_Message") & NL & _
  3906. GetResource("L_HelpCustomRemoteShell_004_0_Message") & NL & _
  3907. GetResource("L_HelpCustomRemoteShell_005_0_Message") & NL & _
  3908. GetResource("L_HelpCustomRemoteShell_006_0_Message") & NL & _
  3909. GetResource("L_HelpCustomRemoteShell_007_0_Message") & NL & _
  3910. GetResource("L_HelpCustomRemoteShell_008_0_Message") & NL & _
  3911. GetResource("L_HelpCustomRemoteShell_009_0_Message") & NL & _
  3912. GetResource("L_HelpCustomRemoteShell_010_0_Message") & NL & _
  3913. GetResource("L_HelpCustomRemoteShell_011_0_Message") & NL & _
  3914. GetResource("L_HelpCustomRemoteShell_011_1_Message") & NL & _
  3915. GetResource("L_HelpCustomRemoteShell_012_0_Message") & NL & _
  3916. GetResource("L_HelpCustomRemoteShell_012_1_Message") & NL & _
  3917. GetResource("L_HelpCustomRemoteShell_012_2_Message") & NL & _
  3918. GetResource("L_HelpCustomRemoteShell_013_0_Message") & NL & _
  3919. GetResource("L_HelpCustomRemoteShell_013_1_Message") & NL & _
  3920. GetResource("L_HelpCustomRemoteShell_014_0_Message") & NL & _
  3921. GetResource("L_Help_Blank_0_Message") & NL & _
  3922. GetResource("L_Help_Blank_0_Message") & NL & _
  3923. GetResource("L_Help_Blank_0_Message") & NL & _
  3924. GetResource("L_HelpCustomRemoteShellExamples_001_0_Message") & NL & _
  3925. GetResource("X_HelpCustomRemoteShellExamples_002_0_Message") & NL & _
  3926. GetResource("L_HelpCustomRemoteShellExamples_003_0_Message") & NL & _
  3927. GetResource("L_HelpCustomRemoteShellExamples_004_0_Message") & NL & _
  3928. GetResource("X_HelpCustomRemoteShellExamples_005_0_Message") & NL & _
  3929. GetResource("L_HelpCustomRemoteShellExamples_006_0_Message") & NL & _
  3930. GetResource("L_Help_Blank_0_Message") & NL & _
  3931. GetResource("L_Help_SeeAlso_Title_Message") 
  3932. '#ifdef URI_SECURITY_FEATURE  
  3933. 'GetResource("X_Help_SeeAlso_UriSecurity_Message") 
  3934. End Sub
  3935.  
  3936. '''''''''''''''''''''
  3937. ' HELP - QUICKCONFIG
  3938. Private Sub HelpQuickConfig(stream)
  3939. dim NL 
  3940. NL = vbNewLine
  3941. stream.WriteLine _
  3942. GetResource("X_HelpQuickConfig_001_0_Message") & NL & _
  3943. GetResource("X_HelpQuickConfig_002_0_Message") & NL & _
  3944. GetResource("X_HelpQuickConfig_003_0_Message") & NL & _
  3945. GetResource("X_HelpQuickConfig_004_0_Message") & NL & _
  3946. GetResource("X_HelpQuickConfig_005_0_Message") & NL & _
  3947. GetResource("X_HelpQuickConfig_006_0_Message") & NL & _
  3948. GetResource("X_HelpQuickConfig_007_0_Message") & NL & _
  3949. GetResource("X_HelpQuickConfig_008_0_Message") & NL & _
  3950. GetResource("X_HelpQuickConfig_009_0_Message") & NL & _
  3951. GetResource("X_HelpQuickConfig_010_0_Message") & NL & _
  3952. GetResource("X_HelpQuickConfig_010_1_Message") & NL & _
  3953. GetResource("X_HelpQuickConfig_011_0_Message") & NL & _
  3954. GetResource("L_Help_Blank_0_Message") & NL & _
  3955. GetResource("X_HelpQuickConfig_012_0_Message") & NL & _
  3956. GetResource("X_HelpQuickConfig_013_0_Message") & NL & _
  3957. GetResource("X_HelpQuickConfig_014_0_Message") & NL & _
  3958. GetResource("X_HelpQuickConfig_015_0_Message") & NL & _
  3959. GetResource("L_Help_Blank_0_Message") & NL & _
  3960. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  3961. GetResource("X_Help_SeeAlso_Config_Message")
  3962. End Sub
  3963.  
  3964. '''''''''''''''''''''
  3965. ' HELP - URIS
  3966. Private Sub HelpUris(stream)
  3967. dim NL 
  3968. NL = vbNewLine
  3969. stream.WriteLine _
  3970. GetResource("L_HelpUris_001_0_Message") & NL & _
  3971. GetResource("L_HelpUris_002_0_Message") & NL & _
  3972. GetResource("L_HelpUris_003_0_Message") & NL & _
  3973. GetResource("L_HelpUris_004_0_Message") & NL & _
  3974. GetResource("X_HelpUris_005_0_Message") & NL & _
  3975. GetResource("L_HelpUris_006_0_Message") & NL & _
  3976. GetResource("L_HelpUris_007_0_Message") & NL & _
  3977. GetResource("X_HelpUris_008_0_Message") & NL & _
  3978. GetResource("X_HelpUris_009_0_Message") & NL & _
  3979. GetResource("X_HelpUris_010_0_Message") & NL & _
  3980. GetResource("L_HelpUris_011_0_Message") & NL & _
  3981. GetResource("L_HelpUris_012_0_Message") & NL & _
  3982. GetResource("X_HelpUris_013_0_Message") & NL & _
  3983. GetResource("X_HelpUris_013_1_Message") & NL & _
  3984. GetResource("X_HelpUris_014_0_Message") & NL & _
  3985. GetResource("L_HelpUris_015_0_Message") & NL & _
  3986. GetResource("L_HelpUris_015_1_Message") & NL & _
  3987. GetResource("L_HelpUris_015_2_Message") & NL & _
  3988. GetResource("L_HelpUris_015_3_Message") & NL & _
  3989. GetResource("X_HelpUris_015_4_Message") & NL & _
  3990. GetResource("L_HelpUris_015_5_Message") & NL & _
  3991. GetResource("L_HelpUris_015_6_Message") & NL & _
  3992. GetResource("L_HelpUris_015_7_Message") & NL & _
  3993. GetResource("X_HelpUris_015_8_Message") & NL & _
  3994. GetResource("L_HelpUris_015_9_Message") & NL & _
  3995. GetResource("L_HelpUris_016_0_Message") & NL & _
  3996. GetResource("L_HelpUris_017_0_Message") & NL & _
  3997. GetResource("L_HelpUris_018_0_Message") & NL & _
  3998. GetResource("L_Help_Blank_0_Message") & NL & _
  3999. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  4000. GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
  4001. GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
  4002. GetResource("X_Help_SeeAlso_Input_Message") & NL & _
  4003. GetResource("X_Help_SeeAlso_Switches_Message")
  4004. End Sub
  4005.  
  4006. '''''''''''''''''''''
  4007. ' HELP - ALIAS
  4008. Private Sub HelpAlias(stream)
  4009. dim NL 
  4010. NL = vbNewLine
  4011. stream.WriteLine _
  4012. GetResource("L_HelpAlias_001_0_Message") & NL & _
  4013. GetResource("L_HelpAlias_002_0_Message") & NL & _
  4014. GetResource("L_HelpAlias_003_0_Message") & NL & _
  4015. GetResource("X_HelpAlias_004_0_Message") & NL & _
  4016. GetResource("X_HelpAlias_005_0_Message") & NL & _
  4017. GetResource("X_HelpAlias_006_0_Message") & NL & _
  4018. GetResource("X_HelpAlias_007_0_Message") & NL & _
  4019. GetResource("X_HelpAlias_008_0_Message") & NL & _
  4020. GetResource("X_HelpAlias_009_0_Message") & NL & _
  4021. GetResource("L_HelpAlias_010_0_Message") & NL & _
  4022. GetResource("L_HelpAlias_011_0_Message") & NL & _
  4023. GetResource("x_HelpAlias_012_0_Message") & NL & _
  4024. GetResource("L_HelpAlias_013_0_Message") & NL & _
  4025. GetResource("L_HelpAlias_014_0_Message") & NL & _
  4026. GetResource("X_HelpAlias_015_0_Message") & NL & _
  4027. GetResource("L_Help_Blank_0_Message") & NL & _
  4028. GetResource("L_Help_SeeAlso_Title_Message") & NL & _
  4029. GetResource("X_Help_SeeAlso_Aliases_Message")
  4030. End Sub
  4031.