'
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' VBScript Source File
'
' Script Name: winrm.vbs
'
Option Explicit
'''''''''''''''''''''
' Error codes
private const ERR_OK = 0
private const ERR_GENERAL_FAILURE = 1
'''''''''''''''''''''
' Messages
private const L_ONLYCSCRIPT_Message = "Can be executed only by cscript.exe."
private const L_UNKOPNM_Message = "Unknown operation name: "
private const L_OP_Message = "Operation - "
private const L_NOFILE_Message = "File does not exist: "
private const L_PARZERO_Message = "Parameter is zero length #"
private const L_INVOPT_ErrorMessage = "Switch not allowed with the given operation: "
private const L_UNKOPT_ErrorMessage = "Unknown switch: "
private const L_BLANKOPT_ErrorMessage = "Missing switch name"
private const L_UNKOPT_GenMessage = "Invalid use of command line. Type ""winrm -?"" for help."
private const L_HELP_GenMessage = "Type ""winrm -?"" for help."
private const L_ScriptNameNotFound_ErrorMessage = "Invalid usage of command line; winrm.vbs not found in command string."
private const L_ImproperUseOfQuotes_ErrorMessage = "A quoted parameter value must begin and end with quotes: "
private const L_BADMATCNT1_Message = "Unexpected match count - one match is expected: "
private const L_OPTNOTUNQ_Message = "Option is not unique: "
private const L_URIMISSING_Message = "URI is missing"
private const L_ACTIONMISSING_Message = "Action is missing"
private const L_URIZERO_Message = "URI is 0 length"
private const L_URIZEROTOK_Message = "Invalid URI, token is 0 length"
private const L_INVWMIURI1_Message = "Invalid WMI resource URI - no '/' found (at least 2 expected)"
private const L_INVWMIURI2_Message = "Invalid WMI resource URI - only one '/' found (at least 2 expected)"
private const L_NOLASTTOK_Message = "Invalid URI - cannot locate last token for root node name"
private const L_HashSyntax_ErrorMessage = "Syntax Error: input must be of the form {KEY=""VALUE""[;KEY=""VALUE""]}"
private const L_ARGNOVAL_Message = "Argument's value is not provided: "
private const L_XMLERROR_Message = "Unable to parse XML: "
private const L_XSLERROR_Message = "Unable to parse XSL file. Either it is inaccessible or invalid: "
private const L_MSXML3MISSING_Message = "Unable to load MSXML3, required by -format option and for set using ""@{...}"""
private const L_FORMATLERROR_Message = "Invalid option for -format: "
private const L_FORMATFAILED_Message = "Unable to reformat message. Raw, unformatted, message: "
private const L_PUT_PARAM_NOMATCH_Message = "Parameter name does not match any properties on resource: "
private const L_PUT_PARAM_MULTIMATCH_Message = "Parameter matches more than one property on resource: "
private const L_PUT_PARAM_NOARRAY_Message = "Multiple matching parameter names not allowedin @{...}: "
private const L_PUT_PARAM_NOTATTR_Message = "Parameter matches a non-text property on resource: "
private const L_PUT_PARAM_EMPTY_Message = "Parameter set is empty."
private const L_OPTIONS_PARAMETER_EMPTY_Message = "Options parameter has no value or is malformed."
private const L_RESOURCELOCATOR_Message = "Unable to create ResourceLocator object."
private const L_PUT_PARAM_NOINPUT_Message = "No input provided through ""@{...}"" or ""-file:"" commandline parameters."
private const L_ERR_Message = "Error: "
private const L_ERRNO_Message = "Error number: "
private const L_OpDoesntAcceptInput_ErrorMessage = "Input was supplied to an operation that does not accept input."
private const L_QuickConfigNoChangesNeeded_Message = "WinRM is already set up for remote management on this computer."
private const L_QuickConfig_MissingUpdateXml_0_ErrorMessage = "Could not find update instructions in analysis result."
private const L_QuickConfigUpdated_Message = "WinRM has been updated for remote management."
private const L_QuickConfigUpdateFailed_ErrorMessage = "One or more update steps could not be completed."
private const L_QuickConfig_InvalidBool_0_ErrorMessage = "Could not determine if remoting is enabled."
private const L_QuickConfig_RemotingDisabledbyGP_00_ErrorMessage = "Cannot complete the request due to a conflicting Group Policy setting."
private const L_QuickConfig_UpdatesNeeded_0_Message = "WinRM is not set up to allow remote access to this machine for management."
private const L_QuickConfig_UpdatesNeeded_1_Message = "The following changes must be made:"
private const L_QuickConfig_Prompt_0_Message = "Make these changes [y/n]? "
private const L_QuickConfigNoServiceChangesNeeded_Message = "WinRM is already set up to receive requests on this computer."
private const L_QuickConfigNoServiceChangesNeeded_Message2 = "WinRM service is already running on this machine."
private const L_QuickConfigUpdatedService_Message = "WinRM has been updated to receive requests."
private const L_QuickConfig_ServiceUpdatesNeeded_0_Message = "WinRM is not set up to receive requests on this machine."
'''''''''''''''''''''
' HELP - GENERAL
private const L_Help_Title_0_Message = "Windows Remote Management Command Line Tool"
private const L_Help_Blank_0_Message = ""
private const L_Help_SeeAlso_Title_Message = "See also:"
private const X_Help_SeeAlso_Aliases_Message = " winrm help aliases"
private const X_Help_SeeAlso_Config_Message = " winrm help config"
private const X_Help_SeeAlso_CertMapping_Message = " winrm help certmapping"
private const X_Help_SeeAlso_CustomRemoteShell_Message = " winrm help customremoteshell"
private const X_Help_SeeAlso_Input_Message = " winrm help input"
private const X_Help_SeeAlso_Filters_Message = " winrm help filters"
private const X_Help_SeeAlso_Switches_Message = " winrm help switches"
private const X_Help_SeeAlso_Uris_Message = " winrm help uris"
private const X_Help_SeeAlso_Auth_Message = " winrm help auth"
private const X_Help_SeeAlso_Set_Message = " winrm set -?"
private const X_Help_SeeAlso_Create_Message = " winrm create -?"
private const X_Help_SeeAlso_Enumerate_Message = " winrm enumerate -?"
private const X_Help_SeeAlso_Invoke_Message = " winrm invoke -?"
private const X_Help_SeeAlso_Remoting_Message = " winrm help remoting"
private const X_Help_SeeAlso_configSDDL_Message = " winrm configsddl -?"
'''''''''''''''''''''
' HELP - HELP
private const L_HelpHelp_000_0_Message = "Windows Remote Management (WinRM) is the Microsoft implementation of "
private const L_HelpHelp_001_0_Message = "the WS-Management protocol which provides a secure way to communicate "
private const L_HelpHelp_001_1_Message = "with local and remote computers using web services. "
private const L_HelpHelp_002_0_Message = ""
private const L_HelpHelp_003_0_Message = "Usage:"
private const L_HelpHelp_004_0_Message = " winrm OPERATION RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
private const L_HelpHelp_005_0_Message = " [@{KEY=VALUE[;KEY=VALUE]...}]"
private const L_HelpHelp_007_0_Message = ""
private const L_HelpHelp_008_0_Message = "For help on a specific operation:"
private const L_HelpHelp_009_0_Message = " winrm g[et] -? Retrieving management information."
private const L_HelpHelp_010_0_Message = " winrm s[et] -? Modifying management information."
private const L_HelpHelp_011_0_Message = " winrm c[reate] -? Creating new instances of management resources."
private const L_HelpHelp_012_0_Message = " winrm d[elete] -? Remove an instance of a management resource."
private const L_HelpHelp_013_0_Message = " winrm e[numerate] -? List all instances of a management resource."
private const L_HelpHelp_014_0_Message = " winrm i[nvoke] -? Executes a method on a management resource."
private const L_HelpHelp_015_0_Message = " winrm id[entify] -? Determines if a WS-Management implementation is"
private const L_HelpHelp_015_1_Message = " running on the remote machine."
private const L_HelpHelp_016_0_Message = " winrm quickconfig -? Configures this machine to accept WS-Management"
private const L_HelpHelp_016_1_Message = " requests from other machines."
private const L_HelpHelp_016_3_Message = " winrm configSDDL -? Modify an existing security descriptor for a URI."
private const L_HelpHelp_016_4_Message = " winrm helpmsg -? Displays error message for the error code."
private const L_HelpHelp_017_0_Message = ""
private const L_HelpHelp_018_0_Message = "For help on related topics:"
private const L_HelpHelp_019_0_Message = " winrm help uris How to construct resource URIs."
private const L_HelpHelp_020_0_Message = " winrm help aliases Abbreviations for URIs."
private const L_HelpHelp_021_0_Message = " winrm help config Configuring WinRM client and service settings."
private const L_HelpHelp_021_2_Message = " winrm help certmapping Configuring client certificate access."
private const L_HelpHelp_022_0_Message = " winrm help remoting How to access remote machines."
private const L_HelpHelp_023_0_Message = " winrm help auth Providing credentials for remote access."
private const L_HelpHelp_024_0_Message = " winrm help input Providing input to create, set, and invoke."
private const L_HelpHelp_025_0_Message = " winrm help switches Other switches such as formatting, options, etc."
private const L_HelpHelp_026_0_Message = " winrm help proxy Providing proxy information."
'''''''''''''''''''''
' HELP - GET
private const L_HelpGet_000_0_Message = "winrm get RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
private const L_HelpGet_001_0_Message = ""
private const L_HelpGet_002_0_Message = "Retrieves instances of RESOURCE_URI using specified "
private const L_HelpGet_003_0_Message = "options and key-value pairs."
private const L_HelpGet_004_0_Message = ""
private const L_HelpGet_005_0_Message = "Example: Retrieve current configuration in XML format:"
private const X_HelpGet_006_0_Message = " winrm get winrm/config -format:pretty"
private const L_HelpGet_007_0_Message = ""
private const L_HelpGet_008_0_Message = "Example: Retrieve spooler instance of Win32_Service class:"
private const X_HelpGet_009_0_Message = " winrm get wmicimv2/Win32_Service?Name=spooler"
private const L_HelpGet_010_0_Message = ""
private const L_HelpGet_014_0_Message = "Example: Retrieve a certmapping entry on this machine:"
private const X_HelpGet_015_0_Message = " winrm get winrm/config/service/certmapping?Issuer=1212131238d84023982e381f20391a2935301923+Subject=*.example.com+URI=wmicimv2/*"
private const L_HelpGet_016_0_Message = ""
'''''''''''''''''''''
' HELP - SET
private const L_HelpSet_001_0_Message = "winrm set RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
private const L_HelpSet_002_0_Message = " [@{KEY=""VALUE""[;KEY=""VALUE""]}]"
private const L_HelpSet_003_0_Message = " [-file:VALUE]"
private const L_HelpSet_004_0_Message = ""
private const L_HelpSet_005_0_Message = "Modifies settings in RESOURCE_URI using specified switches"
private const L_HelpSet_006_0_Message = "and input of changed values via key-value pairs or updated "
private const L_HelpSet_007_0_Message = "object via an input file."
private const L_HelpSet_008_0_Message = ""
private const L_HelpSet_009_0_Message = "Example: Modify a configuration property of WinRM:"
private const X_HelpSet_010_0_Message = " winrm set winrm/config @{MaxEnvelopeSizekb=""100""}"
private const L_HelpSet_011_0_Message = ""
private const L_HelpSet_012_0_Message = "Example: Disable a listener on this machine:"
private const X_HelpSet_013_0_Message = " winrm set winrm/config/Listener?Address=*+Transport=HTTPS @{Enabled=""false""}"
private const L_HelpSet_014_0_Message = ""
private const L_HelpSet_018_0_Message = "Example: Disable a certmapping entry on this machine:"
private const X_HelpSet_019_0_Message = " Winrm set winrm/config/service/certmapping?Issuer=1212131238d84023982e381f20391a2935301923+Subject=*.example.com+URI=wmicimv2/* @{Enabled=""false""}"
private const L_HelpSet_020_0_Message = ""
'''''''''''''''''''''
' HELP - CREATE
private const L_HelpCreate_001_0_Message = "winrm create RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
private const L_HelpCreate_002_0_Message = " [@{KEY=""VALUE""[;KEY=""VALUE""]}]"
private const L_HelpCreate_003_0_Message = " [-file:VALUE]"
private const L_HelpCreate_004_0_Message = ""
private const L_HelpCreate_005_0_Message = "Spawns an instance of RESOURCE_URI using specified "
private const L_HelpCreate_006_0_Message = "key-value pairs or input file."
private const L_HelpCreate_007_0_Message = ""
private const L_HelpCreate_008_0_Message = "Example: Create instance of HTTP Listener on IPv6 address:"
private const X_HelpCreate_009_0_Message = " winrm create winrm/config/Listener?Address=IP:3ffe:8311:ffff:f2c1::5e61+Transport=HTTP"
private const L_HelpCreate_010_0_Message = ""
private const L_HelpCreate_011_0_Message = "Example: Create instance of HTTPS Listener on all IPs:"
private const X_HelpCreate_012_0_Message = " winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""HOST"";CertificateThumbprint=""XXXXXXXXXX""}"
private const L_HelpCreate_013_0_Message = "Note: XXXXXXXXXX represents a 40-digit hex string; see help config."
private const L_HelpCreate_014_0_Message = ""
private const L_HelpCreate_015_0_Message = "Example: Create a windows shell command instance from xml:"
private const X_HelpCreate_016_0_Message = " winrm create shell/cmd -file:shell.xml -remote:srv.corp.com"
private const L_HelpCreate_017_0_Message = ""
private const L_HelpCreate_022_0_Message = "Example: Create a CertMapping entry:"
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"
private const L_HelpCreate_024_0_Message = ""
'''''''''''''''''''''
' HELP - DELETE
private const L_HelpDelete_001_0_Message = "winrm delete RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
private const L_HelpDelete_002_0_Message = ""
private const L_HelpDelete_003_0_Message = "Removes an instance of RESOURCE_URI."
private const L_HelpDelete_004_0_Message = ""
private const L_HelpDelete_005_0_Message = "Example: delete the HTTP listener on this machine for given IP address:"
private const X_HelpDelete_006_0_Message = " winrm delete winrm/config/Listener?Address=IP:192.168.2.1+Transport=HTTP"
private const L_HelpDelete_007_0_Message = ""
private const L_HelpDelete_008_0_Message = "Example: delete a certmapping entry:"
private const X_HelpDelete_009_0_Message = " winrm delete winrm/config/service/certmapping?Issuer=1212131238d84023982e381f20391a2935301923+Subject=*.example.com+URI=wmicimv2/*"
private const L_HelpDelete_010_0_Message = ""
'''''''''''''''''''''
' HELP - ENUMERATE
private const L_HelpEnum_001_0_Message = "winrm enumerate RESOURCE_URI [-ReturnType:Value] [-Shallow]"
private const L_HelpEnum_001_1_Message = " [-BasePropertiesOnly] [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
private const L_HelpEnum_002_0_Message = ""
private const L_HelpEnum_003_0_Message = "Lists instances of RESOURCE_URI."
private const L_HelpEnum_004_0_Message = "Can limit the instances returned by using a filter and dialect if the "
private const L_HelpEnum_005_0_Message = "resource supports these."
private const L_HelpEnum_006_0_Message = ""
private const L_HelpEnum_006_1_Message = "ReturnType"
private const L_HelpEnum_006_2_Message = "----------"
private const L_HelpEnum_006_3_Message = "returnType is an optional switch that determines the type of data returned."
private const L_HelpEnum_006_4_Message = "Possible options are 'Object', 'EPR' and 'ObjectAndEPR'. Default is Object"
private const L_HelpEnum_006_5_Message = "If Object is specified or if switch is omitted, then only the objects are"
private const L_HelpEnum_006_6_Message = "returned."
private const L_HelpEnum_006_7_Message = "If EPR is specified, then only the EPRs (End point reference) of the"
private const L_HelpEnum_006_8_Message = "objects are returned. EPRs contain information about the resource URI and"
private const L_HelpEnum_006_9_Message = "selectors for the instance."
private const L_HelpEnum_006_10_Message = "If ObjectAndEPR is specified, then both the object and the associated EPRs"
private const L_HelpEnum_006_11_Message = "are returned."
private const L_HelpEnum_006_12_Message = ""
private const L_HelpEnum_006_13_Message = "Shallow"
private const L_HelpEnum_006_14_Message = "-------"
private const L_HelpEnum_006_15_Message = "Enumerate only instances of the base class specified in the resource URI."
private const L_HelpEnum_006_16_Message = "If this flag is not specified, instances of the base class specified in "
private const L_HelpEnum_006_17_Message = "the resource URI and all its derived classes are returned."
private const L_HelpEnum_006_18_Message = ""
private const L_HelpEnum_006_19_Message = "BasePropertiesOnly"
private const L_HelpEnum_006_20_Message = "------------------"
private const L_HelpEnum_006_21_Message = "Includes only those properties that are part of the base class specified"
private const L_HelpEnum_006_22_Message = "in the resource URI. When -Shallow is specified, this flag has no effect. "
private const L_HelpEnum_006_23_Message = ""
private const L_HelpEnum_007_0_Message = "Example: List all WinRM listeners on this machine:"
private const X_HelpEnum_008_0_Message = " winrm enumerate winrm/config/Listener"
private const L_HelpEnum_009_0_Message = ""
private const L_HelpEnum_010_0_Message = "Example: List all instances of Win32_Service class:"
private const X_HelpEnum_011_0_Message = " winrm enumerate wmicimv2/Win32_Service"
private const L_HelpEnum_012_0_Message = ""
'private const L_HelpEnum_013_0_Message = "Example: List all auto start services that are stopped:"
'private const X_HelpEnum_014_0_Message = " winrm enum wmicimv2/* -filter:""select * from win32_service where StartMode=\""Auto\"" and State = \""Stopped\"" """
'private const L_HelpEnum_015_0_Message = ""
private const L_HelpEnum_016_0_Message = "Example: List all shell instances on a machine:"
private const X_HelpEnum_017_0_Message = " winrm enum shell/cmd -remote:srv.corp.com"
private const L_HelpEnum_018_0_Message = ""
private const L_HelpEnum_019_0_Message = "Example: List resources accessible to the current user:"
private const X_HelpEnum_020_0_Message = " winrm enum winrm/config/resource"
private const L_HelpEnum_021_0_Message = ""
private const L_HelpEnum_022_0_Message = "Example: List all certmapping settings:"
private const X_HelpEnum_023_0_Message = " winrm enum winrm/config/service/certmapping"
private const L_HelpEnum_024_0_Message = ""
'''''''''''''''''''''
' HELP - INVOKE
private const L_HelpInvoke_001_0_Message = "winrm invoke ACTION RESOURCE_URI [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
private const L_HelpInvoke_002_0_Message = " [@{KEY=""VALUE""[;KEY=""VALUE""]}]"
private const L_HelpInvoke_003_0_Message = " [-file:VALUE]"
private const L_HelpInvoke_004_0_Message = ""
private const L_HelpInvoke_005_0_Message = "Executes method specified by ACTION on target object specified by RESOURCE_URI"
private const L_HelpInvoke_006_0_Message = "with parameters specified by key-value pairs."
private const L_HelpInvoke_007_0_Message = ""
private const L_HelpInvoke_008_0_Message = "Example: Call StartService method on Spooler service:"
private const X_HelpInvoke_009_0_Message = " winrm invoke StartService wmicimv2/Win32_Service?Name=spooler"
private const L_HelpInvoke_010_0_Message = ""
private const L_HelpInvoke_011_0_Message = "Example: Call StopService method on Spooler service using XML file:"
private const X_HelpInvoke_012_0_Message = " winrm invoke StopService wmicimv2/Win32_Service?Name=spooler -file:input.xml"
private const L_HelpInvoke_013_0_Message = "Where input.xml:"
private const X_HelpInvoke_014_0_Message = ""
private const L_HelpInvoke_015_0_Message = ""
private const L_HelpInvoke_016_0_Message = "Example: Call Create method of Win32_Process class with specified parameters:"
private const X_HelpInvoke_017_0_Message = " winrm invoke Create wmicimv2/Win32_Process @{CommandLine=""notepad.exe"";CurrentDirectory=""C:\""}"
private const L_HelpInvoke_018_0_Message = ""
private const L_HelpInvoke_019_0_Message = "Example: Restore the default winrm configuration:"
private const L_HelpInvoke_019_1_Message = "Note that this will not restore the default winrm plugin configuration:"
private const X_HelpInvoke_020_0_Message = " winrm invoke restore winrm/config @{}"
private const L_HelpInvoke_021_0_Message = ""
private const L_HelpInvoke_022_0_Message = "Example: Restore the default winrm plugin configuration:"
private const L_HelpInvoke_022_1_Message = "Note that all external plugins will be unregistered during this operation:"
private const X_HelpInvoke_023_0_Message = " winrm invoke restore winrm/config/plugin @{}"
'''''''''''''''''''''
' HELP - IDENTIFY
private const X_HelpIdentify_001_0_Message = "winrm identify [-SWITCH:VALUE [-SWITCH:VALUE] ...]"
private const L_HelpIdentify_003_0_Message = ""
private const L_HelpIdentify_004_0_Message = "Issues an operation against a remote machine to see if the WS-Management "
private const L_HelpIdentify_005_0_Message = "service is running. This operation must be run with the '-remote' switch."
private const L_HelpIdentify_006_0_Message = "To run this operation unauthenticated against the remote machine use the"
private const L_HelpIdentify_007_0_Message = "-auth:none"
private const L_HelpIdentify_008_0_Message = ""
private const L_HelpIdentify_009_0_Message = "Example: identify if WS-Management is running on www.example.com:"
private const X_HelpIdentify_010_0_Message = " winrm identify -remote:www.example.com"
'''''''''''''''''''''
' HELP - HELPMSG
private const X_HelpHelpMessaage_001_0_Message = "winrm helpmsg errorcode"
private const X_HelpHelpMessaage_002_0_Message = ""
private const X_HelpHelpMessaage_003_0_Message = "Displays error message associate with the error code."
private const X_HelpHelpMessaage_004_0_Message = "Example:"
private const X_HelpHelpMessaage_006_0_Message = " winrm helpmsg 0x5"
'''''''''''''''''''''
' HELP - ALIAS
private const L_HelpAlias_001_0_Message = "Aliasing allows shortcuts to be used in place of full Resource URIs."
private const L_HelpAlias_002_0_Message = "Available aliases and the Resource URIs they substitute for are:"
private const L_HelpAlias_003_0_Message = ""
private const X_HelpAlias_004_0_Message = "wmi = http://schemas.microsoft.com/wbem/wsman/1/wmi"
private const X_HelpAlias_005_0_Message = "wmicimv2 = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2"
private const X_HelpAlias_006_0_Message = "cimv2 = http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2"
private const X_HelpAlias_007_0_Message = "winrm = http://schemas.microsoft.com/wbem/wsman/1"
private const X_HelpAlias_008_0_Message = "wsman = http://schemas.microsoft.com/wbem/wsman/1"
private const X_HelpAlias_009_0_Message = "shell = http://schemas.microsoft.com/wbem/wsman/1/windows/shell"
private const L_HelpAlias_010_0_Message = ""
private const L_HelpAlias_011_0_Message = "Example: using full Resource URI:"
private const x_HelpAlias_012_0_Message = " winrm get http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=WinRM"
private const L_HelpAlias_013_0_Message = ""
private const L_HelpAlias_014_0_Message = "Example: using alias:"
private const X_HelpAlias_015_0_Message = " winrm get wmicimv2/Win32_Service?Name=WinRM"
'''''''''''''''''''''
' HELP - URIS
private const L_HelpUris_001_0_Message = "Universal Resource Identifiers (URI) specify management resources to be"
private const L_HelpUris_002_0_Message = "used for operations."
private const L_HelpUris_003_0_Message = ""
private const L_HelpUris_004_0_Message = "Selectors and values are passed after the URI in the form:"
private const X_HelpUris_005_0_Message = " RESOURCE_URI?NAME=VALUE[+NAME=VALUE]..."
private const L_HelpUris_006_0_Message = ""
private const L_HelpUris_007_0_Message = "URIs for all information in WMI are of the following form:"
private const X_HelpUris_008_0_Message = " WMI path = \\root\NAMESPACE[\NAMESPACE]\CLASS"
private const X_HelpUris_009_0_Message = " URI = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/NAMESPACE[/NAMESPACE]/CLASS"
private const X_HelpUris_010_0_Message = " ALIAS = wmi/root/NAMESPACE[/NAMESPACE]/CLASS"
private const L_HelpUris_011_0_Message = ""
private const L_HelpUris_012_0_Message = "Example: Get information about WinRM service from WMI using single selector"
private const X_HelpUris_013_0_Message = " WMI path = \\root\cimv2\Win32_Service"
private const X_HelpUris_013_1_Message = " URI = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=WinRM"
private const X_HelpUris_014_0_Message = " ALIAS = wmi/root/cimv2/Win32_Service?Name=WinRM"
private const L_HelpUris_015_0_Message = ""
private const L_HelpUris_015_1_Message = "When enumerating WMI instances using a WQL filter,"
private const L_HelpUris_015_2_Message = "the CLASS must be ""*"" (star) and no selectors should be specified."
private const L_HelpUris_015_3_Message = "Example:"
private const X_HelpUris_015_4_Message = "URI = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
private const L_HelpUris_015_5_Message = ""
private const L_HelpUris_015_6_Message = "When accesing WMI singleton instances, no selectors should be specified."
private const L_HelpUris_015_7_Message = "Example:"
private const X_HelpUris_015_8_Message = "URI = http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
private const L_HelpUris_015_9_Message = ""
private const L_HelpUris_016_0_Message = "Note: Some parts of RESOURCE_URI may be case-sensitive. When using create or"
private const L_HelpUris_017_0_Message = "invoke, the last part of the resource URI must match case-wise the top-level"
private const L_HelpUris_018_0_Message = "element of the expected XML."
'''''''''''''''''''''
' HELP - CONFIG
private const L_HelpConfig_001_0_Message = "Configuration for WinRM is managed using the winrm command line or through GPO."
private const L_HelpConfig_002_0_Message = "Configuration includes global configuration for both the client and service."
private const L_HelpConfig_003_0_Message = ""
private const L_HelpConfig_004_0_Message = "The WinRM service requires at least one listener to indicate the IP address(es)"
private const L_HelpConfig_005_0_Message = "on which to accept WS-Management requests. For example, if the machine has "
private const L_HelpConfig_006_0_Message = "multiple network cards, WinRM can be configured to only accept requests from"
private const L_HelpConfig_007_0_Message = "one of the network cards."
private const L_HelpConfig_008_0_Message = ""
private const L_HelpConfig_009_0_Message = "Global configuration"
private const X_HelpConfig_010_0_Message = " winrm get winrm/config"
private const X_HelpConfig_011_0_Message = " winrm get winrm/config/client"
private const X_HelpConfig_012_0_Message = " winrm get winrm/config/service"
private const X_HelpConfig_012_1_Message = " winrm enumerate winrm/config/resource"
private const X_HelpConfig_012_2_Message = " winrm enumerate winrm/config/listener"
private const X_HelpConfig_012_3_Message = " winrm enumerate winrm/config/plugin"
private const X_HelpConfig_012_4_Message = " winrm enumerate winrm/config/service/certmapping"
private const L_HelpConfig_013_0_Message = ""
private const L_HelpConfig_014_0_Message = "Network listening requires one or more listeners. "
private const L_HelpConfig_015_0_Message = "Listeners are identified by two selectors: Address and Transport."
private const L_HelpConfigAddress_001_0_Message = "Address must be one of:"
private const L_HelpConfigAddress_002_0_Message = " * - Listen on all IPs on the machine "
private const L_HelpConfigAddress_003_0_Message = " IP:1.2.3.4 - Listen only on the specified IP address"
private const L_HelpConfigAddress_004_0_Message = " MAC:... - Listen only on IP address for the specified MAC"
private const L_HelpConfigAddress_005_0_Message = ""
private const L_HelpConfigAddress_006_0_Message = "Note: All listening is subject to the IPv4Filter and IPv6Filter under "
private const L_HelpConfigAddress_007_0_Message = "config/service."
private const L_HelpConfigAddress_008_0_Message = "Note: IP may be an IPv4 or IPv6 address."
private const L_HelpConfigTransport_001_0_Message = "Transport must be one of:"
private const L_HelpConfigTransport_002_0_Message = " HTTP - Listen for requests on HTTP (default port is 5985)"
private const L_HelpConfigTransport_003_0_Message = " HTTPS - Listen for requests on HTTPS (default port is 5986)"
private const L_HelpConfigTransport_004_0_Message = ""
private const L_HelpConfigTransport_005_0_Message = "Note: HTTP traffic by default only allows messages encrypted with "
private const L_HelpConfigTransport_006_0_Message = "the Negotiate or Kerberos SSP."
private const L_HelpConfigTransport_007_0_Message = ""
private const L_HelpConfigTransport_008_0_Message = ""
private const L_HelpConfigTransport_009_0_Message = "When configuring HTTPS, the following properties are used:"
private const L_HelpConfigTransport_010_0_Message = " Hostname - Name of this machine; must match CN in certificate."
private const L_HelpConfigTransport_011_0_Message = " CertificateThumbprint - hexadecimal thumbprint of certificate appropriate for"
private const L_HelpConfigTransport_012_0_Message = " Server Authentication."
private const L_HelpConfigTransport_013_0_Message = "Note: If only Hostname is supplied, WinRM will try to find an appropriate"
private const L_HelpConfigTransport_014_0_Message = "certificate."
private const L_HelpConfigExamples_001_0_Message = "Example: To listen for requests on HTTP on all IPs on the machine:"
private const X_HelpConfigExamples_002_0_Message = " winrm create winrm/config/listener?Address=*+Transport=HTTP"
private const L_HelpConfigExamples_003_0_Message = ""
private const L_HelpConfigExamples_004_0_Message = "Example: To disable a given listener"
private const X_HelpConfigExamples_005_0_Message = " winrm set winrm/config/listener?Address=IP:1.2.3.4+Transport=HTTP @{Enabled=""false""}"
private const L_HelpConfigExamples_006_0_Message = ""
private const L_HelpConfigExamples_007_0_Message = "Example: To enable basic authentication on the client but not the service:"
private const X_HelpConfigExamples_008_0_Message = " winrm set winrm/config/client/auth @{Basic=""true""}"
private const L_HelpConfigExamples_009_0_Message = ""
private const L_HelpConfigExamples_010_0_Message = "Example: To enable Negotiate for all workgroup machines."
private const X_HelpConfigExamples_011_0_Message = " winrm set winrm/config/client @{TrustedHosts=""""}"
private const L_HelpConfigExamples_012_0_Message = ""
private const L_HelpConfigExamples_013_0_Message = "Example: To add an IPv4 and IPv6 host address to TrustedHosts."
private const X_HelpConfigExamples_014_0_Message = " winrm set winrm/config/client @{TrustedHosts=""1.2.3.4,[1:2:3::8]""}"
private const L_HelpConfigExamples_015_0_Message = ""
private const L_HelpConfigExamples_016_0_Message = " Note: Computers in the TrustedHosts list might not be authenticated"
'''''''''''''''''''''
' HELP - CertMapping
private const L_HelpCertMapping_001_0_Message = "Certificate mapping remote access to WinRM using client certificates is "
private const L_HelpCertMapping_002_0_Message = "stored in the certificate mapping table identified by the "
private const L_HelpCertMapping_003_0_Message = "following resource URI:"
private const L_HelpCertMapping_003_1_Message = ""
private const L_HelpCertMapping_004_0_Message = " winrm/config/service/CertMapping"
private const L_HelpCertMapping_005_0_Message = ""
private const L_HelpCertMapping_006_0_Message = "Each entry in this table contains five properties:"
private const L_HelpCertMapping_007_0_Message = " Issuer - Thumbprint of the issuer certificate."
private const L_HelpCertMapping_008_0_Message = " Subject - Subject field of client certificate."
private const L_HelpCertMapping_009_0_Message = " URI - The URI or URI prefix for which this mapping applies."
private const L_HelpCertMapping_009_1_Message = " Username - Local username for processing the request."
private const L_HelpCertMapping_009_2_Message = " Password - Local password for processing the request."
private const L_HelpCertMapping_009_3_Message = " Enabled - Use in processing if true."
private const L_HelpCertMapping_010_0_Message = " "
private const L_HelpCertMapping_011_0_Message = "For a client certificate to be applicable, the issuer certificate must be "
private const L_HelpCertMapping_012_0_Message = "available locally and match the thumbprint in the entry Issuer property"
private const L_HelpCertMapping_012_1_Message = ""
private const L_HelpCertMapping_012_2_Message = "For a client certificate to be applicable, its DNS or Principal name "
private const L_HelpCertMapping_013_0_Message = "(from the SubjectAlternativeName field) must match the Subject property."
private const L_HelpCertMapping_014_0_Message = "The value can start with a '*' wildcard."
private const L_HelpCertMapping_014_1_Message = "The URI identifies for which resources the indicated client certificates ."
private const L_HelpCertMapping_014_2_Message = "should be mapped."
private const L_HelpCertMapping_014_3_Message = "The value can end with a '*' wildcard."
private const L_HelpCertMapping_014_4_Message = ""
private const L_HelpCertMapping_015_0_Message = "If the client certificate matches the entry and it is enabled, the "
private const L_HelpCertMapping_016_0_Message = "request is processed under the local account with the given username "
private const L_HelpCertMapping_017_0_Message = "and password after ensuring that user has access to the resource as "
private const L_HelpCertMapping_018_0_Message = "defined by the URI security table."
private const L_HelpCertMapping_019_0_Message = ""
private const L_HelpCertMapping_020_0_Message = "When creating a new entry or changing the password of an existing entry, "
private const L_HelpCertMapping_021_0_Message = "the -r switch must be used since the WinRM service must store the password"
private const L_HelpCertMapping_022_0_Message = "for future use."
private const L_HelpCertMappingExamples_001_0_Message = "Example: To see the current CertMapping configuration"
private const X_HelpCertMappingExamples_002_0_Message = " winrm enumerate winrm/config/service/CertMapping"
private const L_HelpCertMappingExamples_003_0_Message = "Example: Create a CertMapping entry:"
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"
private const L_HelpCertMappingExamples_005_0_Message = ""
'''''''''''''''''''''
' HELP - CONFIGSDDL
private const L_HelpConfigsddl_000_1_Message = " winrm configsddl RESOURCE_URI"
private const L_HelpConfigsddl_001_0_Message = ""
private const L_HelpConfigsddl_002_0_Message = "Changes an existing entry in the plugin configuration to "
private const L_HelpConfigsddl_002_1_Message = "control remote access to WinRM resources."
private const L_HelpConfigsddl_003_0_Message = "This command will fail if the plugin does not exist."
private const L_HelpConfigsddl_004_0_Message = ""
private const L_HelpConfigsddl_005_0_Message = "This command will launch a GUI to edit the security settings."
private const L_HelpConfigsddl_005_1_Message = ""
private const L_HelpConfigsddl_006_0_Message = "RESOURCE_URI is always treated as a prefix."
private const L_HelpConfigsddl_010_0_Message = ""
private const L_HelpConfigsddl_011_0_Message = "To change the default security (the RootSDDL setting) use:"
private const X_HelpConfigsddl_012_0_Message = " winrm configsddl default"
'''''''''''''''''''''
' HELP - QUICKCONFIG
private const X_HelpQuickConfig_001_0_Message = "winrm quickconfig [-quiet] [-transport:VALUE] [-force]"
private const X_HelpQuickConfig_002_0_Message = ""
private const L_HelpQuickConfig_003_0_Message = "Performs configuration actions to enable this machine for remote management."
private const L_HelpQuickConfig_004_0_Message = "Includes:"
private const L_HelpQuickConfig_005_0_Message = " 1. Start the WinRM service"
private const L_HelpQuickConfig_006_0_Message = " 2. Set the WinRM service type to auto start"
private const L_HelpQuickConfig_007_0_Message = " 3. Create a listener to accept request on any IP address"
private const L_HelpQuickConfig_008_0_Message = " 4. Enable firewall exception for WS-Management traffic (for http only)"
private const X_HelpQuickConfig_009_0_Message = ""
private const X_HelpQuickConfig_010_0_Message = "-q[uiet]"
private const X_HelpQuickConfig_010_1_Message = "--------"
private const L_HelpQuickConfig_011_0_Message = "If present, quickconfig will not prompt for confirmation."
private const X_HelpQuickConfig_012_0_Message = "-transport:VALUE"
private const X_HelpQuickConfig_013_0_Message = "----------------"
private const L_HelpQuickConfig_014_0_Message = "Perform quickconfig for specific transport."
private const L_HelpQuickConfig_015_0_Message = "Possible options are http and https. Defaults to http."
private const X_HelpQuickConfig_016_0_Message = "-force"
private const X_HelpQuickConfig_017_0_Message = "--------"
private const L_HelpQuickConfig_018_0_Message = "If present, quickconfig will not prompt for confirmation, and will enable "
private const L_HelpQuickConfig_019_0_Message = "the firewall exception regardless of current network profile settings."
'''''''''''''''''''''
' HELP - REMOTE
private const L_HelpRemote_001_0_Message = "winrm OPERATION -remote:VALUE [-unencrypted] [-usessl]"
private const L_HelpRemote_002_0_Message = ""
private const L_HelpRemote_003_0_Message = "-r[emote]:VALUE"
private const L_HelpRemote_004_0_Message = "---------------"
private const L_HelpRemote_005_0_Message = "Specifies identifier of remote endpoint/system. "
private const L_HelpRemote_006_0_Message = "May be a simple host name or a complete URL."
private const L_HelpRemote_007_0_Message = ""
private const L_HelpRemote_008_0_Message = " [TRANSPORT://]HOST[:PORT][/PREFIX]"
private const L_HelpRemote_009_0_Message = ""
private const L_HelpRemote_010_0_Message = "Transport: One of HTTP or HTTPS; default is HTTP."
private const L_HelpRemote_011_0_Message = "Host: Can be in the form of a DNS name, NetBIOS name, or IP address."
private const L_HelpRemote_012_0_Message = "Port: If port is not specified then the following default rules apply:"
private const L_HelpRemote_013_0_Message = "Prefix: Defaults to wsman."
private const L_HelpRemote_014_0_Message = ""
private const L_HelpRemote_015_0_Message = "Note: IPv6 addresses must be enclosed in brackets."
private const L_HelpRemote_016_0_Message = "Note: When using HTTPS, the machine name must match the server's certificate"
private const L_HelpRemote_017_0_Message = " common name (CN) unless -skipCNcheck is used."
private const L_HelpRemote_018_0_Message = "Note: Defaults for port and prefix can be changed in the local configuration."
private const L_HelpRemoteExample_001_0_Message = "Example: Connect to srv.corp.com via http:"
private const X_HelpRemoteExample_002_0_Message = " winrm get uri -r:srv.corp.com"
private const L_HelpRemoteExample_003_0_Message = ""
private const L_HelpRemoteExample_004_0_Message = "Example: Connect to local computer machine1 via https:"
private const X_HelpRemoteExample_005_0_Message = " winrm get uri -r:https://machine1"
private const L_HelpRemoteExample_006_0_Message = ""
private const L_HelpRemoteExample_007_0_Message = "Example: Connect to an IPv6 machine via http:"
private const X_HelpRemoteExample_008_0_Message = " winrm get uri -r:[1:2:3::8]"
private const L_HelpRemoteExample_009_0_Message = ""
private const L_HelpRemoteExample_010_0_Message = "Example: Connect to an IPv6 machine via https on a non-default port and URL:"
private const X_HelpRemoteExample_011_0_Message = " winrm get uri -r:https://[1:2:3::8]:444/path"
private const L_HelpRemoteUnencrypted_001_0_Message = "-un[encrypted]"
private const L_HelpRemoteUnencrypted_002_0_Message = "--------------"
private const L_HelpRemoteUnencrypted_003_0_Message = "Specifies that no encryption will be used when doing remote operations over"
private const L_HelpRemoteUnencrypted_004_0_Message = "HTTP. Unencrypted traffic is not allowed by default and must be enabled in"
private const L_HelpRemoteUnencrypted_005_0_Message = "the local configuration."
private const L_HelpRemoteConfig_001_0_Message = "To enable this machine to be remotely managed see:"
'''''''''''''''''''''
' HELP - AUTH
private const L_HelpAuth_001_0_Message = "winrm OPERATION -remote:VALUE "
private const L_HelpAuth_002_0_Message = " [-authentication:VALUE] "
private const L_HelpAuth_003_0_Message = " [-username:USERNAME] "
private const L_HelpAuth_004_0_Message = " [-password:PASSWORD]"
private const L_HelpAuth_004_1_Message = " [-certificate:THUMBPRINT]"
private const L_HelpAuth_005_0_Message = ""
private const L_HelpAuth_006_0_Message = "When connecting remotely, you can specify which credentials and which"
private const L_HelpAuth_007_0_Message = "authentication mechanisms to use. If none are specified the current "
private const L_HelpAuth_008_0_Message = "logged-on user's credentials will be used."
private const L_HelpAuthAuth_001_0_Message = "-a[uthentication]:VALUE"
private const L_HelpAuthAuth_002_0_Message = "-----------------------"
private const L_HelpAuthAuth_003_0_Message = "Specifies authentication mechanism used when communicating with remote machine."
private const L_HelpAuthAuth_004_0_Message = "Possible options are None, Basic, Digest, Negotiate, Kerberos, CredSSP."
private const L_HelpAuthAuth_004_1_Message = "Possible options are None, Basic, Digest, Negotiate, Kerberos."
private const L_HelpAuthAuth_005_0_Message = "Examples:"
private const X_HelpAuthAuth_006_0_Message = " -a:None"
private const X_HelpAuthAuth_007_0_Message = " -a:Basic"
private const X_HelpAuthAuth_008_0_Message = " -a:Digest"
private const X_HelpAuthAuth_009_0_Message = " -a:Negotiate"
private const X_HelpAuthAuth_010_0_Message = " -a:Kerberos"
private const X_HelpAuthAuth_010_1_Message = " -a:Certificate"
private const X_HelpAuthAuth_010_2_Message = " -a:CredSSP"
private const L_HelpAuthAuth_011_0_Message = "Note: If an authentication mechanism is not specified, Kerberos is used unless"
private const L_HelpAuthAuth_012_0_Message = " one of the conditions below is true, in which case Negotiate is used:"
private const L_HelpAuthAuth_013_0_Message = " -explicit credentials are supplied and the destination host is trusted"
private const L_HelpAuthAuth_013_1_Message = " -the destination host is ""localhost"", ""127.0.0.1"" or ""[::1]"""
private const L_HelpAuthAuth_013_2_Message = " -the client computer is in workgroup and the destination host is trusted"
private const L_HelpAuthAuth_014_0_Message = "Note: Not all authentication mechanisms are enabled by default. Allowed"
private const L_HelpAuthAuth_015_0_Message = " authentication mechanisms can be controlled by local configuration "
private const L_HelpAuthAuth_016_0_Message = " or group policy."
private const L_HelpAuthAuth_017_0_Message = "Note: Most operations will require an authentication mode other than None."
private const L_HelpAuthAuth_018_0_Message = "Note: Certificate authentication can be used only with the HTTPS transport."
private const L_HelpAuthAuth_019_0_Message = " To configure an HTTPS listener for the WinRM service run the command:"
private const L_HelpAuthAuth_020_0_Message = " ""winrm quickconfig -transport:HTTPS"""
private const L_HelpAuthUsername_001_0_Message = "-u[sername]:USERNAME"
private const L_HelpAuthUsername_002_0_Message = "--------------------"
private const L_HelpAuthUsername_003_0_Message = "Specifies username on remote machine. Cannot be used on local machine."
private const L_HelpAuthUsername_004_0_Message = "User must be member of local Administrators group on remote machine."
private const L_HelpAuthUsername_005_0_Message = "If the user account is a local account on the remote machine,"
private const L_HelpAuthUsername_006_0_Message = "the syntax should be in the form -username:USERNAME"
private const L_HelpAuthUsername_007_0_Message = "If the username is a domain account, the syntax should be in the form"
private const L_HelpAuthUsername_008_0_Message = "-username:DOMAIN\USERNAME"
private const L_HelpAuthUsername_009_0_Message = "If Basic or Digest is used, then -username is required."
private const L_HelpAuthUsername_010_0_Message = "If Kerberos is used, then the current logged-on user's credentials"
private const L_HelpAuthUsername_011_0_Message = "are used if -username is not supplied. Only domain credentials can"
private const L_HelpAuthUsername_011_1_Message = "be used with Kerberos."
private const L_HelpAuthUsername_012_0_Message = "If Negotiate is used, then -username is required unless"
private const L_HelpAuthUsername_013_0_Message = "one of the conditions below is true:"
private const L_HelpAuthUsername_014_0_Message = " -the destination host is ""localhost"", ""127.0.0.1"" or ""[::1]"""
private const L_HelpAuthUsername_015_0_Message = " -the client computer is in workgroup and the destination host is trusted"
private const L_HelpAuthUsername_016_0_Message = "If CredSSP is used, then username and password are required."
private const L_HelpAuthPassword_001_0_Message = "-p[assword]:PASSWORD"
private const L_HelpAuthPassword_002_0_Message = "--------------------"
private const L_HelpAuthPassword_003_0_Message = "Specifies password on command line to override interactive prompt."
private const L_HelpAuthPassword_004_0_Message = "Applies only if -username:USERNAME option is used."
private const L_HelpAuthCertificate_001_0_Message = "-c[ertificate]:THUMBPRINT"
private const L_HelpAuthCertificate_002_0_Message = "--------------------"
private const L_HelpAuthCertificate_003_0_Message = "Specifies the thumbprint of a certificate that must exist in the local"
private const L_HelpAuthCertificate_004_0_Message = "machine store or in the current user store. The certificate must be intended"
private const L_HelpAuthCertificate_005_0_Message = "for client authentication."
private const L_HelpAuthCertificate_006_0_Message = "Applies only if -a:Certificate is used."
private const L_HelpAuthCertificate_007_0_Message = "THUMBPRINT can contain spaces, in which case it must be enclosed in"
private const L_HelpAuthCertificate_008_0_Message = "double quotation marks."
private const L_HelpAuthCertificate_009_0_Message = "Examples:"
private const L_HelpAuthCertificate_010_0_Message = "-c:7b0cf48026409e38a2d6348761b1dd1271c4f86d"
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"""
'''''''''''''''''''''
' HELP - PROXY
private const X_HelpProxy_001_0_Message = "winrm OPERATION -remote:VALUE "
private const X_HelpProxy_002_0_Message = " [-proxyaccess:VALUE] "
private const X_HelpProxy_002_1_Message = " [-proxyauth:VALUE] "
private const X_HelpProxy_003_0_Message = " [-proxyusername:USERNAME] "
private const X_HelpProxy_004_0_Message = " [-proxypassword:PASSWORD]"
private const L_HelpProxy_005_0_Message = ""
private const L_HelpProxy_006_0_Message = "When connecting remotely, you can specify which proxy access type,"
private const L_HelpProxy_007_0_Message = " proxy credentials and proxy authentication mechanisms to use."
private const X_HelpProxyAccess_001_0_Message = "-p[roxy]ac[cess]:VALUE"
private const L_HelpProxyAccess_002_0_Message = "-----------------------"
private const L_HelpProxyAccess_003_0_Message = "Specifies which proxy settings to retrieve when connecting to a remote machine."
private const L_HelpProxyAccess_004_0_Message = "Possible options are ie_settings, winhttp_settings, auto_detect, no_proxy."
private const L_HelpProxyAccess_005_0_Message = "Examples:"
private const X_HelpProxyAccess_006_0_Message = " -pac:ie_settings"
private const X_HelpProxyAccess_007_0_Message = " -pac:winhttp_settings"
private const X_HelpProxyAccess_008_0_Message = " -pac:auto_detect"
private const X_HelpProxyAccess_009_0_Message = " -pac:no_proxy"
private const L_HelpProxyAccess_010_0_Message = ""
private const L_HelpProxyAccess_011_0_Message = "The WSMan client provides four options for the configuration of proxy settings:"
private const L_HelpProxyAccess_012_0_Message = " -use settings configured through Internet Explorer (default)"
private const L_HelpProxyAccess_013_0_Message = " -use settings configured through WinHTTP"
private const L_HelpProxyAccess_014_0_Message = " -automatic proxy discovery"
private const L_HelpProxyAccess_015_0_Message = " -direct connection (don’t use a proxy)"
private const L_HelpProxyAuth_001_0_Message = "-p[roxy]a[uth]:VALUE"
private const L_HelpProxyAuth_002_0_Message = "-----------------------"
private const L_HelpProxyAuth_003_0_Message = "Specifies authentication mechanism used to authenticate with a proxy."
private const L_HelpProxyAuth_004_0_Message = "Possible options are Basic, Digest, Negotiate."
private const L_HelpProxyAuth_005_0_Message = "Examples:"
private const X_HelpProxyAuth_007_0_Message = " -pa:Basic"
private const X_HelpProxyAuth_008_0_Message = " -pa:Digest"
private const X_HelpProxyAuth_009_0_Message = " -pa:Negotiate"
private const L_HelpProxyAuth_010_0_Message = "If -proxyauth:VALUE is used then -proxyaccess:VALUE is required."
private const L_HelpProxyUsername_001_0_Message = "-p[roxy]u[sername]:USERNAME"
private const L_HelpProxyUsername_002_0_Message = "--------------------"
private const L_HelpProxyUsername_003_0_Message = "Specifies username to authenticate with proxy. Cannot be used on local machine."
private const L_HelpProxyUsername_005_0_Message = "If the user account is a local account on the remote machine,"
private const L_HelpProxyUsername_006_0_Message = "the syntax should be in the form -proxyusername:USERNAME"
private const L_HelpProxyUsername_007_0_Message = "If the username is a domain account, the syntax should be in the form"
private const L_HelpProxyUsername_008_0_Message = "-proxyusername:DOMAIN\USERNAME"
private const L_HelpProxyUsername_009_0_Message = "If -proxyusername is used then -proxyauth:VALUE is required."
private const L_HelpProxyPassword_001_0_Message = "-p[roxy]p[assword]:PASSWORD"
private const L_HelpProxyPassword_002_0_Message = "--------------------"
private const L_HelpProxyPassword_003_0_Message = "Specifies password on command line to override interactive prompt."
private const L_HelpProxyPassword_004_0_Message = "Applies only if -proxyusername:USERNAME option is used."
'''''''''''''''''''''
' HELP - INPUT
private const L_HelpInput_001_0_Message = "Input can be by either providing key/value pairs directly on the command line"
private const L_HelpInput_002_0_Message = "or reading XML from a file."
private const L_HelpInput_003_0_Message = ""
private const L_HelpInput_004_0_Message = " winrm OPERATION -file:VALUE "
private const L_HelpInput_005_0_Message = " winrm OPERATION @{KEY=""VALUE""[;KEY=""VALUE""]}"
private const L_HelpInput_006_0_Message = ""
private const L_HelpInput_007_0_Message = "Applies to set, create, and invoke operations."
private const L_HelpInput_008_0_Message = "Use either @{KEY=VALUE} or input from an XML file, but not both."
private const L_HelpInput_009_0_Message = ""
private const L_HelpInput_010_0_Message = "-file:VALUE"
private const L_HelpInput_011_0_Message = "-----------"
private const L_HelpInput_012_0_Message = "Specifies name of file used as input."
private const L_HelpInput_013_0_Message = "VALUE can be absolute path, relative path, or filename without path."
private const L_HelpInput_014_0_Message = "Names or paths that include spaces must be enclosed in quotation marks."
private const L_HelpInput_015_0_Message = ""
private const L_HelpInput_016_0_Message = "@{KEY=""VALUE""[;KEY=""VALUE""]}"
private const L_HelpInput_017_0_Message = "----------------------------"
private const L_HelpInput_018_0_Message = "Keys are not unique."
private const L_HelpInput_019_0_Message = "Values must be within quotation marks."
private const L_HelpInput_020_0_Message = "$null is a special value."
private const L_HelpInput_021_0_Message = ""
private const L_HelpInput_022_0_Message = "Examples:"
private const X_HelpInput_023_0_Message = " @{key1=""value1"";key2=""value2""}"
private const X_HelpInput_024_0_Message = " @{key1=$null;key2=""value2""}"
'''''''''''''''''''''
' HELP - FILTERS
private const L_HelpFilter_001_0_Message = "Filters allow selecting a subset of the desired resources:"
private const X_HelpFilter_002_0_Message = ""
private const X_HelpFilter_003_0_Message = "winrm enumerate RESOURCE_URI -filter:EXPR [-dialect:URI] [-Associations]..."
private const X_HelpFilter_004_0_Message = ""
private const L_HelpFilter_005_0_Message = "-filter:EXPR"
private const X_HelpFilter_006_0_Message = "------------"
private const L_HelpFilter_007_0_Message = "Filter expression for enumeration."
private const X_HelpFilter_008_0_Message = ""
private const L_HelpFilter_009_0_Message = "-dialect:URI"
private const X_HelpFilter_010_0_Message = "------------"
private const L_HelpFilter_011_0_Message = "Dialect of the filter expression for enumeration."
private const L_HelpFilter_012_0_Message = "This may be any dialect supported by the remote service. "
private const X_HelpFilter_013_0_Message = ""
private const L_HelpFilter_014_0_Message = "The following aliases can be used for the dialect URI:"
private const X_HelpFilter_015_0_Message = "* WQL - http://schemas.microsoft.com/wbem/wsman/1/WQL"
private const X_HelpFilter_016_0_Message = "* Selector - http://schemas.dmtf.org/wbem/wsman/1/wsman/SelectorFilter"
private const X_HelpFilter_016_1_Message = "* Association - http://schemas.dmtf.org/wbem/wsman/1/cimbinding/AssociationFilter"
private const X_HelpFilter_017_0_Message = ""
private const L_HelpFilter_018_0_Message = "The dialect URI defaults to WQL when used with enumeration."
private const X_HelpFilter_019_0_Message = ""
private const L_HelpFilter_019_1_Message = "-Associations"
private const L_HelpFilter_019_2_Message = "------------"
private const X_HelpFilter_019_3_Message = "This parameter has relevance only when the Dialect parameter exists, and its value is specified as Association. Otherwise this parameter should not be used."
private const X_HelpFilter_019_4_Message = "This indicates retrieval of Association Instances rather than Associated Instances. Absence of this parameter would imply Associated Instances are to be retrieved."
private const X_HelpFilter_019_5_Message = ""
private const L_HelpFilter_020_0_Message = "Example: Find running services"
private const X_HelpFilter_021_0_Message = " winrm e wmicimv2/Win32_Service -dialect:selector -filter:{State=""Running""}"
private const X_HelpFilter_022_0_Message = ""
private const L_HelpFilter_023_0_Message = "Example: Find auto start services that are not running"
private const X_HelpFilter_024_0_Message = " winrm e wmicimv2/* -filter:""select * from Win32_Service where State!='Running' and StartMode='Auto'"""
private const L_HelpFilter_025_0_Message = ""
private const L_HelpFilter_026_0_Message = "Example: Find the services on which winrm service has a dependency"
private const X_HelpFilter_027_0_Message = " winrm e wmicimv2/* -dialect:Association -filter:{Object=Win32_Service?Name=WinRM;AssociationClassName=Win32_DependentService;ResultClassName=win32_service;ResultRole=antecedent;Role=dependent}"
'''''''''''''''''''''
' HELP - SWITCHES
private const L_HelpSwitchTimeout_001_0_Message = "-timeout:MS"
private const L_HelpSwitchTimeout_002_0_Message = "-----------"
private const L_HelpSwitchTimeout_003_0_Message = "Timeout in milliseconds. Limits duration of corresponding operation."
private const L_HelpSwitchTimeout_004_0_Message = "Default timeout can be configured by:"
private const X_HelpSwitchTimeout_005_0_Message = " winrm set winrm/config @{MaxTimeoutms=""XXXXXX""}"
private const L_HelpSwitchTimeout_006_0_Message = "Where XXXXXX is an integer indicating milliseconds."
private const X_HelpSwitchSkipCACheck_001_0_Message = "-skipCAcheck"
private const L_HelpSwitchSkipCACheck_002_0_Message = "------------"
private const L_HelpSwitchSkipCACheck_003_0_Message = "Specifies that certificate issuer need not be a trusted root authority."
private const L_HelpSwitchSkipCACheck_004_0_Message = "Used only in remote operations using HTTPS (see -remote option)."
private const L_HelpSwitchSkipCACheck_005_0_Message = "This option should be used only for trusted machines."
private const X_HelpSwitchSkipCNCheck_001_0_Message = "-skipCNcheck"
private const L_HelpSwitchSkipCNCheck_002_0_Message = "------------"
private const L_HelpSwitchSkipCNCheck_003_0_Message = "Specifies that certificate common name (CN) of the server need not match the"
private const L_HelpSwitchSkipCNCheck_004_0_Message = "hostname of the server. "
private const L_HelpSwitchSkipCNCheck_005_0_Message = "Used only in remote operations using HTTPS (see -remote option)."
private const L_HelpSwitchSkipCNCheck_006_0_Message = "This option should be used only for trusted machines."
private const X_HelpSwitchSkipRevCheck_001_0_Message = "-skipRevocationcheck"
private const X_HelpSwitchSkipRevCheck_002_0_Message = "-------------------"
private const L_HelpSwitchSkipRevCheck_003_0_Message = "Specifies that the revocation status of the server certificate is not checked."
private const L_HelpSwitchSkipRevCheck_004_0_Message = "Used only in remote operations using HTTPS (see -remote option)."
private const L_HelpSwitchSkipRevCheck_005_0_Message = "This option should be used only for trusted machines."
private const X_HelpSwitchDefaultCreds_001_0_Message = "-defaultCreds"
private const X_HelpSwitchDefaultCreds_002_0_Message = "-------------------"
private const L_HelpSwitchDefaultCreds_003_0_Message = "Specifies that the implicit credentials are allowed when Negotiate is used."
private const L_HelpSwitchDefaultCreds_004_0_Message = "Allowed only in remote operations using HTTPS (see -remote option)."
private const L_HelpSwitchDialect_001_0_Message = "-dialect:VALUE"
private const L_HelpSwitchDialect_002_0_Message = "--------------"
private const L_HelpSwitchDialect_003_0_Message = "Dialect of the filter expression for enumeration or fragment."
private const L_HelpSwitchDialect_004_0_Message = "Example: Use a WQL query"
private const X_HelpSwitchDialect_005_0_Message = " -dialect:http://schemas.microsoft.com/wbem/wsman/1/WQL"
private const L_HelpSwitchDialect_006_0_Message = "Example: Use XPATH for filtering with enumeration or fragment get/set."
private const X_HelpSwitchDialect_007_0_Message = " -dialect:http://www.w3.org/TR/1999/REC-xpath-19991116"
'private const L_HelpSwitchFilter_001_0_Message = "-filter:VALUE"
'private const L_HelpSwitchFilter_002_0_Message = "-----------------"
'private const L_HelpSwitchFilter_003_0_Message = "Filter expression for enumeration."
'private const L_HelpSwitchFilter_004_0_Message = "Example: Use a WQL query"
'private const X_HelpSwitchFilter_005_0_Message = " -filter:""select * from Win32_process where handle=0"""
private const L_HelpSwitchFragment_001_0_Message = "-fragment:VALUE"
private const L_HelpSwitchFragment_002_0_Message = "---------------"
private const L_HelpSwitchFragment_003_0_Message = "Specify a section inside the instance XML that is to be updated or retrieved"
private const L_HelpSwitchFragment_004_0_Message = "for the given operation."
private const L_HelpSwitchFragment_005_0_Message = "Example: Get the status of the spooler service"
private const X_HelpSwitchFragment_006_0_Message = " winrm get wmicimv2/Win32_Service?name=spooler -fragment:Status/text()"
private const L_HelpSwitchOption_001_0_Message = "-options:{KEY=""VALUE""[;KEY=""VALUE""]}"
private const L_HelpSwitchOption_002_0_Message = "------------------------------------"
private const L_HelpSwitchOption_003_0_Message = "Key/value pairs for provider-specific options."
private const L_HelpSwitchOption_004_0_Message = "To specify NULL as a value, use $null"
private const L_HelpSwitchOption_005_0_Message = ""
private const L_HelpSwitchOption_006_0_Message = "Examples:"
private const X_HelpSwitchOption_007_0_Message = " -options:{key1=""value1"";key2=""value2""}"
private const X_HelpSwitchOption_008_0_Message = " -options:{key1=$null;key2=""value2""}"
private const X_HelpSwitchSPNPort_001_0_Message = "-SPNPort"
private const L_HelpSwitchSPNPort_002_0_Message = "--------"
private const L_HelpSwitchSPNPort_003_0_Message = "Appends port number to the Service Principal Name (SPN) of the remote server."
private const L_HelpSwitchSPNPort_004_0_Message = "Service principal name is used when Negotiate or Kerberos authentication"
private const L_HelpSwitchSPNPort_005_0_Message = "mechanism is in use."
private const L_HelpSwitchEncoding_001_0_Message = "-encoding:VALUE"
private const L_HelpSwitchEncoding_002_0_Message = "---------------"
private const L_HelpSwitchEncoding_003_0_Message = "Specifies encoding type when talking to remote machine (see -remote"
private const L_HelpSwitchEncoding_004_0_Message = "option). Possible options are ""utf-8"" and ""utf-16""."
private const L_HelpSwitchEncoding_005_0_Message = "Default is utf-8."
private const L_HelpSwitchEncoding_006_0_Message = "Examples:"
private const X_HelpSwitchEncoding_007_0_Message = " -encoding:utf-8"
private const X_HelpSwitchEncoding_008_0_Message = " -encoding:utf-16"
private const L_HelpSwitchFormat_001_0_Message = "-f[ormat]:FORMAT"
private const L_HelpSwitchFormat_002_0_Message = "----------------"
private const L_HelpSwitchFormat_003_0_Message = "Specifies format of output."
private const L_HelpSwitchFormat_004_0_Message = "FORMAT can be ""xml"", ""pretty"" (better formatted XML), or ""text""."
private const L_HelpSwitchFormat_005_0_Message = "Examples:"
private const X_HelpSwitchFormat_006_0_Message = " -format:xml"
private const X_HelpSwitchFormat_007_0_Message = " -format:pretty"
private const X_HelpSwitchFormat_008_0_Message = " -format:text"
private const L_HelpRemoteUseSsl_001_0_Message = "-[use]ssl"
private const L_HelpRemoteUseSsl_002_0_Message = "---------"
private const L_HelpRemoteUseSsl_003_0_Message = "Specifies that an SSL connection will be used when doing remote operations."
private const L_HelpRemoteUseSsl_004_0_Message = "The transport in the remote option should not be specified. "
private const L_HelpRemote_012_1_Message = " * If transport is specified to HTTP then port 80 is used."
private const L_HelpRemote_012_2_Message = " * If transport is specified to HTTPS then port 443 is used."
private const L_HelpRemote_012_3_Message = " * If transport is not specified and -usessl is not specified then port"
private const L_HelpRemote_012_4_Message = " 5985 is used for an HTTP connection."
private const L_HelpRemote_012_5_Message = " * If transport is not specified and -usessl is specified then port 5986"
private const L_HelpRemote_012_6_Message = " is used for an HTTPS connection."
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Operations
private const OP_GET = "get"
private const OP_PUT = "set"
private const OP_CONFIGSDDL = "configsddl"
private const OP_CREATESDDL = "createsddl"
private const OP_CRE = "create"
private const OP_DEL = "delete"
private const OP_ENU = "enumerate"
private const OP_INV = "invoke"
private const OP_HELP = "help"
private const OP_IDENTIFY = "identify"
private const OP_QUICKCONFIG = "quickconfig"
private const OP_HELPMSG = "helpmsg"
' Named parameters (key names of key/value pairs)
private const NPARA_USERNAME = "username"
private const NPARA_PASSWORD = "password"
private const NPARA_PROXYUSERNAME = "proxyusername"
private const NPARA_PROXYPASSWORD = "proxypassword"
private const NPARA_CERT = "certificate"
private const NPARA_DIALECT = "dialect"
private const NPARA_ASSOCINST = "associations"
private const NPARA_FILE = "file"
private const NPARA_FILTER = "filter"
private const NPARA_HELP = "?"
private const NPARA_REMOTE = "remote"
private const NPARA_NOCACHK = "skipcacheck"
private const NPARA_NOCNCHK = "skipcncheck"
private const NPARA_NOREVCHK = "skiprevocationcheck"
private const NPARA_DEFAULTCREDS = "defaultcreds"
private const NPARA_SPNPORT = "spnport"
private const NPARA_TIMEOUT = "timeout"
private const NPARA_AUTH = "authentication"
private const NPARA_PROXYAUTH = "proxyauthentication"
private const NPARA_PROXYACCESS = "proxyaccess"
private const NPARA_UNENCRYPTED = "unencrypted"
private const NPARA_ENCODING = "encoding"
private const NPARA_FORMAT = "format"
private const NPARA_OPTIONS = "options"
private const NPARA_FRAGMENT = "fragment"
private const NPARA_QUIET = "quiet"
private const NPARA_TRANSPORT = "transport"
private const NPARA_PSEUDO_COMMAND = "command"
private const NPARA_PSEUDO_OPERATION = "operation"
private const NPARA_PSEUDO_ACTION = "action"
private const NPARA_PSEUDO_RESOURCE = "resource"
private const NPARA_PSEUDO_AT = "@"
private const NPARA_RETURN_TYPE = "returntype"
private const NPARA_SHALLOW = "shallow"
private const NPARA_BASE_PROPS_ONLY = "basepropertiesonly"
private const NPARA_USESSL = "usessl"
private const NPARA_FORCE = "force"
private const SHORTCUT_CRE = "c"
private const SHORTCUT_DEL = "d"
private const SHORTCUT_ENU = "e"
private const SHORTCUT_ENU2 = "enum"
private const SHORTCUT_GET = "g"
private const SHORTCUT_INV = "i"
private const SHORTCUT_IDENTIFY = "id"
private const SHORTCUT_PUT = "s"
private const SHORTCUT_PUT2 = "put"
private const SHORTCUT_PUT3 = "p"
private const SHORTCUT_QUICKCONFIG = "qc"
private const SHORTCUT_HELPMSG = "helpmsg"
private const SHORTCUT_AUTH = "a"
private const SHORTCUT_AUTH2 = "auth"
private const SHORTCUT_PROXYAUTH = "pa"
private const SHORTCUT_PROXYAUTH2 = "proxyauth"
private const SHORTCUT_PROXYACCESS = "pac"
private const SHORTCUT_PROXYACCESS2 = "proxyaccess"
private const SHORTCUT_FORMAT = "f"
private const SHORTCUT_PASSWORD = "p"
private const SHORTCUT_PROXYPASSWORD = "pp"
private const SHORTCUT_REMOTE = "r"
private const SHORTCUT_REMOTE2 = "machine"
private const SHORTCUT_USERNAME = "u"
private const SHORTCUT_PROXYUSERNAME = "pu"
private const SHORTCUT_UNENCRYPTED = "un"
private const SHORTCUT_USESSL = "ssl"
private const SHORTCUT_QUIET = "q"
private const SHORTCUT_CERT = "c"
' Help topics
private const HELP_CONFIG = "config"
private const HELP_CERTMAPPING = "certmapping"
private const HELP_CUSTOMREMOTESHELL = "customremoteshell"
private const HELP_URIS = "uris"
private const HELP_ALIAS = "alias"
private const HELP_ALIASES = "aliases"
private const HELP_SWITCHES = "switches"
private const HELP_REMOTING = "remoting"
private const HELP_INPUT = "input"
private const HELP_AUTH = "auth"
private const HELP_PROXY = "proxy"
private const HELP_FILTERS = "filters"
' Literal values in key/value pairs
private const VAL_NO_AUTH = "none"
private const VAL_BASIC = "basic"
private const VAL_DIGEST = "digest"
private const VAL_KERBEROS = "kerberos"
private const VAL_NEGOTIATE = "negotiate"
private const VAL_CERT = "certificate"
private const VAL_CREDSSP = "credssp"
' proxy access types
private const VAL_PROXY_IE_CONFIG = "ie_settings"
private const VAL_PROXY_WINHTTP_CONFIG = "winhttp_settings"
private const VAL_PROXY_AUTODETECT = "auto_detect"
private const VAL_PROXY_NO_PROXY_SERVER = "no_proxy"
' Enumeration returnType values
private const VAL_RT_OBJECT = "object"
private const VAL_RT_EPR = "epr"
private const VAL_RT_OBJ_EPR = "objectandepr"
' Output formatting flags
private const VAL_FORMAT_XML = "xml"
private const VAL_FORMAT_PRETTY = "pretty"
private const VAL_FORMAT_PRETTY_XSLT = "WsmPty.xsl"
private const VAL_FORMAT_TEXT = "text"
private const VAL_FORMAT_TEXT_XSLT = "WsmTxt.xsl"
'''''''''''''''''''''
' Patterns
private const PTRN_IPV6_1 = "([A-Fa-f0-9]{1,4}:){6}:[A-Fa-f0-9]{1,4}"
private const PTRN_IPV6_2 = "([A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}"
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}"
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}"
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}"
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}"
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}"
private const PTRN_IPV6_S = ":"
private const PTRN_URI_LAST = "([a-z_][-a-z0-9._]*)$"
private const PTRN_OPT = "^-([a-z]+):(.*)"
private const PTRN_HASH_TOK = "\s*([\w:]+)\s*=\s*(\$null|""([^""]*)"")\s*"
dim PTRN_HASH_TOK_P
dim PTRN_HASH_VALIDATE
PTRN_HASH_TOK_P = "(" & PTRN_HASH_TOK & ")"
PTRN_HASH_VALIDATE = "(" & PTRN_HASH_TOK_P & ";)*(" & PTRN_HASH_TOK_P & ")"
dim PTRN_IPV6
PTRN_IPV6 = "^(" & _
PTRN_IPV6_1 & ")$|^(" & PTRN_IPV6_2 & ")$|^(" & _
PTRN_IPV6_3 & ")$|^(" & PTRN_IPV6_4 & ")$|^(" & PTRN_IPV6_5 & ")$|^(" & _
PTRN_IPV6_6 & ")$|^(" & PTRN_IPV6_7 & ")$"
'''''''''''''''''''''
' Misc
private const T_O = &h800705B4
private const URI_IPMI = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema"
private const URI_WMI = "http://schemas.microsoft.com/wbem/wsman/1/wmi"
private const NS_IPMI = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema"
private const NS_CIMBASE = "http://schemas.dmtf.org/wbem/wsman/1/base"
private const NS_WSMANL = "http://schemas.microsoft.com"
private const NS_XSI = "xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"""
private const ATTR_NIL = "xsi:nil=""true"""
private const ATTR_NIL_NAME = "xsi:nil"
private const NS_XSI_URI = "http://www.w3.org/2001/XMLSchema-instance"
private const ALIAS_WQL = "wql"
private const URI_WQL_DIALECT = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
private const ALIAS_XPATH = "xpath"
private const URI_XPATH_DIALECT = "http://www.w3.org/TR/1999/REC-xpath-19991116"
'Constants for MS-XML
private const NODE_ATTRIBUTE = 2
private const NODE_TEXT = 3
'''''''''''''''''''''
' Vars
dim wshShellObj
dim wsmanObj
dim connOptionsObj
dim sessionObj
dim enumeratorObj
dim resourceOptionsDic
dim resourceLocatorObj
dim wsmanInternalObj
dim cmdStr
dim wsmanCmdLineObj
dim inputStr
dim responseStr
dim connectionStr
dim resourceUriStr
dim actionUriStr
dim rootNdNameStr
dim operation
dim formatOption
dim formattedStr
dim errNo
dim errDesc
dim stdIn
dim stdErr
dim stdOut
set stdIn = WScript.StdIn
set stdErr = WScript.StdErr
set stdOut = WScript.StdOut
Dim resourceDictionary, resourcesLoaded
Set resourceDictionary = CreateObject("Scripting.Dictionary")
resourcesLoaded = false
Dim WSHShell, strRegKey, osVersion, osVista
Set WSHShell = WScript.CreateObject("WScript.Shell")
strRegKey = "HKLM\Software\Microsoft\Windows NT\CurrentVersion\CurrentVersion"
osVersion = WSHShell.RegRead(strRegKey)
osVista = "6.0"
' ------------------ Main() --------------------
If Not IsCScriptEnv() Then
Wscript.Echo GetResource("L_ONLYCSCRIPT_Message")
WScript.Quit(ERR_GENERAL_FAILURE)
End If
'Create an instance of the WSMAN.Automation Class
set wsmanObj = CreateObject("WSMAN.Automation")
set wsmanInternalObj = CreateObject("WSMAN.InternalAutomation")
'Get the raw text command line
cmdStr = wsmanObj.CommandLine
'Expand the environment strings
set wshShellObj = WScript.CreateObject("WScript.Shell")
cmdStr = wshShellObj.ExpandEnvironmentStrings(cmdStr)
'Create the command-line parsing object and parse the command line
Set wsmanCmdLineObj = New WSManCommandLineParser
If Not wsmanCmdLineObj.Parse(cmdStr) Then
HelpMenu "help", stdOut
WScript.Quit(ERR_GENERAL_FAILURE)
End If
Dim argOne
Dim argTwo
argOne = LCase(wsmanCmdLineObj.Argument(1))
argTwo = LCase(wsmanCmdLineObj.Argument(2))
If (argOne = OP_HELP Or argOne = NPARA_HELP Or argOne = "") Then
HelpMenu argTwo, stdOut
WScript.Quit(ERR_OK)
End If
'Check if the help argument was presented, and display help
If wsmanCmdLineObj.ArgumentExists(NPARA_HELP) Then
HelpMenu argOne, stdOut
WScript.Quit(ERR_OK)
End If
If argOne = OP_HELPMSG then
argTwo = WScript.Arguments(1)
Dim errNumber
Dim strHex
if (InStr(LCase(argTwo),"0x")= 1) then
strHex = "&H" + Mid(argTwo, 3)
On Error Resume Next
errNumber = CLng(strHex)
if Err.Number <> 0 then
HelpMenu OP_HELPMSG, stdOut
WScript.Quit(ERR_OK)
end if
elseif (InStr(LCase(argTwo),"-")= 1) then
strHex = "&H"+Hex(CLng(argTwo))
On Error Resume Next
errNumber = CLng(strHex)
if Err.Number <> 0 then
HelpMenu OP_HELPMSG, stdOut
WScript.Quit(ERR_OK)
end if
else
On Error Resume Next
errNumber = CLng(argTwo)
if Err.Number <> 0 then
HelpMenu OP_HELPMSG, stdOut
WScript.Quit(ERR_OK)
end if
end if
formattedStr = wsmanObj.GetErrorMessage(errNumber)
WScript.echo formattedStr
WScript.Quit(ERR_OK)
End If
wsmanCmdLineObj.ValidateArguments()
'Get and check the operation argument
operation = wsmanCmdLineObj.Operation()
If (wsmanCmdLineObj.ArgumentExists(NPARA_REMOTE)) Then
connectionStr = wsmanCmdLineObj.Argument(NPARA_REMOTE)
Else
connectionStr = ""
End If
'Set the format option for result output
if(wsmanCmdLineObj.ArgumentExists(NPARA_FORMAT)) then
formatOption = wsmanCmdLineObj.Argument(NPARA_FORMAT)
if Not (LCase(formatOption) = VAL_FORMAT_XML Or _
LCase(formatOption) = VAL_FORMAT_PRETTY Or _
LCase(formatOption) = VAL_FORMAT_TEXT) Then
stdErr.WriteLine GetResource("L_FORMATLERROR_Message") & """" & formatOption & """"
WScript.Quit(ERR_GENERAL_FAILURE)
end if
else
formatOption = VAL_FORMAT_TEXT
end if
'Create the wsman automation API session object
set sessionObj = CreateSession(wsmanObj, connectionStr, wsmanCmdLineObj, formatOption)
'Get the resource and action uri strings
resourceUriStr = ""
if operation = OP_INV then
actionUriStr = wsmanCmdLineObj.Argument(NPARA_PSEUDO_ACTION)
End If
If (operation <> OP_IDENTIFY and operation <> OP_QUICKCONFIG) Then
resourceUriStr = wsmanCmdLineObj.Argument(NPARA_PSEUDO_RESOURCE)
'Determine the name to use for the root node in the message
rootNdNameStr = GetRootNodeName(operation, resourceUriStr, actionUriStr)
End If
'Create the ResourceLocator object
If resourceUriStr <> "" Then
on error resume next
set resourceLocatorObj = CreateAndInitializeResourceLocator(wsmanObj,resourceUriStr,wsmanCmdLineObj)
if resourceLocatorObj Is Nothing then
if Err.Number <> 0 then
errNo = Err.Number
errDesc = Err.Description
stdErr.WriteLine GetResource("L_ERRNO_Message") & " " & errNo & " 0x" & Hex(errNo)
stdErr.WriteLine errDesc
end if
WScript.Quit(ERR_GENERAL_FAILURE)
end if
End If
'Gather the input parameters, if present, from the command line or a file. For Put,
'and input from @{...} instead of file, first do a Get to retrieve the present state
'of the object against which to apply the @{...} changes prior to the actual Put.
on error resume next
if not ProcessInput(wsmanObj, operation, rootNdNameStr, _
wsmanCmdLineObj, resourceLocatorObj,sessionObj, inputStr, formatOption) then
WScript.Quit(ERR_GENERAL_FAILURE)
end if
'Now execute the indicated operation.
on error resume next
select case operation
case OP_DEL
sessionObj.Delete(resourceLocatorObj)
case OP_GET
responseStr = sessionObj.Get(resourceLocatorObj)
case OP_PUT
responseStr = sessionObj.Put(resourceLocatorObj, inputStr)
case OP_CONFIGSDDL
responseStr = wsmanInternalObj.ConfigSDDL(sessionObj,resourceLocatorObj)
case OP_CRE
responseStr = sessionObj.Create(resourceLocatorObj, inputStr)
case OP_INV
responseStr = sessionObj.Invoke(actionUriStr, resourceLocatorObj, inputStr)
case OP_ENU
Enumerate wsmanObj, sessionObj, wsmanCmdLineObj, resourceLocatorObj, formatOption
case OP_IDENTIFY
responseStr = sessionObj.Identify
case OP_QUICKCONFIG
QuickConfig sessionObj, wsmanCmdLineObj
case else
ASSERTBOOL False, GetResource("L_UNKOPNM_Message") & "'" & operation & "'"
end select
'Process the output or error messages.
if Err.Number <> 0 then
ASSERTERR sessionObj, formatOption
on error goto 0
else
if operation <> OP_ENU and operation <> OP_DEL and operation <> OP_QUICKCONFIG then
If Reformat(responseStr,formattedStr,formatOption) Then
WScript.echo formattedStr
Else
stdErr.WriteLine GetResource("L_FORMATFAILED_Message")
stdErr.WriteLine responseStr
WScript.Quit(ERR_GENERAL_FAILURE)
End If
end if
end if
'Exist the script.
WScript.Quit(ERR_OK)
' ------------------ Utilities --------------------
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Loads resource strings from an ini file of the appropriate locale
Private Function LoadResourceData
If resourcesLoaded Then
Exit Function
End If
Dim lang, value, ini, zhHKlang, zhTWlang
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
On Error Resume Next
lang = GetUILanguage()
If Err.Number <> 0 Then
'API does not exist prior to Vista, use Getlocale for downlevel
Err.Clear
lang = GetLocale()
End If
' zh-HK will be treated as zh-TW
zhHKlang = 3076
zhTWlang = 1028
If lang = zhHKlang Then
lang = zhTWlang
End If
ini = fso.GetParentFolderName(WScript.ScriptFullName) & "\winrm\" _
& ToHex(lang) & "\" & fso.GetBaseName(WScript.ScriptName) & ".ini"
'stderr.writeline "Reading resources from " & ini
If fso.FileExists(ini) Then
Dim stream, file
Const ForReading = 1, TristateTrue = -1 'Read file in unicode format
'Debug.WriteLine "Using resource file " & ini
Set stream = fso.OpenTextFile(ini, ForReading, False, TristateTrue)
ReadResources(stream)
stream.Close
End If
resourcesLoaded = true
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Reads resource strings from an ini file
Function ReadResources(stream)
Const ERROR_FILE_NOT_FOUND = 2
Dim ln, arr, key, value
If Not IsObject(stream) Then Err.Raise ERROR_FILE_NOT_FOUND
Do Until stream.AtEndOfStream
ln = stream.ReadLine
arr = Split(ln, "=", 2, 1)
If UBound(arr, 1) = 1 Then
' Trim the key and the value first before trimming quotes
key = Trim(arr(0))
value = TrimChar(Trim(arr(1)), """")
'WScript.stderr.writeline "Read key " & key & " = " & value
If key <> "" Then
resourceDictionary.Add key, value
End If
End If
Loop
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Trim a character from the text string
Private Function TrimChar(s, c)
Const vbTextCompare = 1
' Trim character from the start
If InStr(1, s, c, vbTextCompare) = 1 Then
s = Mid(s, 2)
End If
' Trim character from the end
If InStr(Len(s), s, c, vbTextCompare) = Len(s) Then
s = Mid(s, 1, Len(s) - 1)
End If
TrimChar = s
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Get a 4-digit hexadecimal number
Private Function ToHex(n)
Dim s : s = Hex(n)
ToHex = String(4 - Len(s), "0") & s
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Get the resource string with the given name from the locale specific
' dictionary. If not found, use the built in default.
Private function GetResource(name)
LoadResourceData
If resourceDictionary.Exists(name) Then
GetResource = resourceDictionary.Item(name)
Else
GetResource = Eval(name)
End If
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Reads entire text file and return as string
private function ReadFile(file)
dim fso, f
set fso = CreateObject("Scripting.FileSystemObject")
ASSERTBOOL fso.FileExists(file), GetResource("L_NOFILE_Message") & "'" & file & "'"
set f = fso.OpenTextFile(file, 1, false,-2)
ReadFile = f.ReadAll
f.Close
set f = Nothing
set fso = Nothing
end function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name: CommandLineParser
' Purpose: To Parse Command-Line Arguments for access to Named and Unnamed
' arguments.
Class CommandLineParser
Private m_allArguments
Private m_namedArguments
Private m_unnamedArguments
Private m_operationShortcuts
Private m_parameterShortcuts
Private m_indexFirstSwitch
Private Sub ErrorHandler(isFatal,errorMessage)
WScript.StdErr.WriteLine GetResource("L_ERR_Message") & errorMessage
If isFatal Then
WScript.Quit(ERR_GENERAL_FAILURE)
End If
End Sub
Private Sub Class_Initialize()
Set m_allArguments = CreateObject("Scripting.Dictionary")
Set m_namedArguments = CreateObject("Scripting.Dictionary")
Set m_unnamedArguments = CreateObject("Scripting.Dictionary")
m_indexFirstSwitch = -1
Set m_operationShortcuts = CreateObject("Scripting.Dictionary")
m_operationShortcuts.Add SHORTCUT_CRE, OP_CRE
m_operationShortcuts.Add SHORTCUT_DEL, OP_DEL
m_operationShortcuts.Add SHORTCUT_ENU, OP_ENU
m_operationShortcuts.Add SHORTCUT_ENU2, OP_ENU
m_operationShortcuts.Add SHORTCUT_GET, OP_GET
m_operationShortcuts.Add SHORTCUT_INV, OP_INV
m_operationShortcuts.Add SHORTCUT_IDENTIFY, OP_IDENTIFY
m_operationShortcuts.Add SHORTCUT_PUT, OP_PUT
m_operationShortcuts.Add SHORTCUT_PUT2, OP_PUT
m_operationShortcuts.Add SHORTCUT_PUT3, OP_PUT
m_operationShortcuts.Add SHORTCUT_QUICKCONFIG, OP_QUICKCONFIG
m_operationShortcuts.Add SHORTCUT_HELPMSG, OP_HELPMSG
Set m_parameterShortcuts = CreateObject("Scripting.Dictionary")
m_parameterShortcuts.Add SHORTCUT_AUTH, NPARA_AUTH
m_parameterShortcuts.Add SHORTCUT_AUTH2, NPARA_AUTH
m_parameterShortcuts.Add SHORTCUT_PROXYACCESS, NPARA_PROXYACCESS
m_parameterShortcuts.Add SHORTCUT_PROXYACCESS2, NPARA_PROXYACCESS
m_parameterShortcuts.Add SHORTCUT_PROXYAUTH, NPARA_PROXYAUTH
m_parameterShortcuts.Add SHORTCUT_PROXYAUTH2, NPARA_PROXYAUTH
m_parameterShortcuts.Add SHORTCUT_FORMAT, NPARA_FORMAT
m_parameterShortcuts.Add SHORTCUT_PASSWORD, NPARA_PASSWORD
m_parameterShortcuts.Add SHORTCUT_PROXYPASSWORD, NPARA_PROXYPASSWORD
m_parameterShortcuts.Add SHORTCUT_REMOTE, NPARA_REMOTE
m_parameterShortcuts.Add SHORTCUT_REMOTE2, NPARA_REMOTE
m_parameterShortcuts.Add SHORTCUT_USERNAME, NPARA_USERNAME
m_parameterShortcuts.Add SHORTCUT_PROXYUSERNAME, NPARA_PROXYUSERNAME
m_parameterShortcuts.Add SHORTCUT_UNENCRYPTED, NPARA_UNENCRYPTED
m_parameterShortcuts.Add SHORTCUT_USESSL, NPARA_USESSL
m_parameterShortcuts.Add SHORTCUT_QUIET, NPARA_QUIET
m_parameterShortcuts.Add SHORTCUT_CERT, NPARA_CERT
End Sub
Public Function FirstSwitchIndex()
FirstSwitchIndex = m_indexFirstSwitch
End Function
Public Function Count()
Count = m_unnamedArguments.Count + m_namedArguments.Count
End Function
Public Function UnnamedCount()
UnnamedCount = m_unnamedArguments.Count
End Function
Public Function PositionName(index)
Dim keyArray
PositionName = ""
If IsNumeric(index) Then
If index >=0 And index < m_allArguments.Count Then
PositionName = m_allArguments(index)
End If
End If
End Function
Public Function UnnamedExists(index)
UnnamedExists = False
If IsNumeric(index) Then
If index >=0 And index < m_unnamedArguments.Count Then
UnnamedExists = True
End If
End If
End Function
Public Function UnnamedValue(index)
UnnamedValue = ""
If IsNumeric(index) Then
If index >=0 And index < m_unnamedArguments.Count Then
UnnamedValue = m_unnamedArguments(index)
End If
End If
End Function
Public Function NamedCount()
NamedCount = m_namedArguments.Count
End Function
Public Function NamedExists(key)
NamedExists = m_namedArguments.Exists(key)
End Function
Public Function NamedValue(key)
NamedValue = ""
If m_namedArguments.Exists(key) Then
NamedValue = m_namedArguments(key)
End If
End Function
Public Function NamedValueByIndex(index)
Dim itemArray
NamedValueByIndex = ""
If IsNumeric(index) Then
If index >= 0 And index < m_namedArguments.Count Then
itemArray = m_namedArguments.Items
NamedValueByIndex = itemArray(index)
End If
End If
End Function
Public Function NamedKeyByIndex(index)
Dim keyArray
NamedKeyByIndex = ""
If IsNumeric(index) Then
If index >= 0 And index < m_namedArguments.Count Then
keyArray = m_namedArguments.Keys
NamedKeyByIndex = keyArray(index)
End If
End If
End Function
Public Function Parse(cmdlineStr)
Dim cmdlineStrLen
Dim parseIndex
Dim inQuote
Dim inCurly
Dim currentParameter
Dim parameterName
Dim parameterValue
Dim parameterColonPos
Dim currentChar
Dim parameterValueQuoted
m_allArguments.RemoveAll
m_namedArguments.RemoveAll
m_unnamedArguments.RemoveAll
parseIndex = 1
inCurly = False
inQuote = False
cmdlineStrLen = Len(cmdlineStr)
Do While parseIndex <= cmdlineStrLen
currentParameter = ""
inQuote = False
inCurly = False
'skip whitespace
Do While parseIndex <= cmdlineStrLen
currentChar = Mid(cmdlineStr,parseIndex,1)
If currentChar <> " " Then
Exit Do
End If
parseIndex = parseIndex + 1
Loop
'capture text until first unquoted or uncurlied space, or end of string
Do While parseIndex <= cmdlineStrLen
currentChar = Mid(cmdlineStr,parseIndex,1)
If currentChar = "{" Then
If Not inQuote Then
inCurly = True
End If
currentParameter = currentParameter & currentChar
ElseIf currentChar = "}" Then
If Not inQuote Then
inCurly = False
End If
currentParameter = currentParameter & currentChar
ElseIf currentChar = """" Then
If inQuote Then
If Mid(cmdlineStr,parseIndex-1,1) <> "\" Then
inQuote = False
End If
Else
inQuote = True
End If
currentParameter = currentParameter & currentChar
ElseIf currentChar = " " Then
If inQuote Or inCurly Then
currentParameter = currentParameter & currentChar
Else
Exit Do
End If
Else
currentParameter = currentParameter & currentChar
End If
parseIndex = parseIndex + 1
Loop
'process the command line segment
If Len(currentParameter) > 0 Then
'for named parameters
If Left(currentParameter,1) = "-" Or Left(currentParameter,1) = "/" Then
If Left(currentParameter,2) = "//" Or Left(currentParameter,2) = "--" Then
'skip all double-prefix parameters - assumed for scripting host i.e. //nologo
Else
parameterColonPos = InStr(currentParameter,":")
If parameterColonPos > 0 Then
parameterName = LCase(Mid(currentParameter,2,parameterColonPos-2))
parameterValueQuoted = False
If Mid(currentParameter,parameterColonPos + 1,1) = """" Then
If Right(currentParameter,1) = """" Then
parameterValueQuoted = True
Else
ErrorHandler True,L_ImproperUseOfQuotes_ErrorMessage & parameterName
End If
ElseIf Mid(currentParameter,Len(currentParameter),1) = """" Then
ErrorHandler True,L_ImproperUseOfQuotes_ErrorMessage & parameterName
End If
If parameterValueQuoted Then
parameterValue = Mid(currentParameter,parameterColonPos + 2,Len(currentParameter) - parameterColonPos - 2)
Else
parameterValue = Mid(currentParameter,parameterColonPos + 1)
End If
Else
parameterName = LCase(Mid(currentParameter,2))
parameterValue = ""
End If
If m_parameterShortcuts.Exists(LCase(parameterName)) Then
parameterName = m_parameterShortcuts(LCase(parameterName))
End If
If Len(parameterName) > 0 Then
If m_namedArguments.Exists(parameterName) Then
ErrorHandler True,L_OPTNOTUNQ_Message & parameterName
End If
parameterValue = Replace(parameterValue, "\""", """")
If (0 = m_namedArguments.Count) Then
m_indexFirstSwitch = m_allArguments.Count
End If
If Len(parameterValue) > 0 Then
m_namedArguments.Add parameterName,parameterValue
Else
m_namedArguments.Add parameterName,""
End If
m_allArguments.Add m_allArguments.Count, parameterName
Else
ErrorHandler True,L_BLANKOPT_ErrorMessage
End If
End If
'for unnamed parameters
Else
parameterName = m_unnamedArguments.Count
If Left(currentParameter,1) = """" And Right(currentParameter,1) = """" Then
parameterValue = Mid(currentParameter,2,Len(currentParameter)-2)
Else
parameterValue = currentParameter
End If
parameterValue = Replace(parameterValue, "\""", """")
If m_operationShortcuts.Exists(LCase(parameterValue)) Then
parameterValue = m_operationShortcuts(LCase(parameterValue))
End If
m_unnamedArguments.Add parameterName,parameterValue
m_allArguments.Add m_allArguments.Count, parameterValue
End If
End If
Loop
Parse = (m_unnamedArguments.Count + m_namedArguments.Count) > 0
End Function
End Class
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name: WSManCommandLineParser
' Purpose: To Parse Command-Line Arguments and provide covenient access to all
' WSMan specific arguments, named and unnamed, by making positional
' effectively named
Class WSManCommandLineParser
private m_op
private m_commandLineParser
private m_commandIndex
private m_allowedOperations
private m_allowedParameterNames
private m_knownParameterNames
Private Sub ErrorHandler(isFatal,errorMessage)
WScript.StdErr.WriteLine GetResource("L_ERR_Message") & errorMessage
If isFatal Then
WScript.Quit(ERR_GENERAL_FAILURE)
End If
End Sub
Private Sub LoadOperations
m_allowedOperations.Add OP_GET, 1
m_allowedOperations.Add OP_PUT, 1
m_allowedOperations.Add OP_CONFIGSDDL, 1
m_allowedOperations.Add OP_CRE, 1
m_allowedOperations.Add OP_DEL, 1
m_allowedOperations.Add OP_ENU, 1
m_allowedOperations.Add OP_INV, 2
m_allowedOperations.Add OP_IDENTIFY, 0
m_allowedOperations.Add OP_QUICKCONFIG, 0
m_allowedOperations.Add OP_HELPMSG, 1
End Sub
Private Sub LoadAllowedParameters(op)
m_allowedParameterNames.Add NPARA_HELP,true
If (op = OP_QUICKCONFIG) Then
m_allowedParameterNames.Add NPARA_QUIET,true
m_allowedParameterNames.Add NPARA_TRANSPORT,true
m_allowedParameterNames.Add NPARA_FORCE,true
elseif (op = OP_IDENTIFY) Then
m_allowedParameterNames.Add NPARA_USERNAME,true
m_allowedParameterNames.Add NPARA_PASSWORD,true
m_allowedParameterNames.Add NPARA_PROXYUSERNAME,true
m_allowedParameterNames.Add NPARA_PROXYPASSWORD,true
m_allowedParameterNames.Add NPARA_CERT,true
m_allowedParameterNames.Add NPARA_REMOTE,true
m_allowedParameterNames.Add NPARA_NOCACHK,true
m_allowedParameterNames.Add NPARA_NOCNCHK,true
m_allowedParameterNames.Add NPARA_NOREVCHK,true
m_allowedParameterNames.Add NPARA_DEFAULTCREDS,true
m_allowedParameterNames.Add NPARA_SPNPORT,true
m_allowedParameterNames.Add NPARA_TIMEOUT,true
m_allowedParameterNames.Add NPARA_AUTH,true
m_allowedParameterNames.Add NPARA_PROXYACCESS,true
m_allowedParameterNames.Add NPARA_PROXYAUTH,true
m_allowedParameterNames.Add NPARA_UNENCRYPTED,true
m_allowedParameterNames.Add NPARA_USESSL,true
m_allowedParameterNames.Add NPARA_ENCODING,true
m_allowedParameterNames.Add NPARA_FORMAT,true
Else
m_allowedParameterNames.Add NPARA_USERNAME,true
m_allowedParameterNames.Add NPARA_PASSWORD,true
m_allowedParameterNames.Add NPARA_PROXYUSERNAME,true
m_allowedParameterNames.Add NPARA_PROXYPASSWORD,true
m_allowedParameterNames.Add NPARA_CERT,true
m_allowedParameterNames.Add NPARA_DIALECT,true
m_allowedParameterNames.Add NPARA_FILE,true
m_allowedParameterNames.Add NPARA_FILTER,true
m_allowedParameterNames.Add NPARA_REMOTE,true
m_allowedParameterNames.Add NPARA_NOCACHK,true
m_allowedParameterNames.Add NPARA_NOCNCHK,true
m_allowedParameterNames.Add NPARA_NOREVCHK,true
m_allowedParameterNames.Add NPARA_DEFAULTCREDS,true
m_allowedParameterNames.Add NPARA_SPNPORT,true
m_allowedParameterNames.Add NPARA_TIMEOUT,true
m_allowedParameterNames.Add NPARA_AUTH,true
m_allowedParameterNames.Add NPARA_PROXYACCESS,true
m_allowedParameterNames.Add NPARA_PROXYAUTH,true
m_allowedParameterNames.Add NPARA_UNENCRYPTED,true
m_allowedParameterNames.Add NPARA_USESSL,true
m_allowedParameterNames.Add NPARA_ENCODING,true
m_allowedParameterNames.Add NPARA_FORMAT,true
m_allowedParameterNames.Add NPARA_OPTIONS,true
m_allowedParameterNames.Add NPARA_FRAGMENT,true
End If
if (op = OP_ENU) Then
m_allowedParameterNames.Add NPARA_RETURN_TYPE,true
m_allowedParameterNames.Add NPARA_SHALLOW,true
m_allowedParameterNames.Add NPARA_BASE_PROPS_ONLY,true
m_allowedParameterNames.Add NPARA_ASSOCINST,true
End If
m_knownParameterNames.Add NPARA_HELP,true
m_knownParameterNames.Add NPARA_QUIET,true
m_knownParameterNames.Add NPARA_FORCE,true
m_knownParameterNames.Add NPARA_TRANSPORT,true
m_knownParameterNames.Add NPARA_USERNAME,true
m_knownParameterNames.Add NPARA_PASSWORD,true
m_knownParameterNames.Add NPARA_PROXYUSERNAME,true
m_knownParameterNames.Add NPARA_PROXYPASSWORD,true
m_knownParameterNames.Add NPARA_CERT,true
m_knownParameterNames.Add NPARA_DIALECT,true
m_knownParameterNames.Add NPARA_ASSOCINST,true
m_knownParameterNames.Add NPARA_FILE,true
m_knownParameterNames.Add NPARA_FILTER,true
m_knownParameterNames.Add NPARA_REMOTE,true
m_knownParameterNames.Add NPARA_NOCACHK,true
m_knownParameterNames.Add NPARA_NOCNCHK,true
m_knownParameterNames.Add NPARA_NOREVCHK,true
m_knownParameterNames.Add NPARA_DEFAULTCREDS,true
m_knownParameterNames.Add NPARA_SPNPORT,true
m_knownParameterNames.Add NPARA_TIMEOUT,true
m_knownParameterNames.Add NPARA_AUTH,true
m_knownParameterNames.Add NPARA_PROXYACCESS,true
m_knownParameterNames.Add NPARA_PROXYAUTH,true
m_knownParameterNames.Add NPARA_UNENCRYPTED,true
m_knownParameterNames.Add NPARA_USESSL,true
m_knownParameterNames.Add NPARA_ENCODING,true
m_knownParameterNames.Add NPARA_FORMAT,true
m_knownParameterNames.Add NPARA_OPTIONS,true
m_knownParameterNames.Add NPARA_FRAGMENT,true
m_knownParameterNames.Add NPARA_RETURN_TYPE,true
m_knownParameterNames.Add NPARA_SHALLOW,true
m_knownParameterNames.Add NPARA_BASE_PROPS_ONLY,true
End Sub
Public Function ValidateArguments()
Dim unnamedCount
Dim unnamedCountExpected
Dim valid
Dim index
valid = True
m_op = LCase(Argument(NPARA_PSEUDO_OPERATION))
If (Not m_allowedOperations.Exists(m_op)) Then
ErrorHandler True, GetResource("L_UNKOPNM_Message") & "'" & m_op & "'"
End If
LoadAllowedParameters m_op
'Make sure there the right number of unnamed arguments based upon op
unnamedCount = m_commandLineParser.UnnamedCount - m_commandIndex
unnamedCountExpected = m_allowedOperations(m_op) + 2
'Remove @{} from count
If (ArgumentExists(NPARA_PSEUDO_AT)) Then
unnamedCount = unnamedCount - 1
End If
If (unnamedCount <> unnamedCountExpected) Then
valid = False
End If
'Make sure the unnamed parameters come first
If (m_commandLineParser.FirstSwitchIndex <= unnamedCountExpected) Then
If (m_commandLineParser.FirstSwitchIndex > 0) Then
valid = False
End If
End If
If (ArgumentExists(NPARA_PSEUDO_AT) Or ArgumentExists(NPARA_FILE)) Then
If (operation <> OP_INV And operation <> OP_CRE And operation <> OP_PUT) Then
ErrorHandler True, L_OpDoesntAcceptInput_ErrorMessage
End If
End If
'loop through all named parameters and make sure they are in the allowed list
For index = 0 To m_commandLineParser.NamedCount - 1
If Not m_knownParameterNames.Exists(LCase(m_commandLineParser.NamedKeyByIndex(index))) Then
valid = False
ErrorHandler False, GetResource("L_UNKOPT_ErrorMessage") & m_commandLineParser.NamedKeyByIndex(index)
Elseif Not m_allowedParameterNames.Exists(LCase(m_commandLineParser.NamedKeyByIndex(index))) Then
valid = False
ErrorHandler False, GetResource("L_INVOPT_ErrorMessage") & m_commandLineParser.NamedKeyByIndex(index)
End If
Next
If Not valid Then
ErrorHandler True,L_UNKOPT_GenMessage & m_commandLineParser.NamedKeyByIndex(index)
End If
End Function
Private Sub Class_Initialize()
Set m_commandLineParser = New CommandLineParser
Set m_allowedOperations = CreateObject("Scripting.Dictionary")
Set m_allowedParameterNames = CreateObject("Scripting.Dictionary")
Set m_knownParameterNames = CreateObject("Scripting.Dictionary")
m_commandIndex = 0
LoadOperations
End Sub
Public Function Operation()
Operation = m_op
End Function
Public Function ArgumentExists(argumentName)
Dim index
ArgumentExists = False
If LCase(argumentName) = NPARA_PSEUDO_COMMAND Then
ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex)
ElseIf LCase(argumentName) = NPARA_PSEUDO_OPERATION Then
ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex + 1)
ElseIf LCase(argumentName) = NPARA_PSEUDO_ACTION Then
If LCase(m_commandLineParser.UnnamedValue(m_commandIndex + 1)) = OP_INV Then
ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex + 2)
End If
ElseIf LCase(argumentName) = NPARA_PSEUDO_RESOURCE Then
If LCase(m_commandLineParser.UnnamedValue(m_commandIndex + 1)) = OP_INV Then
ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex + 3)
Else
ArgumentExists = m_commandLineParser.UnnamedExists(m_commandIndex + 2)
End If
ElseIf argumentName = NPARA_PSEUDO_AT Then
For index = m_commandIndex To m_commandLineParser.UnnamedCount - 1
If Mid(m_commandLineParser.UnnamedValue(index),1,1) = NPARA_PSEUDO_AT Then
ArgumentExists = True
Exit For
End If
Next
Else
ArgumentExists = m_commandLineParser.NamedExists(argumentName)
End If
End Function
Public Function Argument(argumentName)
Dim index
If IsNumeric(argumentName) Then
Argument = m_commandLineParser.PositionName(argumentName + m_commandIndex)
ElseIf LCase(argumentName) = NPARA_PSEUDO_COMMAND Then
Argument = m_commandLineParser.UnnamedValue(m_commandIndex)
ElseIf LCase(argumentName) = NPARA_PSEUDO_OPERATION Then
Argument = m_commandLineParser.UnnamedValue(m_commandIndex + 1)
ElseIf LCase(argumentName) = NPARA_PSEUDO_ACTION Then
If LCase(m_commandLineParser.UnnamedValue(m_commandIndex + 1)) = OP_INV Then
Argument = m_commandLineParser.UnnamedValue(m_commandIndex + 2)
Else
Argument = ""
End If
ElseIf LCase(argumentName) = NPARA_PSEUDO_RESOURCE Then
If LCase(m_commandLineParser.UnnamedValue(m_commandIndex + 1)) = OP_INV Then
Argument = m_commandLineParser.UnnamedValue(m_commandIndex + 3)
Else
Argument = m_commandLineParser.UnnamedValue(m_commandIndex + 2)
End If
ElseIf argumentName = NPARA_PSEUDO_AT Then
For index = m_commandIndex To m_commandLineParser.UnnamedCount - 1
If Mid(m_commandLineParser.UnnamedValue(index),1,1) = NPARA_PSEUDO_AT Then
Argument = Mid(m_commandLineParser.UnnamedValue(index),2)
Exit For
Else
Argument = ""
End If
Next
Else
Argument = m_commandLineParser.NamedValue(argumentName)
If argumentName = NPARA_FORMAT Then
If (Mid(Argument,1,1) = "#") Then
Argument = Mid(Argument,2)
End If
End If
End If
End Function
Public Function Count
Count = m_commandLineParser.Count - m_commandIndex
End Function
Public Function Parse(commandLineStr)
Dim rval
Dim index
rval = m_commandLineParser.Parse(commandLineStr)
If rval Then
rval = False
For index = 0 To m_commandLineParser.UnnamedCount - 1
If InStr(LCase(m_commandLineParser.UnnamedValue(index)),"winrm.vbs") > 0 Then
m_commandIndex = index
rval = True
Exit For
End If
Next
If Not rval Then
ErrorHandler True, GetResource("L_ScriptNameNotFound_ErrorMessage")
End If
End If
Parse = rval
End Function
End Class
'''''''''''''''''''''
' Removes ?params part from URI
private function StripParams(uri)
dim qmpos
ASSERTBOOL Len(uri) <> 0, GetResource("L_URIZERO_Message")
qmpos = InStr(uri, "?")
if qmpos <> 0 then
StripParams = Left(uri, qmpos - 1)
else
StripParams = uri
end if
end function
'''''''''''''''''''''
' Enumerate helper
private function Enumerate(wsmanObj, session, cmdlineOptions, resLocator, formatOption)
dim filter
dim dialect
dim e
dim res
dim formattedText
dim flags
flags = 0
if cmdlineOptions.ArgumentExists(NPARA_FILTER) then
filter = cmdlineOptions.Argument(NPARA_FILTER)
dialect = URI_WQL_DIALECT
end if
if cmdlineOptions.ArgumentExists(NPARA_DIALECT) then
dialect = cmdlineOptions.Argument(NPARA_DIALECT)
end if
If LCase(dialect) = "selector" Then
dialect = "http://schemas.dmtf.org/wbem/wsman/1/wsman/SelectorFilter"
End If
If LCase(dialect) = "http://schemas.dmtf.org/wbem/wsman/1/wsman/selectorfilter" Then
dim dict
set dict = ProcessParameterHash(filter)
If dict Is Nothing Then
Exit Function
End If
Dim name
Dim value
filter = ""
For Each name In dict
value = dict(name)
filter = filter & "" & Escape(value) & ""
Next
filter = filter & ""
End If
If LCase(dialect) = "wql" Then
dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
End If
If LCase(dialect) = "association" Then
dialect = "http://schemas.dmtf.org/wbem/wsman/1/cimbinding/AssociationFilter"
End If
If LCase(dialect) = LCase("http://schemas.dmtf.org/wbem/wsman/1/cimbinding/AssociationFilter") Then
If not cmdlineOptions.ArgumentExists(NPARA_FILTER) Then
ASSERTBOOL false, "-" & NPARA_FILTER & " parameter is required for the given dialect"
End If
If (cmdlineOptions.ArgumentExists(NPARA_ASSOCINST)) Then
flags = flags OR wsmanObj.EnumerationFlagAssociationInstance
Else
flags = flags OR wsmanObj.EnumerationFlagAssociatedInstance
End if
End If
If ( (LCase(dialect) <> LCase("http://schemas.dmtf.org/wbem/wsman/1/cimbinding/AssociationFilter")) and cmdlineOptions.ArgumentExists(NPARA_ASSOCINST) ) Then
ASSERTBOOL false, "-" & NPARA_ASSOCINST & " is not a valid option for the given dialect"
End If
if cmdlineOptions.ArgumentExists(NPARA_RETURN_TYPE) then
select case LCase(cmdlineOptions.Argument(NPARA_RETURN_TYPE))
case VAL_RT_OBJECT
' default
case VAL_RT_EPR
flags = flags OR wsmanObj.EnumerationFlagReturnEPR
case VAL_RT_OBJ_EPR
flags = flags OR wsmanObj.EnumerationFlagReturnObjectAndEPR
case else
ASSERTBOOL false, "-" & NPARA_RETURN_TYPE & ":" & cmdlineOptions.Argument(NPARA_RETURN_TYPE) & " is not a valid option"
end select
end if
if (cmdlineOptions.ArgumentExists(NPARA_SHALLOW)) then
flags = flags OR wsmanObj.EnumerationFlagHierarchyShallow
elseif (cmdlineOptions.ArgumentExists(NPARA_BASE_PROPS_ONLY)) then
flags = flags OR wsmanObj.EnumerationFlagHierarchyDeepBasePropsOnly
else
flags = flags OR wsmanObj.EnumerationFlagHierarchyDeep
end if
on error resume next
set e = session.Enumerate(resLocator, filter, dialect, flags)
if Err.Number = T_O then
set e = session.Enumerate(resLocator, filter, dialect, flags)
if Err.Number = T_O then
set e = session.Enumerate(resLocator, filter, dialect, flags)
end if
end if
ASSERTERR session, formatOption
on error goto 0
if cmdlineOptions.ArgumentExists(NPARA_TIMEOUT) then
e.Timeout = cmdlineOptions.Argument(NPARA_TIMEOUT)
end if
if(LCase(formatOption) <> VAL_FORMAT_TEXT) then
wscript.echo ""
end if
do while Not e.AtEndOfStream
on error resume next
res = e.ReadItem()
if Err.Number = T_O then
res = e.ReadItem()
if Err.Number = T_O then
res = e.ReadItem()
end if
end if
if Err.Number <> 0 then
stdErr.WriteLine e.Error
wscript.echo ""
end if
ASSERTERR e, formatOption
on error goto 0
'reformat if requested
on error resume next
err.clear
if not Reformat(res,formattedText,formatOption) then
exit do
end if
wscript.echo formattedText
loop
if(LCase(formatOption) <> VAL_FORMAT_TEXT) then
wscript.echo ""
end if
set e = Nothing
Enumerate = ""
end function
'''''''''''''''''''''
private function GetSuffix(resUri)
ASSERTBOOL Len(resUri) <> 0, GetResource("L_URIZERO_Message")
GetSuffix = "_INPUT"
end function
'''''''''''''''''''''
' QuickConfig helper
Private Function QuickConfig(session, cmdlineOptions)
QuickConfigRemoting session, cmdlineOptions, true
If Err.Number <> 0 Then
Exit Function
End If
QuickConfigRemoting session, cmdlineOptions, false
End function
Private Function QuickConfigRemoting(session, cmdlineOptions, serviceOnly)
Dim analysisInputXml
Dim analysisOutputXml
Dim analysisOutput
Dim transport
Dim action
If (serviceOnly = false) Then
If (Not cmdlineOptions.ArgumentExists(NPARA_TRANSPORT)) Then
transport = "http"
Else
transport = cmdlineOptions.Argument(NPARA_TRANSPORT)
End If
End If
If (serviceOnly = true) Then
analysisInputXml = ""
action = "AnalyzeService"
ElseIf (cmdlineOptions.ArgumentExists(NPARA_FORCE)) Then
analysisInputXml = "" & transport & ""
action = "Analyze"
Else
analysisInputXml = "" & transport & ""
action = "Analyze"
End If
On Error Resume Next
analysisOutputXml = sessionObj.Invoke(action, "winrm/config/service", analysisInputXml)
If Err.Number <> 0 Then
Exit Function
End If
'wscript.echo analysisOutputXml
On Error Resume Next
Set analysisOutput = CreateObject("MSXML2.DOMDocument.3.0")
If Err.number <> 0 Then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_MSXML3MISSING_Message")
Exit Function
End If
analysisOutput.LoadXML(analysisOutputXml)
If (analysisOutput.parseError.errorCode <> 0) Then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_XMLERROR_Message") & paramXmlFile.parseError.reason
Exit Function
End If
Dim xpathEnabled
Dim xpathText
Dim xpathUpdate
If (serviceOnly = true) Then
xpathEnabled = "/s:AnalyzeService_OUTPUT/s:RemotingEnabled"
xpathText = "/s:AnalyzeService_OUTPUT/s:Results"
xpathUpdate = "/s:AnalyzeService_OUTPUT/s:EnableService_INPUT"
Else
xpathEnabled = "/s:Analyze_OUTPUT/s:RemotingEnabled"
xpathText = "/s:Analyze_OUTPUT/s:Results"
xpathUpdate = "/s:Analyze_OUTPUT/s:EnableRemoting_INPUT"
End If
Dim enabled
Dim displayText
Dim updateInputXml
Dim source
enabled = GetElementByXpath(analysisOutput, xpathEnabled)
source = GetElementAttributeByXpath(analysisOutput, xpathEnabled, "Source")
If (enabled = "true") Then
If (serviceOnly = true) Then
stdOut.WriteLine GetResource("L_QuickConfigNoServiceChangesNeeded_Message2")
Else
stdOut.WriteLine GetResource("L_QuickConfigNoChangesNeeded_Message")
End If
Exit Function
End If
If (enabled <> "false") Then
stdErr.WriteLine GetResource("L_QuickConfig_InvalidBool_0_ErrorMessage")
Exit Function
End If
displayText = GetElementByXpath(analysisOutput, xpathText)
updateInputXml = GetElementByXpath(analysisOutput, xpathUpdate)
if (source = "GPO") Then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_QuickConfig_RemotingDisabledbyGP_00_ErrorMessage")
stdErr.WriteLine displayText
Exit Function
End If
'wscript.echo updateInputXml
If (updateInputXml = "" OR displayText = "") Then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_QuickConfig_MissingUpdateXml_0_ErrorMessage")
Exit Function
End If
If (serviceOnly = true) Then
stdOut.writeline GetResource("L_QuickConfig_ServiceUpdatesNeeded_0_Message")
Else
stdOut.writeline GetResource("L_QuickConfig_UpdatesNeeded_0_Message")
End If
stdOut.writeline GetResource("L_QuickConfig_UpdatesNeeded_1_Message")
stdOut.writeline ""
stdOut.writeline displayText
stdOut.writeline ""
If (Not cmdlineOptions.ArgumentExists(NPARA_QUIET) And Not cmdlineOptions.ArgumentExists(NPARA_FORCE)) Then
stdOut.write GetResource("L_QuickConfig_Prompt_0_Message")
dim answer
answer = LCase(stdIn.ReadLine)
If answer <> "y" And answer <> "yes" Then
Exit Function
End If
stdOut.writeline ""
End If
Dim updateOutputXml
If (serviceOnly = true) Then
action = "EnableService"
Else
action = "EnableRemoting"
End If
On Error Resume Next
updateOutputXml = sessionObj.Invoke(action, "winrm/config/service", updateInputXml)
If Err.Number <> 0 Then
Exit Function
End If
'wscript.echo updateOutputXml
Dim updateOutput
On Error Resume Next
Set updateOutput = CreateObject("MSXML2.DOMDocument.3.0")
If Err.number <> 0 Then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_MSXML3MISSING_Message")
Exit Function
End If
updateOutput.LoadXML(updateOutputXml)
If (updateOutput.parseError.errorCode <> 0) Then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_XMLERROR_Message") & paramXmlFile.parseError.reason
Exit Function
End If
Dim xpathStatus
Dim xpathResult
If (serviceOnly = true) Then
xpathStatus = "/s:EnableService_OUTPUT/s:Status"
xpathResult = "/s:EnableService_OUTPUT/s:Results"
Else
xpathStatus = "/s:EnableRemoting_OUTPUT/s:Status"
xpathResult = "/s:EnableRemoting_OUTPUT/s:Results"
End If
Dim status
Dim resultText
status = GetElementByXpath(updateOutput, xpathStatus)
resultText = GetElementByXpath(updateOutput, xpathResult)
If (status = "succeeded") Then
If (serviceOnly = true) Then
stdOut.WriteLine GetResource("L_QuickConfigUpdatedService_Message")
Else
stdOut.WriteLine GetResource("L_QuickConfigUpdated_Message")
End If
Else
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_QuickConfigUpdateFailed_ErrorMessage")
End If
If (resultText <> "") Then
stdOut.WriteLine ""
stdOut.WriteLine resultText
End If
End Function
'''''''''''''''''''''
' Helper to run xpath over msxml obj and find single element
Private Function GetElementByXpath(msxmlObj, xpath)
GetElementByXpath = ""
msxmlObj.setProperty "SelectionLanguage", "XPath"
msxmlObj.setproperty "SelectionNamespaces", "xmlns:s=""http://schemas.microsoft.com/wbem/wsman/1/config/service"""
Dim elementList
Dim currentElement
Set currentElement = msxmlObj.selectSingleNode(xpath)
If Not currentElement is Nothing Then
If currentElement.hasChildNodes() Then
If currentElement.childNodes.length = 1 Then
dim aNode
Set aNode = currentElement.childNodes.nextNode()
If aNode.nodeType = NODE_TEXT Then
GetElementByXpath = aNode.text
Exit Function
End If
End If
End If
GetElementByXpath = currentElement.xml
End If
Exit Function
Set elementList = msxmlObj.selectNodes(xpath)
If elementList.length = 1 Then
Set currentElement = elementList.nextNode()
If currentElement.nodeType = NODE_TEXT Then
GetElementByXpath = currentElement.text
Else
GetElementByXpath = currentElement.xml
End If
End If
End Function
'''''''''''''''''''''
' Helper to run xpath over msxml obj and find single element
Private Function GetElementAttributeByXpath(msxmlObj, xpath, attributeName)
GetElementAttributeByXpath = ""
msxmlObj.setProperty "SelectionLanguage", "XPath"
msxmlObj.setproperty "SelectionNamespaces", "xmlns:s=""http://schemas.microsoft.com/wbem/wsman/1/config/service"""
Dim currentElement
Set currentElement = msxmlObj.selectSingleNode(xpath)
GetElementAttributeByXpath = currentElement.getAttribute("Source")
End Function
'''''''''''''''''''''
' Helper to run xpath over msxml obj and find single element
Private Function GetElementXml(msxmlObj, currentElement)
GetElementXml = ""
msxmlObj.setProperty "SelectionLanguage", "XPath"
msxmlObj.setproperty "SelectionNamespaces", "xmlns:s=""http://schemas.microsoft.com/wbem/wsman/1/config/service"""
Dim elementList
GetElementByXpath = currentElement.xml
End Function
'''''''''''''''''''''
' Returns XML ns depending on the type of URI
private function GetXmlNs(resUri)
dim resUriLCase
dim s1
dim s2
ASSERTBOOL Len(resUri) <> 0, GetResource("L_URIZERO_Message")
resUriLCase = LCase(resUri)
if InStr(resUriLCase, URI_IPMI) <> 0 then
GetXmlNs = StripParams(resUri)
elseif InStr(resUriLCase, URI_WMI) <> 0 then
GetXmlNs = StripParams(resUri)
else
'//GetXmlNs = StripParams(resUri) & ".xsd"
'//This was reported by Intel as an interop issue. So now we are not appending a .xsd in the end.
GetXmlNs = StripParams(resUri)
end if
GetXmlNs = "xmlns:p=""" & GetXmlNs & """"
end function
'''''''''''''''''''''
' Verify if target is in IPv6 format
private function IsIPv6(target)
dim regexpObj
Set regexpObj = New RegExp
regexpObj.Pattern = PTRN_IPV6_S
regexpObj.IgnoreCase = TRUE
dim matches
set matches = regExpObj.Execute(target)
if matches.Count <> 0 then
IsIPv6 = true
else
IsIPv6 = false
end if
end function
'''''''''''''''''''''
' Extracts XML root node nm. from URI
private function GetRootNodeName(opr, resUri, actUri)
dim uriTmp
dim sfx
dim s
dim regexpObj
Set regexpObj = New RegExp
ASSERTBOOL Len(opr) <> 0, "'opr' parameter is 0 length or null"
sfx = ""
select case opr
case OP_PUT
uriTmp = resUri
case OP_CRE
uriTmp = resUri
case OP_INV
uriTmp = actUri
sfx = GetSuffix(resUri)
case else
GetRootNodeName = ""
exit function
end select
ASSERTBOOL Len(uriTmp) <> 0, GetResource("L_URIZERO_Message")
uriTmp = StripParams(uriTmp)
regexpObj.Pattern = PTRN_URI_LAST
regexpObj.IgnoreCase = TRUE
dim matches
set matches = regexpObj.Execute(uriTmp)
ASSERTBOOL matches.Count = 1, GetResource("L_NOLASTTOK_Message")
uriTmp = matches(0)
ASSERTBOOL Len(uriTmp) <> 0, GetResource("L_URIZEROTOK_Message")
GetRootNodeName = uriTmp & sfx
end function
private function ProcessParameterHash(hashString)
on error resume next
dim matches
dim m
dim regexpObj
Set regexpObj = New RegExp
regexpObj.Global = True
regexpObj.IgnoreCase = True
dim resultDictionary
set resultDictionary = CreateObject("Scripting.Dictionary")
If Len(hashString) > 0 then
If Len(hashString) > 2 Then
If Mid(hashString,1,1) <> "{" Or Mid(hashString,Len(hashString),1) <> "}" Then
stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
set ProcessParameterHash = Nothing
Exit Function
End If
regexpObj.Pattern = PTRN_HASH_VALIDATE
regexpObj.ignoreCase = true
set matches = regexpObj.Execute(hashString)
if matches.Count <> 1 then
stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
set ProcessParameterHash = Nothing
Exit Function
end if
'following check ensures that if we have unmatched substrings
'we report a syntax error. the way we determine is first to
'calculate the expected string length by going through all
'the matches and then comparing with input string length
dim expectedLength
regexpObj.Pattern = PTRN_HASH_TOK
regexpObj.ignoreCase = true
set matches = regexpObj.Execute(hashString)
expectedLength = matches.Count-1
for each m in matches
expectedLength = expectedLength + m.Length
next
'account for starting and closing {}
expectedLength = expectedLength + 2
if (expectedLength <> Len(hashString)) then
stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
set ProcessParameterHash = Nothing
Exit Function
end if
regexpObj.Pattern = PTRN_HASH_TOK
regexpObj.ignoreCase = true
set matches = regexpObj.Execute(hashString)
if matches.Count > 0 then
for each m in matches
if resultDictionary.Exists(m.Submatches(0)) then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOARRAY_Message") & m.Submatches(0)
set ProcessParameterHash = Nothing
Exit Function
end if
if LCase(m.Submatches(1)) = "$null" then
resultDictionary.Add m.Submatches(0),null
else
resultDictionary.Add m.Submatches(0),m.Submatches(2)
end if
next
end if
ElseIf hashString <> "{}" Then
stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
set ProcessParameterHash = Nothing
Exit Function
End If
Else
stdErr.WriteLine GetResource("L_HashSyntax_ErrorMessage")
set ProcessParameterHash = Nothing
Exit Function
End If
set ProcessParameterHash = resultDictionary
end function
private function CreateAndInitializeResourceLocator(wsman,resourceUri,cmdlineOptions)
on error resume next
Dim key
dim resourceLocator
dim paramMap
Dim optionsValue
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' create the resource locator object
Set resourceLocator = Wsman.CreateResourceLocator(resourceUri)
if Err.number <> 0 then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_RESOURCELOCATOR_Message")
set CreateAndInitializeResourceLocator = Nothing
exit function
end if
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' set the options on the resource locator
optionsValue = cmdlineOptions.Argument("options")
If Len(optionsValue) Then
set paramMap = ProcessParameterHash(optionsValue)
if paramMap Is Nothing then
set CreateAndInitializeResourceLocator = Nothing
'todo exit function
end if
for each key in paramMap
if IsNull(paramMap(key)) then
resourceLocator.AddOption key, null
else
resourceLocator.AddOption key,paramMap(key)
end if
next
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' set the fragment path and fragment dialect on the resource locator
if(cmdlineOptions.ArgumentExists(NPARA_FRAGMENT)) then
resourceLocator.FragmentPath = cmdlineOptions.Argument(NPARA_FRAGMENT)
end if
if(cmdlineOptions.ArgumentExists(NPARA_DIALECT)) then
resourceLocator.FragmentDialect = cmdlineOptions.Argument(NPARA_DIALECT)
end if
set CreateAndInitializeResourceLocator = resourceLocator
end function
'''''''''''''''''''''
' Reads input XML from the stdin or builds XML from @{...}
private function ProcessInput(wsman, operation, root, cmdlineOptions, resourceLocator,sessionObj,inputStr,formatOption)
on error resume next
dim parameterDic,key
dim putStr
dim elementList
dim currentElement
dim paramXmlFile
dim tmpNode
dim parameterString
dim parameterCount
dim xmlns
'make sure it's a relevent operation
select case operation
case OP_PUT
case OP_CRE
case OP_INV
case else
inputStr = ""
ProcessInput = true
exit function
end select
xmlns = GetXmlNs(resourceLocator.ResourceURI)
'process the parameters into a Map
parameterString = cmdlineOptions.Argument(NPARA_PSEUDO_AT)
parameterCount = 0
If Len(parameterString) Then
set parameterDic = ProcessParameterHash(parameterString)
'if parameter processing failed, exit
if parameterDic Is Nothing then
set ProcessInput = false
exit function
end if
parameterCount = parameterDic.Count
End If
'if there were no parameters, get from file
if parameterCount = 0 then
if cmdlineOptions.ArgumentExists(NPARA_FILE) then
inputStr = ReadFile(cmdlineOptions.Argument(NPARA_FILE))
ProcessInput = true
exit function
end if
end if
if operation = OP_CRE Or operation = OP_INV then
dim nilns
nilns = ""
dim parameters
parameters = ""
if parameterCount > 0 then
for each key in parameterDic
parameters = parameters & "" & Escape(parameterDic(key)) & _
""
next
end if
putStr = "" & _
parameters & ""
elseif operation = OP_PUT then
if parameterCount = 0 then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOINPUT_Message")
inputStr = ""
ProcessInput = false
exit function
end if
'get the original resource xml
on error resume next
putStr = sessionObj.Get(resourceLocator)
if Err.Number <> 0 then
ASSERTERR sessionObj, formatOption
inputStr = ""
ProcessInput = false
exit function
end if
'create an MSXML DomDocument object to work with the resource xml
on error resume next
Set paramXmlFile = CreateObject("MSXML2.DOMDocument.3.0")
if Err.number <> 0 then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_MSXML3MISSING_Message")
inputStr = ""
ProcessInput = false
exit function
end if
paramXmlFile.async = false
'load the domdocument with the resource xml
paramXmlFile.LoadXML(putStr)
if (paramXmlFile.parseError.errorCode <> 0) then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_XMLERROR_Message") & paramXmlFile.parseError.reason
inputStr = ""
ProcessInput = false
exit function
end if
paramXmlFile.setProperty "SelectionLanguage", "XPath"
'loop through the command-line name/value pairs
for each key in parameterDic
'find the elements matching the key
Dim xpathString
xpathString = "/*/*[local-name()=""" & key & """]"
if LCase(key) = "location" then
'Ignore cim:Location
xpathString = "/*/*[local-name()=""" & key & """ and namespace-uri() != """ & NS_CIMBASE & """]"
end if
Set elementList = paramXmlFile.selectNodes(xpathString)
'make sure there is 1 - error on 0 or > 1
if elementList.length = 0 then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOMATCH_Message") & key
inputStr = ""
ProcessInput = false
Exit Function
elseif elementList.length > 1 then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_MULTIMATCH_Message") & key
inputStr = ""
ProcessInput = false
Exit Function
else
'get the node from the list
Set currentElement = elementList.nextNode()
'make sure the node does not have anything other than 1 or less text children
if currentElement.hasChildNodes() then
if currentElement.childNodes.length > 1 then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOTATTR_Message") & key
inputStr = ""
ProcessInput = false
Exit Function
else
dim aNode
Set aNode = currentElement.childNodes.nextNode()
if aNode.nodeType <> NODE_TEXT then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_PUT_PARAM_NOTATTR_Message") & key
inputStr = ""
ProcessInput = false
Exit Function
end if
end if
end if
if IsNull(parameterDic(key)) then
Set tmpNode = paramXmlFile.createNode(NODE_ATTRIBUTE,ATTR_NIL_NAME,NS_XSI_URI)
tmpNode.text = "true"
currentElement.setAttributeNode tmpNode
currentElement.text = ""
else
'delete nil attribute if present
currentElement.attributes.removeNamedItem(ATTR_NIL_NAME)
currentElement.text = parameterDic(key)
end if
end If
next
putStr = paramXmlFile.xml
end if
inputStr = putStr
ProcessInput = true
end function
private function ReadStdIn()
while Not stdIn.AtEndOfStream
ReadStdIn = ReadStdIn & stdIn.ReadAll
wend
end function
'''''''''''''''''''''
' Escapes non XML chars
private function Escape(str)
dim i
for i = 1 to Len(str)
select case Mid(str, i, 1)
case "&"
Escape = Escape & "&"
case "<"
Escape = Escape & "<"
case ">"
Escape = Escape & ">"
case """"
Escape = Escape & """
case "'"
Escape = Escape & "'"
case else
Escape = Escape & Mid(str, i, 1)
end select
next
end function
'''''''''''''''''''''
' Checks if this script is running under cscript.exe
private function IsCScriptEnv()
if InStrRev(LCase(WScript.FullName), "cscript.exe", -1) <> 0 then
IsCScriptEnv = True
else
IsCScriptEnv = False
end if
end function
private function CreateSession(wsman, conStr, optDic, formatOption)
dim sessionFlags
dim conOpt
dim session
dim authVal
dim encodingVal
dim encryptVal
dim pw
dim tout
' proxy information
dim proxyAccessType
dim proxyAccessTypeVal
dim proxyAuthenticationMechanism
dim proxyAuthenticationMechanismVal
dim proxyUsername
dim proxyPassword
sessionFlags = 0
proxyAccessType = 0
proxyAccessTypeVal = 0
proxyAuthenticationMechanism = 0
proxyAuthenticationMechanismVal = 0
proxyUsername = ""
proxyPassword = ""
set conOpt = Nothing
if optDic.ArgumentExists(NPARA_ENCODING) then
ASSERTNAL(NPARA_ENCODING)
ASSERTBOOL optDic.ArgumentExists(NPARA_REMOTE), "The '-encoding' option is only valid when used with the '-remote' option"
encodingVal = optDic.Argument(NPARA_ENCODING)
if LCase(encodingVal) = "utf-16" then
sessionFlags = sessionFlags OR wsman.SessionFlagUTF16
elseif LCase(encodingVal) = "utf-8" then
sessionFlags = sessionFlags OR wsman.SessionFlagUTF8
else
' Invalid!
ASSERTBOOL false, "The specified encoding flag is invalid."
end if
end if
if optDic.ArgumentExists(NPARA_UNENCRYPTED) then
ASSERTBOOL optDic.ArgumentExists(NPARA_REMOTE), "The '-" & NPARA_UNENCRYPTED & "' option is only valid when used with the '-remote' option"
'C API will ensure that unencrypted is only used w/ http
sessionFlags = sessionFlags OR wsman.SessionFlagNoEncryption
end if
if optDic.ArgumentExists(NPARA_USESSL) then
ASSERTBOOL optDic.ArgumentExists(NPARA_REMOTE), "The '-" & NPARA_USESSL & "' option is only valid when used with the '-remote' option"
sessionFlags = sessionFlags OR wsman.SessionFlagUseSsl
end if
if optDic.ArgumentExists(NPARA_AUTH) then
ASSERTNAL(NPARA_AUTH)
authVal = optDic.Argument(NPARA_AUTH)
select case LCase(authVal)
case VAL_NO_AUTH
sessionFlags = sessionFlags OR wsman.SessionFlagUseNoAuthentication
ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:none'"
ASSERTBOOL not optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option is not valid for '-auth:none'"
ASSERTBOOL not optDic.ArgumentExists(NPARA_PASSWORD), "The '-" & NPARA_PASSWORD & "' option is only valid for '-auth:none'"
case VAL_BASIC
'Use -username and -password.
ASSERTBOOL optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option must be specified for '-auth:basic'"
ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:basic'"
sessionFlags = sessionFlags OR wsman.SessionFlagCredUsernamePassword OR wsman.SessionFlagUseBasic
case VAL_DIGEST
'Use -username and -password.
ASSERTBOOL optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option must be specified for '-auth:digest'"
ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:digest'"
sessionFlags = sessionFlags OR wsman.SessionFlagCredUsernamePassword OR wsman.SessionFlagUseDigest
case VAL_KERBEROS
'-username and -password are optional.
ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:kerberos'"
sessionFlags = sessionFlags OR wsman.SessionFlagUseKerberos
case VAL_NEGOTIATE
'-username and -password are optional.
ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:negotiate'"
sessionFlags = sessionFlags OR wsman.SessionFlagUseNegotiate
case VAL_CERT
'-certificate is mandatory.
ASSERTBOOL optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option must be specified for '-auth:certificate'"
'-username or -password must not be used
ASSERTBOOL not optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option is not valid for '-auth:certificate'"
ASSERTBOOL not optDic.ArgumentExists(NPARA_PASSWORD), "The '-" & NPARA_PASSWORD & "' option is not valid for '-auth:certificate'"
sessionFlags = sessionFlags OR wsman.SessionFlagUseClientCertificate
case VAL_CREDSSP
'Use -username and -password.
ASSERTBOOL osVersion >= osVista, "The specified '-" & NPARA_AUTH & "' flag '" & authVal & "' has an invalid value."
ASSERTBOOL optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option must be specified for '-auth:credssp'"
ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option is not valid for '-auth:credssp'"
sessionFlags = sessionFlags OR wsman.SessionFlagCredUsernamePassword OR wsman.SessionFlagUseCredSSP
case else
ASSERTBOOL false, "The specified '-" & NPARA_AUTH & "' flag '" & authVal & "' has an invalid value."
end select
end if
if optDic.ArgumentExists(NPARA_USERNAME) then
ASSERTBOOL not optDic.ArgumentExists(NPARA_CERT), "The '-" & NPARA_CERT & "' option cannot be used together with '-username'"
set conOpt = wsman.CreateConnectionOptions
conOpt.UserName = optDic.Argument(NPARA_USERNAME)
if optDic.ArgumentExists(NPARA_PASSWORD) then
conOpt.Password = optDic.Argument(NPARA_PASSWORD)
end if
sessionFlags = sessionFlags OR wsman.SessionFlagCredUsernamePassword
end if
if optDic.ArgumentExists(NPARA_DEFAULTCREDS) then
ASSERTBOOL not optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option cannot be used together with '-defaultCreds'"
ASSERTBOOL not optDic.ArgumentExists(NPARA_PASSWORD), "The '-" & NPARA_PASSWORD & "' option cannot be used together with '-defaultCreds'"
'this is only valid if -auth:Negotiate is specified
ASSERTBOOL (LCase(optDic.Argument(NPARA_AUTH)) = VAL_NEGOTIATE), "The " & NPARA_DEFAULTCREDS & " option is only valid when the authentication mechanism is " & VAL_NEGOTIATE
'C API will ensure this is only used w/ https
sessionFlags = sessionFlags OR wsman.SessionFlagAllowNegotiateImplicitCredentials
end if
if optDic.ArgumentExists(NPARA_CERT) then
ASSERTBOOL not optDic.ArgumentExists(NPARA_USERNAME), "The '-" & NPARA_USERNAME & "' option cannot be used together with '-certificate'"
ASSERTBOOL not optDic.ArgumentExists(NPARA_PASSWORD), "The '-" & NPARA_PASSWORD & "' option cannot be used together with '-certificate'"
set conOpt = wsman.CreateConnectionOptions
conOpt.CertificateThumbprint = optDic.Argument(NPARA_CERT)
if optDic.ArgumentExists(NPARA_AUTH) then
ASSERTBOOL (LCase(optDic.Argument(NPARA_AUTH)) = VAL_CERT), "The " & NPARA_CERT & " option is only valid when the authentication mechanism is " & VAL_CERT
end if
'-auth might be missing, in which case we assume -a:Certificate
sessionFlags = sessionFlags OR wsman.SessionFlagUseClientCertificate
end if
if optDic.ArgumentExists(NPARA_PROXYACCESS) then
ASSERTNAL(NPARA_PROXYACCESS)
if conOpt Is Nothing then
set conOpt = wsman.CreateConnectionOptions
end if
proxyAccessTypeVal = optDic.Argument(NPARA_PROXYACCESS)
select case LCase(proxyAccessTypeVal)
case VAL_PROXY_IE_CONFIG
proxyAccessType = conOpt.ProxyIEConfig
case VAL_PROXY_WINHTTP_CONFIG
proxyAccessType = conOpt.ProxyWinHttpConfig
case VAL_PROXY_AUTODETECT
proxyAccessType = conOpt.ProxyAutoDetect
case VAL_PROXY_NO_PROXY_SERVER
proxyAccessType = conOpt.ProxyNoProxyServer
case else
ASSERTBOOL false, "The specified '-" & NPARA_PROXYACCESS & "' field '" & proxyAccessTypeVal & "' has an invalid value."
end select
end if
if optDic.ArgumentExists(NPARA_PROXYAUTH) then
ASSERTNAL(NPARA_PROXYAUTH)
ASSERTBOOL optDic.ArgumentExists(NPARA_PROXYACCESS), "The '-" & NPARA_PROXYAUTH & "' option is only valid when used with the '-" & NPARA_PROXYACCESS & "' option"
if conOpt Is Nothing then
set conOpt = wsman.CreateConnectionOptions
end if
proxyAuthenticationMechanismVal = optDic.Argument(NPARA_PROXYAUTH)
select case LCase(proxyAuthenticationMechanismVal)
case VAL_BASIC
proxyAuthenticationMechanism = conOpt.ProxyAuthenticationUseBasic
case VAL_DIGEST
proxyAuthenticationMechanism = conOpt.ProxyAuthenticationUseDigest
case VAL_NEGOTIATE
proxyAuthenticationMechanism = conOpt.ProxyAuthenticationUseNegotiate
case else
ASSERTBOOL false, "The specified '-" & NPARA_PROXYAUTH & "' flag '" & proxyAuthenticationMechanismVal & "' has an invalid value."
end select
end if
if optDic.ArgumentExists(NPARA_PROXYUSERNAME) then
ASSERTBOOL optDic.ArgumentExists(NPARA_PROXYAUTH), "The '-" & NPARA_PROXYUSERNAME & "' option is only valid when used with the '-" & NPARA_PROXYAUTH & "' option"
proxyUsername = optDic.Argument(NPARA_PROXYUSERNAME)
end if
if optDic.ArgumentExists(NPARA_PROXYPASSWORD) then
ASSERTBOOL optDic.ArgumentExists(NPARA_PROXYUSERNAME), "The '-" & NPARA_PROXYPASSWORD & "' option is only valid when used with the '-" & NPARA_PROXYUSERNAME & "' option"
proxyPassword = optDic.Argument(NPARA_PROXYPASSWORD)
end if
if optDic.ArgumentExists(NPARA_PROXYACCESS) then
on error resume next
responseStr = conOpt.SetProxy(proxyAccessType, proxyAuthenticationMechanism, proxyUsername, proxyPassword)
ASSERTERR conOpt, formatOption
on error goto 0
end if
if optDic.ArgumentExists(NPARA_NOCACHK) then
'C API will ensure this is only used w/ https
sessionFlags = sessionFlags OR wsman.SessionFlagSkipCACheck
end if
if optDic.ArgumentExists(NPARA_NOCNCHK) then
'C API will ensure this is only used w/ https
sessionFlags = sessionFlags OR wsman.SessionFlagSkipCNCheck
end if
if optDic.ArgumentExists(NPARA_NOREVCHK) then
'C API will ensure this is only used w/ https
sessionFlags = sessionFlags OR wsman.SessionFlagSkipRevocationCheck
end if
if optDic.ArgumentExists(NPARA_SPNPORT) then
'this is only valid if -auth is not specified or if -auth:Negotiate or -auth:Kerberos is specified
if optDic.ArgumentExists(NPARA_AUTH) then
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
end if
sessionFlags = sessionFlags OR wsman.SessionFlagEnableSPNServerPort
end if
on error resume next
set session = wsman.CreateSession(conStr, sessionFlags, conOpt)
ASSERTERR wsman, formatOption
on error goto 0
if optDic.ArgumentExists(NPARA_TIMEOUT) then
ASSERTNAL(NPARA_TIMEOUT)
tout = optDic.Argument(NPARA_TIMEOUT)
ASSERTBOOL IsNumeric(tout), "Numeric value for -timeout option is expected"
session.Timeout = optDic.Argument(NPARA_TIMEOUT)
end if
set CreateSession = session
end function
private sub ASSERTERR(obj, formatOption)
dim errNo
dim errDesc
dim responseStr
dim formattedStr
if Err.Number <> 0 then
errNo = Err.Number
errDesc = Err.Description
responseStr = obj.Error
If Reformat(responseStr,formattedStr,formatOption) Then
stdErr.WriteLine formattedStr
Else
stdErr.WriteLine responseStr
End if
stdErr.WriteLine GetResource("L_ERRNO_Message") & " " & errNo & " 0x" & Hex(errNo)
stdErr.WriteLine errDesc
WScript.Quit(ERR_GENERAL_FAILURE)
end if
end sub
' Assert Named Argument Length
private sub ASSERTNAL(namedArg)
if Len(wsmanCmdLineObj.Argument(namedArg)) = 0 then
stdErr.WriteLine GetResource("L_ERR_Message") & GetResource("L_ARGNOVAL_Message") & namedArg
WScript.Quit(ERR_GENERAL_FAILURE)
end if
end sub
private sub ASSERTBOOL(bool, msg)
if Not bool then
stdErr.WriteLine GetResource("L_ERR_Message") & msg
WScript.Quit(ERR_GENERAL_FAILURE)
end if
end sub
private function ReFormat(rawStr,formattedStr,formatOption)
dim xslFile
dim xmlFile
dim xmlFileName
dim xslFileName
if Len(rawStr) = 0 then
ReFormat = false
exit function
end if
on error resume next
err.clear
if LCase(formatOption) = VAL_FORMAT_XML then
formattedStr = rawStr
else
set xmlFile = CreateObject("MSXML2.DOMDOCUMENT.3.0")
if Err.number <> 0 then
stdErr.WriteLine GetResource("L_MSXML3MISSING_Message")
on error goto 0
ReFormat = false
exit function
end if
set xslFile = CreateObject("MSXML2.DOMDOCUMENT.3.0")
if Err.number <> 0 then
stdErr.WriteLine GetResource("L_MSXML3MISSING_Message")
on error goto 0
ReFormat = false
exit function
end if
xmlFile.async = false
xslFile.async = false
xmlFile.LoadXML(rawStr)
if (xmlFile.parseError.errorCode <> 0) then
stdErr.WriteLine GetResource("L_XMLERROR_Message") & xmlFile.parseError.reason
on error goto 0
ReFormat = false
exit function
end if
if LCase(formatOption) = VAL_FORMAT_TEXT then
If Not xslFile.load(VAL_FORMAT_TEXT_XSLT) Then
stdErr.WriteLine GetResource("L_XSLERROR_Message") & VAL_FORMAT_TEXT_XSLT
if xslFile.parseError.errorCode < 0 then
stdErr.WriteLine xslFile.parseError.reason
end if
on error goto 0
ReFormat = false
exit function
end if
elseif LCase(formatOption) = VAL_FORMAT_PRETTY then
If Not xslFile.load(VAL_FORMAT_PRETTY_XSLT) Then
stdErr.WriteLine GetResource("L_XSLERROR_Message") & VAL_FORMAT_PRETTY_XSLT
if xslFile.parseError.errorCode < 0 then
stdErr.WriteLine xslFile.parseError.reason
end if
on error goto 0
ReFormat = false
exit function
end if
else
stdErr.WriteLine GetResource("L_FORMATLERROR_Message") & formatOption
stdErr.WriteLine
on error goto 0
ReFormat = false
exit function
end if
formattedStr = xmlFile.transformNode (xslFile)
if Err.number <> 0 then
stdErr.WriteLine Err.Description
on error goto 0
ReFormat = false
exit function
end if
end if
ReFormat = true
end function
Private Sub HelpMenu(topic, stream)
Dim helpMenu
Set helpMenu = CreateObject("Scripting.Dictionary")
helpMenu.Add OP_HELP, "HelpHelp"
helpMenu.Add OP_GET, "HelpGet"
helpMenu.Add OP_PUT, "HelpSet"
helpMenu.Add OP_CONFIGSDDL, "HelpConfigSDDL"
helpMenu.Add OP_CRE, "HelpCreate"
helpMenu.Add OP_DEL, "HelpDelete"
helpMenu.Add OP_ENU, "HelpEnum"
helpMenu.Add OP_INV, "HelpInvoke"
helpMenu.Add OP_QUICKCONFIG, "HelpQuickConfig"
helpMenu.Add OP_IDENTIFY, "HelpIdentify"
helpMenu.Add OP_HELPMSG, "HelpMsg"
helpMenu.Add NPARA_USERNAME, "HelpAuth"
helpMenu.Add NPARA_PASSWORD, "HelpAuth"
helpMenu.Add NPARA_PROXYAUTH, "HelpProxy"
helpMenu.Add NPARA_PROXYACCESS, "HelpProxy"
helpMenu.Add NPARA_PROXYUSERNAME, "HelpProxy"
helpMenu.Add NPARA_PROXYPASSWORD, "HelpProxy"
helpMenu.Add NPARA_DIALECT, "HelpSwitches"
helpMenu.Add NPARA_FILE, "HelpInput"
helpMenu.Add NPARA_FILTER, "HelpSwitches"
helpMenu.Add NPARA_REMOTE, "HelpRemote"
helpMenu.Add NPARA_NOCACHK, "HelpSwitches"
helpMenu.Add NPARA_NOCNCHK, "HelpSwitches"
helpMenu.Add NPARA_NOREVCHK, "HelpSwitches"
helpMenu.Add NPARA_DEFAULTCREDS, "HelpSwitches"
helpMenu.Add NPARA_SPNPORT, "HelpSwitches"
helpMenu.Add NPARA_TIMEOUT, "HelpSwitches"
helpMenu.Add NPARA_AUTH, "HelpAuth"
helpMenu.Add NPARA_UNENCRYPTED, "HelpRemote"
helpMenu.Add NPARA_USESSL, "HelpRemote"
helpMenu.Add NPARA_ENCODING, "HelpSwitches"
helpMenu.Add NPARA_FORMAT, "HelpSwitches"
helpMenu.Add NPARA_OPTIONS, "HelpSwitches"
helpMenu.Add NPARA_FRAGMENT, "HelpSwitches"
helpMenu.Add "@{}", "HelpInput"
helpMenu.Add HELP_CONFIG, "HelpConfig"
helpMenu.Add HELP_CertMapping, "HelpCertMapping"
helpMenu.Add HELP_URIS, "HelpUris"
helpMenu.Add HELP_ALIAS, "HelpAlias"
helpMenu.Add HELP_ALIASES, "HelpAlias"
helpMenu.Add HELP_FILTERS, "HelpFilters"
helpMenu.Add HELP_SWITCHES, "HelpSwitches"
helpMenu.Add HELP_REMOTING, "HelpRemote"
helpMenu.Add HELP_INPUT, "HelpInput"
helpMenu.Add HELP_AUTH, "HelpAuth"
helpMenu.Add HELP_PROXY, "HelpProxy"
Dim helpFctn
topic = LCase(topic)
If helpMenu.Exists(topic) Then
helpFctn = helpMenu(topic)
Else
helpFctn = "HelpHelp"
End If
stream.WriteLine GetResource("L_Help_Title_0_Message") & vbNewLine
If topic <> "all" Then
Dim cmd
cmd = "Call " & helpFctn & "(stream)"
Execute(cmd)
Else
HelpAll(stream)
End If
End Sub
Private Sub HelpTopic(stream, label)
dim NL
NL = vbNewLine
Dim seperator
seperator = vbNewLine & "-------------------------------------------------------------------------------"
stream.WriteLine seperator & NL & "TOPIC: " & label & NL
End Sub
Private Sub HelpAll(stream)
Dim seperator
seperator = vbNewLine & "-------------------------------------------------------------------------------"
dim NL
NL = vbNewLine
HelpTopic stream, "winrm -?"
HelpHelp stream
HelpTopic stream, "winrm get -?"
HelpGet stream
HelpTopic stream, "winrm set -?"
HelpSet stream
HelpTopic stream, "winrm create -?"
HelpCreate stream
HelpTopic stream, "winrm delete -?"
HelpDelete stream
HelpTopic stream, "winrm enumerate -?"
HelpEnum stream
HelpTopic stream, "winrm invoke -?"
HelpInvoke stream
HelpTopic stream, "winrm identify -?"
HelpIdentify stream
HelpTopic stream, "winrm quickconfig -?"
HelpQuickConfig stream
HelpTopic stream, "winrm helpmsg -?"
HelpMsg stream
HelpTopic stream, "winrm help uris"
HelpUris stream
HelpTopic stream, "winrm help alias"
HelpAlias stream
HelpTopic stream, "winrm help config"
HelpConfig stream
HelpTopic stream, "winrm help configsddl"
HelpConfigsddl stream
HelpTopic stream, "winrm help certmapping"
HelpCertMapping stream
HelpTopic stream, "winrm help remoting"
HelpRemote stream
HelpTopic stream, "winrm help auth"
HelpAuth stream
HelpTopic stream, "winrm help proxy"
HelpProxy stream
HelpTopic stream, "winrm help input"
HelpInput stream
HelpTopic stream, "winrm help filters"
HelpFilters stream
HelpTopic stream, "winrm help switches"
HelpSwitches stream
End Sub
''''''''''''''''''''''''''''''''''''''''''''
' HELP - HELP
Private Sub HelpHelp(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpHelp_000_0_Message") & NL & _
GetResource("L_HelpHelp_001_0_Message") & NL & _
GetResource("L_HelpHelp_001_1_Message") & NL & _
GetResource("L_HelpHelp_002_0_Message") & NL & _
GetResource("L_HelpHelp_003_0_Message") & NL & _
GetResource("L_HelpHelp_004_0_Message") & NL & _
GetResource("L_HelpHelp_005_0_Message") & NL & _
GetResource("L_HelpHelp_007_0_Message") & NL & _
GetResource("L_HelpHelp_008_0_Message") & NL & _
GetResource("L_HelpHelp_009_0_Message") & NL & _
GetResource("L_HelpHelp_010_0_Message") & NL & _
GetResource("L_HelpHelp_011_0_Message") & NL & _
GetResource("L_HelpHelp_012_0_Message") & NL & _
GetResource("L_HelpHelp_013_0_Message") & NL & _
GetResource("L_HelpHelp_014_0_Message") & NL & _
GetResource("L_HelpHelp_015_0_Message") & NL & _
GetResource("L_HelpHelp_015_1_Message") & NL & _
GetResource("L_HelpHelp_016_0_Message") & NL & _
GetResource("L_HelpHelp_016_1_Message") & NL & _
GetResource("L_HelpHelp_016_3_Message") & NL & _
GetResource("L_HelpHelp_016_4_Message") & NL & _
GetResource("L_HelpHelp_017_0_Message") & NL & _
GetResource("L_HelpHelp_018_0_Message") & NL & _
GetResource("L_HelpHelp_019_0_Message") & NL & _
GetResource("L_HelpHelp_020_0_Message") & NL & _
GetResource("L_HelpHelp_021_0_Message") & NL & _
GetResource("L_HelpHelp_021_2_Message") & NL & _
GetResource("L_HelpHelp_022_0_Message") & NL & _
GetResource("L_HelpHelp_023_0_Message") & NL & _
GetResource("L_HelpHelp_024_0_Message") & NL & _
GetResource("L_HelpHelp_025_0_Message") & NL & _
GetResource("L_HelpHelp_026_0_Message")
End Sub
'''''''''''''''''''''
' HELP - GET
Private Sub HelpGet(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpGet_000_0_Message") & NL & _
GetResource("L_HelpGet_001_0_Message") & NL & _
GetResource("L_HelpGet_002_0_Message") & NL & _
GetResource("L_HelpGet_003_0_Message") & NL & _
GetResource("L_HelpGet_004_0_Message") & NL & _
GetResource("L_HelpGet_005_0_Message") & NL & _
GetResource("X_HelpGet_006_0_Message") & NL & _
GetResource("L_HelpGet_007_0_Message") & NL & _
GetResource("L_HelpGet_008_0_Message") & NL & _
GetResource("X_HelpGet_009_0_Message") & NL & _
GetResource("L_HelpGet_010_0_Message") & NL & _
GetResource("L_HelpGet_014_0_Message") & NL & _
GetResource("X_HelpGet_015_0_Message") & NL & _
GetResource("L_HelpGet_016_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - CONFIGSDDL
Private Sub HelpConfigsddl(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpConfigsddl_000_1_Message") & NL & _
GetResource("L_HelpConfigsddl_001_0_Message") & NL & _
GetResource("L_HelpConfigsddl_002_0_Message") & NL & _
GetResource("L_HelpConfigsddl_002_1_Message") & NL & _
GetResource("L_HelpConfigsddl_003_0_Message") & NL & _
GetResource("L_HelpConfigsddl_004_0_Message") & NL & _
GetResource("L_HelpConfigsddl_005_0_Message") & NL & _
GetResource("L_HelpConfigsddl_005_1_Message") & NL & _
GetResource("L_HelpConfigsddl_006_0_Message") & NL & _
GetResource("L_HelpConfigsddl_010_0_Message") & NL & _
GetResource("L_HelpConfigsddl_011_0_Message") & NL & _
GetResource("X_HelpConfigsddl_012_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - SET
Private Sub HelpSet(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpSet_001_0_Message") & NL & _
GetResource("L_HelpSet_002_0_Message") & NL & _
GetResource("L_HelpSet_003_0_Message") & NL & _
GetResource("L_HelpSet_004_0_Message") & NL & _
GetResource("L_HelpSet_005_0_Message") & NL & _
GetResource("L_HelpSet_006_0_Message") & NL & _
GetResource("L_HelpSet_007_0_Message") & NL & _
GetResource("L_HelpSet_008_0_Message") & NL & _
GetResource("L_HelpSet_009_0_Message") & NL & _
GetResource("X_HelpSet_010_0_Message") & NL & _
GetResource("L_HelpSet_011_0_Message") & NL & _
GetResource("L_HelpSet_012_0_Message") & NL & _
GetResource("X_HelpSet_013_0_Message") & NL & _
GetResource("L_HelpSet_014_0_Message") & NL & _
GetResource("L_HelpSet_018_0_Message") & NL & _
GetResource("X_HelpSet_019_0_Message") & NL & _
GetResource("L_HelpSet_020_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - CREATE
Private Sub HelpCreate(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpCreate_001_0_Message") & NL & _
GetResource("L_HelpCreate_002_0_Message") & NL & _
GetResource("L_HelpCreate_003_0_Message") & NL & _
GetResource("L_HelpCreate_004_0_Message") & NL & _
GetResource("L_HelpCreate_005_0_Message") & NL & _
GetResource("L_HelpCreate_006_0_Message") & NL & _
GetResource("L_HelpCreate_007_0_Message") & NL & _
GetResource("L_HelpCreate_008_0_Message") & NL & _
GetResource("X_HelpCreate_009_0_Message") & NL & _
GetResource("L_HelpCreate_010_0_Message") & NL & _
GetResource("L_HelpCreate_011_0_Message") & NL & _
GetResource("X_HelpCreate_012_0_Message") & NL & _
GetResource("L_HelpCreate_013_0_Message") & NL & _
GetResource("L_HelpCreate_014_0_Message") & NL & _
GetResource("L_HelpCreate_015_0_Message") & NL & _
GetResource("X_HelpCreate_016_0_Message") & NL & _
GetResource("L_HelpCreate_017_0_Message") & NL & _
GetResource("L_HelpCreate_022_0_Message") & NL & _
GetResource("X_HelpCreate_023_0_Message") & NL & _
GetResource("L_HelpCreate_024_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - DELETE
Private Sub HelpDelete(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpDelete_001_0_Message") & NL & _
GetResource("L_HelpDelete_002_0_Message") & NL & _
GetResource("L_HelpDelete_003_0_Message") & NL & _
GetResource("L_HelpDelete_004_0_Message") & NL & _
GetResource("L_HelpDelete_005_0_Message") & NL & _
GetResource("X_HelpDelete_006_0_Message") & NL & _
GetResource("L_HelpDelete_007_0_Message") & NL & _
GetResource("L_HelpDelete_008_0_Message") & NL & _
GetResource("X_HelpDelete_009_0_Message") & NL & _
GetResource("L_HelpDelete_010_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - ENUMERATE
Private Sub HelpEnum(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpEnum_001_0_Message") & NL & _
GetResource("L_HelpEnum_001_1_Message") & NL & _
GetResource("L_HelpEnum_002_0_Message") & NL & _
GetResource("L_HelpEnum_003_0_Message") & NL & _
GetResource("L_HelpEnum_004_0_Message") & NL & _
GetResource("L_HelpEnum_005_0_Message") & NL & _
GetResource("L_HelpEnum_006_0_Message") & NL & _
GetResource("L_HelpEnum_006_1_Message") & NL & _
GetResource("L_HelpEnum_006_2_Message") & NL & _
GetResource("L_HelpEnum_006_3_Message") & NL & _
GetResource("L_HelpEnum_006_4_Message") & NL & _
GetResource("L_HelpEnum_006_5_Message") & NL & _
GetResource("L_HelpEnum_006_6_Message") & NL & _
GetResource("L_HelpEnum_006_7_Message") & NL & _
GetResource("L_HelpEnum_006_8_Message") & NL & _
GetResource("L_HelpEnum_006_9_Message") & NL & _
GetResource("L_HelpEnum_006_10_Message") & NL & _
GetResource("L_HelpEnum_006_11_Message") & NL & _
GetResource("L_HelpEnum_006_12_Message") & NL & _
GetResource("L_HelpEnum_006_13_Message") & NL & _
GetResource("L_HelpEnum_006_14_Message") & NL & _
GetResource("L_HelpEnum_006_15_Message") & NL & _
GetResource("L_HelpEnum_006_16_Message") & NL & _
GetResource("L_HelpEnum_006_17_Message") & NL & _
GetResource("L_HelpEnum_006_18_Message") & NL & _
GetResource("L_HelpEnum_006_19_Message") & NL & _
GetResource("L_HelpEnum_006_20_Message") & NL & _
GetResource("L_HelpEnum_006_21_Message") & NL & _
GetResource("L_HelpEnum_006_22_Message") & NL & _
GetResource("L_HelpEnum_006_23_Message") & NL & _
GetResource("L_HelpEnum_007_0_Message") & NL & _
GetResource("X_HelpEnum_008_0_Message") & NL & _
GetResource("L_HelpEnum_009_0_Message") & NL & _
GetResource("L_HelpEnum_010_0_Message") & NL & _
GetResource("X_HelpEnum_011_0_Message") & NL & _
GetResource("L_HelpEnum_012_0_Message") & NL & _
GetResource("L_HelpEnum_016_0_Message") & NL & _
GetResource("X_HelpEnum_017_0_Message") & NL & _
GetResource("L_HelpEnum_018_0_Message") & NL & _
GetResource("L_HelpEnum_019_0_Message") & NL & _
GetResource("X_HelpEnum_020_0_Message") & NL & _
GetResource("L_HelpEnum_021_0_Message") & NL & _
GetResource("L_HelpEnum_022_0_Message") & NL & _
GetResource("X_HelpEnum_023_0_Message") & NL & _
GetResource("L_HelpEnum_024_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Filters_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - INVOKE
Private Sub HelpInvoke(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpInvoke_001_0_Message") & NL & _
GetResource("L_HelpInvoke_002_0_Message") & NL & _
GetResource("L_HelpInvoke_003_0_Message") & NL & _
GetResource("L_HelpInvoke_004_0_Message") & NL & _
GetResource("L_HelpInvoke_005_0_Message") & NL & _
GetResource("L_HelpInvoke_006_0_Message") & NL & _
GetResource("L_HelpInvoke_007_0_Message") & NL & _
GetResource("L_HelpInvoke_008_0_Message") & NL & _
GetResource("X_HelpInvoke_009_0_Message") & NL & _
GetResource("L_HelpInvoke_010_0_Message") & NL & _
GetResource("L_HelpInvoke_011_0_Message") & NL & _
GetResource("X_HelpInvoke_012_0_Message") & NL & _
GetResource("L_HelpInvoke_013_0_Message") & NL & _
GetResource("X_HelpInvoke_014_0_Message") & NL & _
GetResource("L_HelpInvoke_015_0_Message") & NL & _
GetResource("L_HelpInvoke_016_0_Message") & NL & _
GetResource("X_HelpInvoke_017_0_Message") & NL & _
GetResource("L_HelpInvoke_018_0_Message") & NL & _
GetResource("L_HelpInvoke_019_0_Message") & NL & _
GetResource("L_HelpInvoke_019_1_Message") & NL & _
GetResource("X_HelpInvoke_020_0_Message") & NL & _
GetResource("L_HelpInvoke_021_0_Message") & NL & _
GetResource("L_HelpInvoke_022_0_Message") & NL & _
GetResource("L_HelpInvoke_022_1_Message") & NL & _
GetResource("X_HelpInvoke_023_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - IDENTIFY
Private Sub HelpIdentify(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("X_HelpIdentify_001_0_Message") & NL & _
GetResource("L_HelpIdentify_003_0_Message") & NL & _
GetResource("L_HelpIdentify_004_0_Message") & NL & _
GetResource("L_HelpIdentify_005_0_Message") & NL & _
GetResource("L_HelpIdentify_006_0_Message") & NL & _
GetResource("L_HelpIdentify_007_0_Message") & NL & _
GetResource("L_HelpIdentify_008_0_Message") & NL & _
GetResource("L_HelpIdentify_009_0_Message") & NL & _
GetResource("X_HelpIdentify_010_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message") & NL & _
GetResource("X_Help_SeeAlso_Remoting_Message")
End Sub
'''''''''''''''''''''
' HELP - HELPMSG
Private Sub HelpMsg(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("X_HelpHelpMessaage_001_0_Message") & NL & _
GetResource("X_HelpHelpMessaage_002_0_Message") & NL & _
GetResource("X_HelpHelpMessaage_003_0_Message") & NL & _
GetResource("X_HelpHelpMessaage_004_0_Message") & NL & _
GetResource("X_HelpHelpMessaage_006_0_Message")
End Sub
'''''''''''''''''''''
' HELP - AUTH
Private Sub HelpAuth(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpAuth_001_0_Message") & NL & _
GetResource("L_HelpAuth_002_0_Message") & NL & _
GetResource("L_HelpAuth_003_0_Message") & NL & _
GetResource("L_HelpAuth_004_0_Message") & NL & _
GetResource("L_HelpAuth_004_1_Message") & NL & _
GetResource("L_HelpAuth_005_0_Message") & NL & _
GetResource("L_HelpAuth_006_0_Message") & NL & _
GetResource("L_HelpAuth_007_0_Message") & NL & _
GetResource("L_HelpAuth_008_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpAuthAuth_001_0_Message") & NL & _
GetResource("L_HelpAuthAuth_002_0_Message") & NL & _
GetResource("L_HelpAuthAuth_003_0_Message")
If osVersion >= osVista Then
stream.WriteLine GetResource("L_HelpAuthAuth_004_0_Message")
Else
stream.WriteLine GetResource("L_HelpAuthAuth_004_1_Message")
End If
stream.WriteLine _
GetResource("L_HelpAuthAuth_005_0_Message") & NL & _
GetResource("X_HelpAuthAuth_006_0_Message") & NL & _
GetResource("X_HelpAuthAuth_007_0_Message") & NL & _
GetResource("X_HelpAuthAuth_008_0_Message") & NL & _
GetResource("X_HelpAuthAuth_009_0_Message") & NL & _
GetResource("X_HelpAuthAuth_010_0_Message") & NL & _
GetResource("X_HelpAuthAuth_010_1_Message")
If osVersion >= osVista Then
stream.WriteLine GetResource("X_HelpAuthAuth_010_2_Message")
End If
stream.WriteLine _
GetResource("L_HelpAuthAuth_011_0_Message") & NL & _
GetResource("L_HelpAuthAuth_012_0_Message") & NL & _
GetResource("L_HelpAuthAuth_013_0_Message") & NL & _
GetResource("L_HelpAuthAuth_013_1_Message") & NL & _
GetResource("L_HelpAuthAuth_013_2_Message") & NL & _
GetResource("L_HelpAuthAuth_014_0_Message") & NL & _
GetResource("L_HelpAuthAuth_015_0_Message") & NL & _
GetResource("L_HelpAuthAuth_016_0_Message") & NL & _
GetResource("L_HelpAuthAuth_017_0_Message") & NL & _
GetResource("L_HelpAuthAuth_018_0_Message") & NL & _
GetResource("L_HelpAuthAuth_019_0_Message") & NL & _
GetResource("L_HelpAuthAuth_020_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpAuthUsername_001_0_Message") & NL & _
GetResource("L_HelpAuthUsername_002_0_Message") & NL & _
GetResource("L_HelpAuthUsername_003_0_Message") & NL & _
GetResource("L_HelpAuthUsername_004_0_Message") & NL & _
GetResource("L_HelpAuthUsername_005_0_Message") & NL & _
GetResource("L_HelpAuthUsername_006_0_Message") & NL & _
GetResource("L_HelpAuthUsername_007_0_Message") & NL & _
GetResource("L_HelpAuthUsername_008_0_Message") & NL & _
GetResource("L_HelpAuthUsername_009_0_Message") & NL & _
GetResource("L_HelpAuthUsername_010_0_Message") & NL & _
GetResource("L_HelpAuthUsername_011_0_Message") & NL & _
GetResource("L_HelpAuthUsername_011_1_Message") & NL & _
GetResource("L_HelpAuthUsername_012_0_Message") & NL & _
GetResource("L_HelpAuthUsername_013_0_Message") & NL & _
GetResource("L_HelpAuthUsername_014_0_Message") & NL & _
GetResource("L_HelpAuthUsername_015_0_Message")
If osVersion >= osVista Then
stream.WriteLine GetResource("L_HelpAuthUsername_016_0_Message")
End If
stream.WriteLine _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpAuthPassword_001_0_Message") & NL & _
GetResource("L_HelpAuthPassword_002_0_Message") & NL & _
GetResource("L_HelpAuthPassword_003_0_Message") & NL & _
GetResource("L_HelpAuthPassword_004_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_001_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_002_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_003_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_004_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_005_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_006_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_007_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_008_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_009_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_010_0_Message") & NL & _
GetResource("L_HelpAuthCertificate_011_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - PROXY
Private Sub HelpProxy(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("X_HelpProxy_001_0_Message") & NL & _
GetResource("X_HelpProxy_002_0_Message") & NL & _
GetResource("X_HelpProxy_002_1_Message") & NL & _
GetResource("X_HelpProxy_003_0_Message") & NL & _
GetResource("X_HelpProxy_004_0_Message") & NL & _
GetResource("L_HelpProxy_005_0_Message") & NL & _
GetResource("L_HelpProxy_006_0_Message") & NL & _
GetResource("L_HelpProxy_007_0_Message") & NL & _
GetResource("X_HelpProxyAccess_001_0_Message") & NL & _
GetResource("L_HelpProxyAccess_002_0_Message") & NL & _
GetResource("L_HelpProxyAccess_003_0_Message") & NL & _
GetResource("L_HelpProxyAccess_004_0_Message") & NL & _
GetResource("L_HelpProxyAccess_005_0_Message") & NL & _
GetResource("X_HelpProxyAccess_006_0_Message") & NL & _
GetResource("X_HelpProxyAccess_007_0_Message") & NL & _
GetResource("X_HelpProxyAccess_008_0_Message") & NL & _
GetResource("X_HelpProxyAccess_009_0_Message") & NL & _
GetResource("L_HelpProxyAccess_010_0_Message") & NL & _
GetResource("L_HelpProxyAccess_011_0_Message") & NL & _
GetResource("L_HelpProxyAccess_012_0_Message") & NL & _
GetResource("L_HelpProxyAccess_013_0_Message") & NL & _
GetResource("L_HelpProxyAccess_014_0_Message") & NL & _
GetResource("L_HelpProxyAccess_015_0_Message") & NL & _
GetResource("L_HelpProxyAuth_001_0_Message") & NL & _
GetResource("L_HelpProxyAuth_002_0_Message") & NL & _
GetResource("L_HelpProxyAuth_003_0_Message") & NL & _
GetResource("L_HelpProxyAuth_004_0_Message") & NL & _
GetResource("L_HelpProxyAuth_005_0_Message") & NL & _
GetResource("X_HelpProxyAuth_007_0_Message") & NL & _
GetResource("X_HelpProxyAuth_008_0_Message") & NL & _
GetResource("X_HelpProxyAuth_009_0_Message") & NL & _
GetResource("L_HelpProxyAuth_010_0_Message") & NL & _
GetResource("L_HelpProxyUsername_001_0_Message") & NL & _
GetResource("L_HelpProxyUsername_002_0_Message") & NL & _
GetResource("L_HelpProxyUsername_003_0_Message") & NL & _
GetResource("L_HelpProxyUsername_005_0_Message") & NL & _
GetResource("L_HelpProxyUsername_006_0_Message") & NL & _
GetResource("L_HelpProxyUsername_007_0_Message") & NL & _
GetResource("L_HelpProxyUsername_008_0_Message") & NL & _
GetResource("L_HelpProxyUsername_009_0_Message") & NL & _
GetResource("L_HelpProxyPassword_001_0_Message") & NL & _
GetResource("L_HelpProxyPassword_002_0_Message") & NL & _
GetResource("L_HelpProxyPassword_003_0_Message") & NL & _
GetResource("L_HelpProxyPassword_004_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Auth_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - FILTERS
Private Sub HelpFilters(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpFilter_001_0_Message") & NL & _
GetResource("X_HelpFilter_002_0_Message") & NL & _
GetResource("X_HelpFilter_003_0_Message") & NL & _
GetResource("X_HelpFilter_004_0_Message") & NL & _
GetResource("L_HelpFilter_005_0_Message") & NL & _
GetResource("X_HelpFilter_006_0_Message") & NL & _
GetResource("L_HelpFilter_007_0_Message") & NL & _
GetResource("X_HelpFilter_008_0_Message") & NL & _
GetResource("L_HelpFilter_009_0_Message") & NL & _
GetResource("X_HelpFilter_010_0_Message") & NL & _
GetResource("L_HelpFilter_011_0_Message") & NL & _
GetResource("L_HelpFilter_012_0_Message") & NL & _
GetResource("X_HelpFilter_013_0_Message") & NL & _
GetResource("L_HelpFilter_014_0_Message") & NL & _
GetResource("X_HelpFilter_015_0_Message") & NL & _
GetResource("X_HelpFilter_016_0_Message") & NL & _
GetResource("X_HelpFilter_016_1_Message") & NL & _
GetResource("X_HelpFilter_017_0_Message") & NL & _
GetResource("L_HelpFilter_018_0_Message") & NL & _
GetResource("X_HelpFilter_019_0_Message") & NL & _
GetResource("L_HelpFilter_019_1_Message") & NL & _
GetResource("L_HelpFilter_019_2_Message") & NL & _
GetResource("X_HelpFilter_019_3_Message") & NL & _
GetResource("X_HelpFilter_019_4_Message") & NL & _
GetResource("X_HelpFilter_019_5_Message") & NL & _
GetResource("L_HelpFilter_020_0_Message") & NL & _
GetResource("X_HelpFilter_021_0_Message") & NL & _
GetResource("X_HelpFilter_022_0_Message") & NL & _
GetResource("L_HelpFilter_023_0_Message") & NL & _
GetResource("X_HelpFilter_024_0_Message") & NL & _
GetResource("L_HelpFilter_025_0_Message") & NL & _
GetResource("L_HelpFilter_026_0_Message") & NL & _
GetResource("X_HelpFilter_027_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Enumerate_Message")
End Sub
'''''''''''''''''''''
' HELP - SWITCHES
Private Sub HelpSwitches(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpSwitchTimeout_001_0_Message") & NL & _
GetResource("L_HelpSwitchTimeout_002_0_Message") & NL & _
GetResource("L_HelpSwitchTimeout_003_0_Message") & NL & _
GetResource("L_HelpSwitchTimeout_004_0_Message") & NL & _
GetResource("X_HelpSwitchTimeout_005_0_Message") & NL & _
GetResource("L_HelpSwitchTimeout_006_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("X_HelpSwitchSkipCACheck_001_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCACheck_002_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCACheck_003_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCACheck_004_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCACheck_005_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("X_HelpSwitchSkipCNCheck_001_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCNCheck_002_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCNCheck_003_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCNCheck_004_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCNCheck_005_0_Message") & NL & _
GetResource("L_HelpSwitchSkipCNCheck_006_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("X_HelpSwitchSkipRevCheck_001_0_Message") & NL & _
GetResource("X_HelpSwitchSkipRevCheck_002_0_Message") & NL & _
GetResource("L_HelpSwitchSkipRevCheck_003_0_Message") & NL & _
GetResource("L_HelpSwitchSkipRevCheck_004_0_Message") & NL & _
GetResource("L_HelpSwitchSkipRevCheck_005_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("X_HelpSwitchDefaultCreds_001_0_Message") & NL & _
GetResource("X_HelpSwitchDefaultCreds_002_0_Message") & NL & _
GetResource("L_HelpSwitchDefaultCreds_003_0_Message") & NL & _
GetResource("L_HelpSwitchDefaultCreds_004_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpSwitchDialect_001_0_Message") & NL & _
GetResource("L_HelpSwitchDialect_002_0_Message") & NL & _
GetResource("L_HelpSwitchDialect_003_0_Message") & NL & _
GetResource("L_HelpSwitchDialect_004_0_Message") & NL & _
GetResource("X_HelpSwitchDialect_005_0_Message") & NL & _
GetResource("L_HelpSwitchDialect_006_0_Message") & NL & _
GetResource("X_HelpSwitchDialect_007_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpSwitchFragment_001_0_Message") & NL & _
GetResource("L_HelpSwitchFragment_002_0_Message") & NL & _
GetResource("L_HelpSwitchFragment_003_0_Message") & NL & _
GetResource("L_HelpSwitchFragment_004_0_Message") & NL & _
GetResource("L_HelpSwitchFragment_005_0_Message") & NL & _
GetResource("X_HelpSwitchFragment_006_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpSwitchOption_001_0_Message") & NL & _
GetResource("L_HelpSwitchOption_002_0_Message") & NL & _
GetResource("L_HelpSwitchOption_003_0_Message") & NL & _
GetResource("L_HelpSwitchOption_004_0_Message") & NL & _
GetResource("L_HelpSwitchOption_005_0_Message") & NL & _
GetResource("L_HelpSwitchOption_006_0_Message") & NL & _
GetResource("X_HelpSwitchOption_007_0_Message") & NL & _
GetResource("X_HelpSwitchOption_008_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("X_HelpSwitchSPNPort_001_0_Message") & NL & _
GetResource("L_HelpSwitchSPNPort_002_0_Message") & NL & _
GetResource("L_HelpSwitchSPNPort_003_0_Message") & NL & _
GetResource("L_HelpSwitchSPNPort_004_0_Message") & NL & _
GetResource("L_HelpSwitchSPNPort_005_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpSwitchEncoding_001_0_Message") & NL & _
GetResource("L_HelpSwitchEncoding_002_0_Message") & NL & _
GetResource("L_HelpSwitchEncoding_003_0_Message") & NL & _
GetResource("L_HelpSwitchEncoding_004_0_Message") & NL & _
GetResource("L_HelpSwitchEncoding_005_0_Message") & NL & _
GetResource("L_HelpSwitchEncoding_006_0_Message") & NL & _
GetResource("X_HelpSwitchEncoding_007_0_Message") & NL & _
GetResource("X_HelpSwitchEncoding_008_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpSwitchFormat_001_0_Message") & NL & _
GetResource("L_HelpSwitchFormat_002_0_Message") & NL & _
GetResource("L_HelpSwitchFormat_003_0_Message") & NL & _
GetResource("L_HelpSwitchFormat_004_0_Message") & NL & _
GetResource("L_HelpSwitchFormat_005_0_Message") & NL & _
GetResource("X_HelpSwitchFormat_006_0_Message") & NL & _
GetResource("X_HelpSwitchFormat_007_0_Message") & NL & _
GetResource("X_HelpSwitchFormat_008_0_Message")
End Sub
'''''''''''''''''''''
' HELP - INPUT
Private Sub HelpInput(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpInput_001_0_Message") & NL & _
GetResource("L_HelpInput_002_0_Message") & NL & _
GetResource("L_HelpInput_003_0_Message") & NL & _
GetResource("L_HelpInput_004_0_Message") & NL & _
GetResource("L_HelpInput_005_0_Message") & NL & _
GetResource("L_HelpInput_006_0_Message") & NL & _
GetResource("L_HelpInput_007_0_Message") & NL & _
GetResource("L_HelpInput_008_0_Message") & NL & _
GetResource("L_HelpInput_009_0_Message") & NL & _
GetResource("L_HelpInput_010_0_Message") & NL & _
GetResource("L_HelpInput_011_0_Message") & NL & _
GetResource("L_HelpInput_012_0_Message") & NL & _
GetResource("L_HelpInput_013_0_Message") & NL & _
GetResource("L_HelpInput_014_0_Message") & NL & _
GetResource("L_HelpInput_015_0_Message") & NL & _
GetResource("L_HelpInput_016_0_Message") & NL & _
GetResource("L_HelpInput_017_0_Message") & NL & _
GetResource("L_HelpInput_018_0_Message") & NL & _
GetResource("L_HelpInput_019_0_Message") & NL & _
GetResource("L_HelpInput_020_0_Message") & NL & _
GetResource("L_HelpInput_021_0_Message") & NL & _
GetResource("L_HelpInput_022_0_Message") & NL & _
GetResource("X_HelpInput_023_0_Message") & NL & _
GetResource("X_HelpInput_024_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Set_Message") & NL & _
GetResource("X_Help_SeeAlso_Create_Message") & NL & _
GetResource("X_Help_SeeAlso_Invoke_Message")
End Sub
'''''''''''''''''''''
' HELP - REMOTE
Private Sub HelpRemote(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpRemote_001_0_Message") & NL & _
GetResource("L_HelpRemote_002_0_Message") & NL & _
GetResource("L_HelpRemote_003_0_Message") & NL & _
GetResource("L_HelpRemote_004_0_Message") & NL & _
GetResource("L_HelpRemote_005_0_Message") & NL & _
GetResource("L_HelpRemote_006_0_Message") & NL & _
GetResource("L_HelpRemote_007_0_Message") & NL & _
GetResource("L_HelpRemote_008_0_Message") & NL & _
GetResource("L_HelpRemote_009_0_Message") & NL & _
GetResource("L_HelpRemote_010_0_Message") & NL & _
GetResource("L_HelpRemote_011_0_Message") & NL & _
GetResource("L_HelpRemote_012_0_Message") & NL & _
GetResource("L_HelpRemote_012_1_Message") & NL & _
GetResource("L_HelpRemote_012_2_Message") & NL & _
GetResource("L_HelpRemote_012_3_Message") & NL & _
GetResource("L_HelpRemote_012_4_Message") & NL & _
GetResource("L_HelpRemote_012_5_Message") & NL & _
GetResource("L_HelpRemote_012_6_Message") & NL & _
GetResource("L_HelpRemote_013_0_Message") & NL & _
GetResource("L_HelpRemote_014_0_Message") & NL & _
GetResource("L_HelpRemote_015_0_Message") & NL & _
GetResource("L_HelpRemote_016_0_Message") & NL & _
GetResource("L_HelpRemote_017_0_Message") & NL & _
GetResource("L_HelpRemote_018_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpRemoteExample_001_0_Message") & NL & _
GetResource("X_HelpRemoteExample_002_0_Message") & NL & _
GetResource("L_HelpRemoteExample_003_0_Message") & NL & _
GetResource("L_HelpRemoteExample_004_0_Message") & NL & _
GetResource("X_HelpRemoteExample_005_0_Message") & NL & _
GetResource("L_HelpRemoteExample_006_0_Message") & NL & _
GetResource("L_HelpRemoteExample_007_0_Message") & NL & _
GetResource("X_HelpRemoteExample_008_0_Message") & NL & _
GetResource("L_HelpRemoteExample_009_0_Message") & NL & _
GetResource("L_HelpRemoteExample_010_0_Message") & NL & _
GetResource("X_HelpRemoteExample_011_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpRemoteUnencrypted_001_0_Message") & NL & _
GetResource("L_HelpRemoteUnencrypted_002_0_Message") & NL & _
GetResource("L_HelpRemoteUnencrypted_003_0_Message") & NL & _
GetResource("L_HelpRemoteUnencrypted_004_0_Message") & NL & _
GetResource("L_HelpRemoteUnencrypted_005_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpRemoteUseSsl_001_0_Message") & NL & _
GetResource("L_HelpRemoteUseSsl_002_0_Message") & NL & _
GetResource("L_HelpRemoteUseSsl_003_0_Message") & NL & _
GetResource("L_HelpRemoteUseSsl_004_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpRemoteConfig_001_0_Message") & NL & _
GetResource("X_Help_SeeAlso_Config_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - CONFIG
Private Sub HelpConfig(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpConfig_001_0_Message") & NL & _
GetResource("L_HelpConfig_002_0_Message") & NL & _
GetResource("L_HelpConfig_003_0_Message") & NL & _
GetResource("L_HelpConfig_004_0_Message") & NL & _
GetResource("L_HelpConfig_005_0_Message") & NL & _
GetResource("L_HelpConfig_006_0_Message") & NL & _
GetResource("L_HelpConfig_007_0_Message") & NL & _
GetResource("L_HelpConfig_008_0_Message") & NL & _
GetResource("L_HelpConfig_009_0_Message") & NL & _
GetResource("X_HelpConfig_010_0_Message") & NL & _
GetResource("X_HelpConfig_011_0_Message") & NL & _
GetResource("X_HelpConfig_012_0_Message") & NL & _
GetResource("X_HelpConfig_012_1_Message") & NL & _
GetResource("X_HelpConfig_012_2_Message") & NL & _
GetResource("X_HelpConfig_012_3_Message") & NL & _
GetResource("X_HelpConfig_012_4_Message") & NL & _
GetResource("L_HelpConfig_013_0_Message") & NL & _
GetResource("L_HelpConfig_014_0_Message") & NL & _
GetResource("L_HelpConfig_015_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpConfigAddress_001_0_Message") & NL & _
GetResource("L_HelpConfigAddress_002_0_Message") & NL & _
GetResource("L_HelpConfigAddress_003_0_Message") & NL & _
GetResource("L_HelpConfigAddress_004_0_Message") & NL & _
GetResource("L_HelpConfigAddress_005_0_Message") & NL & _
GetResource("L_HelpConfigAddress_006_0_Message") & NL & _
GetResource("L_HelpConfigAddress_007_0_Message") & NL & _
GetResource("L_HelpConfigAddress_008_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpConfigTransport_001_0_Message") & NL & _
GetResource("L_HelpConfigTransport_002_0_Message") & NL & _
GetResource("L_HelpConfigTransport_003_0_Message") & NL & _
GetResource("L_HelpConfigTransport_004_0_Message") & NL & _
GetResource("L_HelpConfigTransport_005_0_Message") & NL & _
GetResource("L_HelpConfigTransport_006_0_Message") & NL & _
GetResource("L_HelpConfigTransport_007_0_Message") & NL & _
GetResource("L_HelpConfigTransport_008_0_Message") & NL & _
GetResource("L_HelpConfigTransport_009_0_Message") & NL & _
GetResource("L_HelpConfigTransport_010_0_Message") & NL & _
GetResource("L_HelpConfigTransport_011_0_Message") & NL & _
GetResource("L_HelpConfigTransport_012_0_Message") & NL & _
GetResource("L_HelpConfigTransport_013_0_Message") & NL & _
GetResource("L_HelpConfigTransport_014_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpConfigExamples_001_0_Message") & NL & _
GetResource("X_HelpConfigExamples_002_0_Message") & NL & _
GetResource("L_HelpConfigExamples_003_0_Message") & NL & _
GetResource("L_HelpConfigExamples_004_0_Message") & NL & _
GetResource("X_HelpConfigExamples_005_0_Message") & NL & _
GetResource("L_HelpConfigExamples_006_0_Message") & NL & _
GetResource("L_HelpConfigExamples_007_0_Message") & NL & _
GetResource("X_HelpConfigExamples_008_0_Message") & NL & _
GetResource("L_HelpConfigExamples_009_0_Message") & NL & _
GetResource("L_HelpConfigExamples_010_0_Message") & NL & _
GetResource("X_HelpConfigExamples_011_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_CertMapping_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - CertMapping
Private Sub HelpCertMapping(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpCertMapping_001_0_Message") & NL & _
GetResource("L_HelpCertMapping_002_0_Message") & NL & _
GetResource("L_HelpCertMapping_003_0_Message") & NL & _
GetResource("L_HelpCertMapping_003_1_Message") & NL & _
GetResource("L_HelpCertMapping_004_0_Message") & NL & _
GetResource("L_HelpCertMapping_005_0_Message") & NL & _
GetResource("L_HelpCertMapping_006_0_Message") & NL & _
GetResource("L_HelpCertMapping_007_0_Message") & NL & _
GetResource("L_HelpCertMapping_008_0_Message") & NL & _
GetResource("L_HelpCertMapping_009_0_Message") & NL & _
GetResource("L_HelpCertMapping_009_1_Message") & NL & _
GetResource("L_HelpCertMapping_009_2_Message") & NL & _
GetResource("L_HelpCertMapping_009_3_Message") & NL & _
GetResource("L_HelpCertMapping_010_0_Message") & NL & _
GetResource("L_HelpCertMapping_011_0_Message") & NL & _
GetResource("L_HelpCertMapping_012_0_Message") & NL & _
GetResource("L_HelpCertMapping_012_1_Message") & NL & _
GetResource("L_HelpCertMapping_012_2_Message") & NL & _
GetResource("L_HelpCertMapping_013_0_Message") & NL & _
GetResource("L_HelpCertMapping_014_0_Message") & NL & _
GetResource("L_HelpCertMapping_014_1_Message") & NL & _
GetResource("L_HelpCertMapping_014_2_Message") & NL & _
GetResource("L_HelpCertMapping_014_3_Message") & NL & _
GetResource("L_HelpCertMapping_014_4_Message") & NL & _
GetResource("L_HelpCertMapping_015_0_Message") & NL & _
GetResource("L_HelpCertMapping_016_0_Message") & NL & _
GetResource("L_HelpCertMapping_017_0_Message") & NL & _
GetResource("L_HelpCertMapping_018_0_Message") & NL & _
GetResource("L_HelpCertMapping_019_0_Message") & NL & _
GetResource("L_HelpCertMapping_020_0_Message") & NL & _
GetResource("L_HelpCertMapping_021_0_Message") & NL & _
GetResource("L_HelpCertMapping_022_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpCertMappingExamples_001_0_Message") & NL & _
GetResource("X_HelpCertMappingExamples_002_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpCertMappingExamples_003_0_Message") & NL & _
GetResource("X_HelpCertMappingExamples_004_0_Message") & NL & _
GetResource("L_HelpCertMappingExamples_005_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_configSDDL_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - CUSTOMREMOTESHELL
Private Sub HelpCustomRemoteShell(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpCustomRemoteShell_001_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_001_1_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_002_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_003_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_004_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_005_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_006_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_007_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_008_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_009_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_010_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_011_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_011_1_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_012_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_012_1_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_012_2_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_013_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_013_1_Message") & NL & _
GetResource("L_HelpCustomRemoteShell_014_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShellExamples_001_0_Message") & NL & _
GetResource("X_HelpCustomRemoteShellExamples_002_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShellExamples_003_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShellExamples_004_0_Message") & NL & _
GetResource("X_HelpCustomRemoteShellExamples_005_0_Message") & NL & _
GetResource("L_HelpCustomRemoteShellExamples_006_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message")
End Sub
'''''''''''''''''''''
' HELP - QUICKCONFIG
Private Sub HelpQuickConfig(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("X_HelpQuickConfig_001_0_Message") & NL & _
GetResource("X_HelpQuickConfig_002_0_Message") & NL & _
GetResource("L_HelpQuickConfig_003_0_Message") & NL & _
GetResource("L_HelpQuickConfig_004_0_Message") & NL & _
GetResource("L_HelpQuickConfig_005_0_Message") & NL & _
GetResource("L_HelpQuickConfig_006_0_Message") & NL & _
GetResource("L_HelpQuickConfig_007_0_Message") & NL & _
GetResource("L_HelpQuickConfig_008_0_Message") & NL & _
GetResource("X_HelpQuickConfig_009_0_Message") & NL & _
GetResource("X_HelpQuickConfig_010_0_Message") & NL & _
GetResource("X_HelpQuickConfig_010_1_Message") & NL & _
GetResource("L_HelpQuickConfig_011_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("X_HelpQuickConfig_012_0_Message") & NL & _
GetResource("X_HelpQuickConfig_013_0_Message") & NL & _
GetResource("L_HelpQuickConfig_014_0_Message") & NL & _
GetResource("L_HelpQuickConfig_015_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("X_HelpQuickConfig_016_0_Message") & NL & _
GetResource("X_HelpQuickConfig_017_0_Message") & NL & _
GetResource("L_HelpQuickConfig_018_0_Message") & NL & _
GetResource("L_HelpQuickConfig_019_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Config_Message")
End Sub
'''''''''''''''''''''
' HELP - URIS
Private Sub HelpUris(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpUris_001_0_Message") & NL & _
GetResource("L_HelpUris_002_0_Message") & NL & _
GetResource("L_HelpUris_003_0_Message") & NL & _
GetResource("L_HelpUris_004_0_Message") & NL & _
GetResource("X_HelpUris_005_0_Message") & NL & _
GetResource("L_HelpUris_006_0_Message") & NL & _
GetResource("L_HelpUris_007_0_Message") & NL & _
GetResource("X_HelpUris_008_0_Message") & NL & _
GetResource("X_HelpUris_009_0_Message") & NL & _
GetResource("X_HelpUris_010_0_Message") & NL & _
GetResource("L_HelpUris_011_0_Message") & NL & _
GetResource("L_HelpUris_012_0_Message") & NL & _
GetResource("X_HelpUris_013_0_Message") & NL & _
GetResource("X_HelpUris_013_1_Message") & NL & _
GetResource("X_HelpUris_014_0_Message") & NL & _
GetResource("L_HelpUris_015_0_Message") & NL & _
GetResource("L_HelpUris_015_1_Message") & NL & _
GetResource("L_HelpUris_015_2_Message") & NL & _
GetResource("L_HelpUris_015_3_Message") & NL & _
GetResource("X_HelpUris_015_4_Message") & NL & _
GetResource("L_HelpUris_015_5_Message") & NL & _
GetResource("L_HelpUris_015_6_Message") & NL & _
GetResource("L_HelpUris_015_7_Message") & NL & _
GetResource("X_HelpUris_015_8_Message") & NL & _
GetResource("L_HelpUris_015_9_Message") & NL & _
GetResource("L_HelpUris_016_0_Message") & NL & _
GetResource("L_HelpUris_017_0_Message") & NL & _
GetResource("L_HelpUris_018_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Uris_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message") & NL & _
GetResource("X_Help_SeeAlso_Input_Message") & NL & _
GetResource("X_Help_SeeAlso_Switches_Message")
End Sub
'''''''''''''''''''''
' HELP - ALIAS
Private Sub HelpAlias(stream)
dim NL
NL = vbNewLine
stream.WriteLine _
GetResource("L_HelpAlias_001_0_Message") & NL & _
GetResource("L_HelpAlias_002_0_Message") & NL & _
GetResource("L_HelpAlias_003_0_Message") & NL & _
GetResource("X_HelpAlias_004_0_Message") & NL & _
GetResource("X_HelpAlias_005_0_Message") & NL & _
GetResource("X_HelpAlias_006_0_Message") & NL & _
GetResource("X_HelpAlias_007_0_Message") & NL & _
GetResource("X_HelpAlias_008_0_Message") & NL & _
GetResource("X_HelpAlias_009_0_Message") & NL & _
GetResource("L_HelpAlias_010_0_Message") & NL & _
GetResource("L_HelpAlias_011_0_Message") & NL & _
GetResource("x_HelpAlias_012_0_Message") & NL & _
GetResource("L_HelpAlias_013_0_Message") & NL & _
GetResource("L_HelpAlias_014_0_Message") & NL & _
GetResource("X_HelpAlias_015_0_Message") & NL & _
GetResource("L_Help_Blank_0_Message") & NL & _
GetResource("L_Help_SeeAlso_Title_Message") & NL & _
GetResource("X_Help_SeeAlso_Aliases_Message")
End Sub