dolphindeploy 0.0.2-universal-dotnet
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +9 -0
- data/TODO +18 -0
- data/external/DolphinDeploy.IIS.IIS6.dll +0 -0
- data/external/Microsoft.Web.Administration.dll +0 -0
- data/external/TinySharpZip.dll +0 -0
- data/external/adsutil.vbs +2938 -0
- data/external/xunit/HTML.xslt +117 -0
- data/external/xunit/NUnitXml.xslt +121 -0
- data/external/xunit/xunit.console.exe +0 -0
- data/external/xunit/xunit.console.exe.config +21 -0
- data/external/xunit/xunit.console.x86.exe +0 -0
- data/external/xunit/xunit.console.x86.exe.config +21 -0
- data/external/xunit/xunit.dll +0 -0
- data/external/xunit/xunit.dll.tdnet +5 -0
- data/external/xunit/xunit.extensions.dll +0 -0
- data/external/xunit/xunit.extensions.xml +706 -0
- data/external/xunit/xunit.gui.exe +0 -0
- data/external/xunit/xunit.gui.x86.exe +0 -0
- data/external/xunit/xunit.installer.exe +0 -0
- data/external/xunit/xunit.runner.msbuild.dll +0 -0
- data/external/xunit/xunit.runner.tdnet.dll +0 -0
- data/external/xunit/xunit.runner.utility.dll +0 -0
- data/external/xunit/xunit.runner.utility.xml +1048 -0
- data/external/xunit/xunit.xml +2306 -0
- data/lib/IIS/IIS.rb +23 -0
- data/lib/IIS/IIS6.rb +165 -0
- data/lib/IIS/IIS7.rb +152 -0
- data/lib/IIS/IISVersion.rb +7 -0
- data/lib/configured_as/mvc_deployment.rb +174 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.5.1.ReSharper.user +45 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/AppPoolControllerTests.cs +39 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/DolphinDeploy.IIS.IIS6.Tests.csproj +69 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/DolphinDeploy.IIS.IIS6.Tests.csproj.user +6 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/Helper.cs +18 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/Properties/AssemblyInfo.cs +36 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/WebsiteControllerTests.cs +56 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.Tests.dll +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.Tests.pdb +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/test_site/index.htm +9 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/xunit.dll +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/xunit.xml +2306 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.csproj.FileListAbsolute.txt +12 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.dll +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.pdb +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/ResolveAssemblyReference.cache +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/test_site/index.htm +9 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.sln +26 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.suo +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/AppPoolController.cs +41 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.csproj +56 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/IIS6Manager.cs +77 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/Properties/AssemblyInfo.cs +36 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/WebsiteController.cs +101 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/bin/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/bin/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.csproj.FileListAbsolute.txt +7 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/BuildScriptCache/1/78fc7364.dat +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/ModuleIds.xml +4 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/NamedArguments/5/4b9722ad.dat +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/PdbInfo/61d4d5326252d9cd7476a391dfbbb2a47481ffa6 +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/ProjectModel/ProjectModel.dat +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/SymbolCache.bin +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/TodoCache/1/78fc7364.dat +0 -0
- data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/WordIndex/1/72ab4678.dat +0 -0
- data/lib/deploycommandcreator.rb +34 -0
- data/lib/deploymentconfig.rb +15 -0
- data/lib/directory_cleanup.rb +16 -0
- data/lib/dolphindeploy.rb +12 -0
- data/lib/dolphindeploy_rake.rb +36 -0
- data/lib/file_manager.rb +30 -0
- data/lib/unzip.rb +11 -0
- data/spec/IIS/IIS6_spec.rb +24 -0
- data/spec/IIS/IIS_spec.rb +18 -0
- data/spec/configured_as/mvc_deployment_spec.rb +108 -0
- data/spec/deploycommandcreator_spec.rb +169 -0
- data/spec/deploymentconfig_spec.rb +202 -0
- data/spec/dolphindeploy_spec.rb +13 -0
- data/spec/file_manager_spec.rb +22 -0
- data/spec/support/spec_helper.rb +17 -0
- metadata +222 -0
data/README.markdown
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# Welcome to the Dolphin Deploy project.
|
2
|
+
|
3
|
+
Dolphin Deploy provides an approach for deploying .NET based systems.
|
4
|
+
|
5
|
+
## Example
|
6
|
+
rake dolphin:deploy[env,server] # Dolphin Deployment
|
7
|
+
rake dolphin:deploy[local,localhost]
|
8
|
+
|
9
|
+
***This is still a work in progress***... **Please** do not use against production systems. The time will come, just not yet.
|
data/TODO
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
- Introduce extension points
|
2
|
+
|
3
|
+
- Support
|
4
|
+
Before do
|
5
|
+
exec ''
|
6
|
+
end
|
7
|
+
|
8
|
+
After do
|
9
|
+
exec ''
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
- Setup ISAPI filters on IIS6
|
15
|
+
- Turn off ScriptMap on IIS6 for static folder
|
16
|
+
- Ability to create virtual directories
|
17
|
+
- Logging
|
18
|
+
- Rake task to include in project
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,2938 @@
|
|
1
|
+
''''''''''''''''''''''''''''''''''''
|
2
|
+
'
|
3
|
+
' ADSUTIL.VBS
|
4
|
+
'
|
5
|
+
' Date: 7/24/97
|
6
|
+
' Revision History:
|
7
|
+
' Date Comment
|
8
|
+
' 7/24/97 Initial version started
|
9
|
+
' 5/8/98 Bug fixes and ENUM_ALL
|
10
|
+
' 12/1/98 Fixed display error on list data.
|
11
|
+
' 7/27/99 AppCreate2 fix
|
12
|
+
' 8/5/99 Dont display encrypted data
|
13
|
+
''''''''''''''''''''''''''''''''''''
|
14
|
+
Option Explicit
|
15
|
+
On Error Resume Next
|
16
|
+
|
17
|
+
Const StrRes0 = "COPY is not yet supported. It will be soon."
|
18
|
+
Const StrRes1 = "Command not recognized: "
|
19
|
+
Const StrRes2 = "For help, just type ""Cscript.exe adsutil.vbs""."
|
20
|
+
Const StrRes3 = "Usage:"
|
21
|
+
Const StrRes4 = " ADSUTIL.VBS <cmd> [<path> [<value>]]"
|
22
|
+
Const StrRes6 = "Description:"
|
23
|
+
Const StrRes7 = "IIS administration utility that enables the configuration of metabase properties."
|
24
|
+
Const StrRes9 = "Supported Commands:"
|
25
|
+
Const StrRes12 = "Samples:"
|
26
|
+
Const StrRes18 = "For Extended Help type:"
|
27
|
+
Const StrRes19 = " adsutil.vbs HELP"
|
28
|
+
Const StrRes21 = " ADSUTIL.VBS CMD [param param]"
|
29
|
+
Const StrRes23 = "Description:"
|
30
|
+
Const StrRes24 = "IIS administration utility that enables the manipulation with ADSI parameters"
|
31
|
+
Const StrRes26 = "Standard Commands:"
|
32
|
+
Const StrRes27 = " adsutil.vbs GET path - display chosen parameter"
|
33
|
+
Const StrRes28 = " adsutil.vbs SET path value ... - assign the new value"
|
34
|
+
Const StrRes29 = " adsutil.vbs ENUM path [""/P"" ] - enumerate all parameters for given path"
|
35
|
+
Const StrRes30 = " adsutil.vbs DELETE path - delete given path or parameter"
|
36
|
+
Const StrRes31 = " adsutil.vbs CREATE path [KeyType] - create given path and assigns it the given KeyType"
|
37
|
+
Const StrRes32 = " adsutil.vbs APPCREATEINPROC w3svc/1/root - Create an in-proc application"
|
38
|
+
Const StrRes33 = " adsutil.vbs APPCREATEOUTPROC w3svc/1/root - Create an out-proc application"
|
39
|
+
Const StrRes34 = " adsutil.vbs APPCREATEPOOLPROC w3svc/1/root- Create a pooled-proc application"
|
40
|
+
Const StrRes35 = " adsutil.vbs APPDELETE w3svc/1/root - Delete the application if there is one"
|
41
|
+
Const StrRes36 = " adsutil.vbs APPUNLOAD w3svc/1/root - Unload an application from w3svc runtime lookup table."
|
42
|
+
Const StrRes37 = " adsutil.vbs APPDISABLE w3svc/1/root - Disable an application - appropriate for porting to another machine."
|
43
|
+
Const StrRes38 = " adsutil.vbs APPENABLE w3svc/1/root - Enable an application - appropriate for importing from another machine."
|
44
|
+
Const StrRes39 = " adsutil.vbs APPGETSTATUS w3svc/1/root - Get status of the application"
|
45
|
+
Const StrRes40 = "New ADSI Options:"
|
46
|
+
Const StrRes41 = " /P - Valid for ENUM only. Enumerates the paths only (no data)"
|
47
|
+
Const StrRes42 = " KeyType - Valide for CREATE only. Assigns the valid KeyType to the path"
|
48
|
+
Const StrRes43 = "Extended ADSUTIL Commands:"
|
49
|
+
Const StrRes44 = " adsutil.vbs FIND path - find the paths where a given parameter is set"
|
50
|
+
Const StrRes45 = " adsutil.vbs CREATE_VDIR path - create given path as a Virtual Directory"
|
51
|
+
Const StrRes46 = " adsutil.vbs CREATE_VSERV path - create given path as a Virtual Server"
|
52
|
+
Const StrRes47 = " adsutil.vbs START_SERVER path - starts the given web site"
|
53
|
+
Const StrRes48 = " adsutil.vbs STOP_SERVER path - stops the given web site"
|
54
|
+
Const StrRes49 = " adsutil.vbs PAUSE_SERVER path - pauses the given web site"
|
55
|
+
Const StrRes50 = " adsutil.vbs CONTINUE_SERVER path - continues the given web site"
|
56
|
+
Const StrRes52 = " adsutil.vbs GET W3SVC/1/ServerBindings"
|
57
|
+
Const StrRes53 = " adsutil.vbs SET W3SVC/1/ServerBindings "":81:"""
|
58
|
+
Const StrRes54 = " adsutil.vbs CREATE W3SVC/1/Root/MyVdir ""IIsWebVirtualDir"""
|
59
|
+
Const StrRes55 = " adsutil.vbs START_SERVER W3SVC/1"
|
60
|
+
Const StrRes56 = " adsutil.vbs ENUM /P W3SVC"
|
61
|
+
Const StrRes57 = "Extended ADSUTIL Commands:"
|
62
|
+
Const StrRes58 = " adsutil.vbs FIND path - find the paths where a given parameter is set"
|
63
|
+
Const StrRes59 = " adsutil.vbs CREATE_VDIR path - create given path as a Virtual Directory"
|
64
|
+
Const StrRes60 = " adsutil.vbs CREATE_VSERV path - create given path as a Virtual Server"
|
65
|
+
Const StrRes61 = " adsutil.vbs START_SERVER path - starts the given web site"
|
66
|
+
Const StrRes62 = " adsutil.vbs STOP_SERVER path - stops the given web site"
|
67
|
+
Const StrRes63 = " adsutil.vbs PAUSE_SERVER path - pauses the given web site"
|
68
|
+
Const StrRes64 = " adsutil.vbs CONTINUE_SERVER path - continues the given web site"
|
69
|
+
Const StrRes65 = "Samples:"
|
70
|
+
Const StrRes66 = " adsutil.vbs GET W3SVC/1/ServerBindings"
|
71
|
+
Const StrRes67 = " adsutil.vbs SET W3SVC/1/ServerBindings "":81:"""
|
72
|
+
Const StrRes68 = " adsutil.vbs CREATE W3SVC/1/Root/MyVdir ""IIsWebVirtualDir"""
|
73
|
+
Const StrRes69 = " adsutil.vbs START_SERVER W3SVC/1"
|
74
|
+
Const StrRes70 = " adsutil.vbs ENUM /P W3SVC"
|
75
|
+
Const StrRes71 = "This script does not work with WScript."
|
76
|
+
Const StrRes72 = "To run this script using CScript, type: ""CScript.exe "
|
77
|
+
Const StrRes73 = "Error Trying to write the registry settings!"
|
78
|
+
Const StrRes74 = "Successfully registered CScript"
|
79
|
+
Const StrRes75 = "To run this script type: ""CScript.Exe adsutil.vbs <cmd> <params>"""
|
80
|
+
Const StrRes76 = "Error: Wrong number of Args for the SET command"
|
81
|
+
Const StrRes77 = "Error Trying To Get the Object: "
|
82
|
+
Const StrRes78 = "Error Trying To GET the Schema of the property: "
|
83
|
+
Const StrRes79 = "Error: Unknown data type in schema: "
|
84
|
+
Const StrRes80 = "Error Trying To SET the Property: "
|
85
|
+
Const StrRes81 = "Error: Wrong number of Args for the GET command"
|
86
|
+
Const StrRes82 = "Error Trying To GET the Object (GetObject Failed): "
|
87
|
+
Const StrRes83 = "Error Trying To GET the Schema of the property: "
|
88
|
+
Const StrRes84 = "Error Trying To GET the property: (Get Method Failed) "
|
89
|
+
Const StrRes85 = " (This property is probably not allowed at this node)"
|
90
|
+
Const StrRes86 = "The parameter """
|
91
|
+
Const StrRes87 = " is not set at this node."
|
92
|
+
Const StrRes90 = " Items)"
|
93
|
+
Const StrRes91 = "Error Trying To GET the Property: "
|
94
|
+
Const StrRes92 = "Error: Invalid arguments for the ENUM command"
|
95
|
+
Const StrRes93 = "Error: Wrong number of Args for the ENUM command"
|
96
|
+
Const StrRes94 = "Error Trying To ENUM the Object (GetObject Failed): "
|
97
|
+
Const StrRes95 = "Error Trying To GET the Schema of the class: "
|
98
|
+
Const StrRes96 = "Error trying to get the list of properties: "
|
99
|
+
Const StrRes97 = "Warning: The optionalproperties list is of an invalid type"
|
100
|
+
Const StrRes98 = "Warning: The OptionalProperties list for this node is empty."
|
101
|
+
Const StrRes99 = "Error trying to enumerate the Optional properties (Couldn't Get Property Information): "
|
102
|
+
Const StrRes100 = "Last Property Name: "
|
103
|
+
Const StrRes102 = " Items)"
|
104
|
+
Const StrRes103 = "DataType: "
|
105
|
+
Const StrRes104 = " Not Yet Supported on property: "
|
106
|
+
Const StrRes105 = "Error trying to enumerate the Optional properties (Error trying to get property value): "
|
107
|
+
Const StrRes108 = "Continuing..."
|
108
|
+
Const StrRes109 = "Error trying to enumerate the properties lists:"
|
109
|
+
Const StrRes111 = "Error trying to enumerate the child nodes"
|
110
|
+
Const StrRes112 = "Error: Wrong number of Args for the CREATE command"
|
111
|
+
Const StrRes120 = "Error accessing the object: "
|
112
|
+
Const StrRes121 = "Error creating the object: "
|
113
|
+
Const StrRes123 = "WARNING: The parent path ("
|
114
|
+
Const StrRes124 = ") was not already created."
|
115
|
+
Const StrRes125 = " This means that some of the intermediate objects will not have an accurate"
|
116
|
+
Const StrRes126 = " Object Type. You should fix this by setting the KeyType on the intermediate"
|
117
|
+
Const StrRes127 = " objects."
|
118
|
+
Const StrRes128 = "WARNING: The Object Type of this object was not specified or was specified as"
|
119
|
+
Const StrRes129 = " IIsObject. This means that you will not be able to set or get properties"
|
120
|
+
Const StrRes130 = " on the object until the KeyType property is set."
|
121
|
+
Const StrRes131 = "created """
|
122
|
+
Const StrRes132 = "Error: Wrong number of Args for the DELETE command"
|
123
|
+
Const StrRes133 = "Error deleting the object: "
|
124
|
+
Const StrRes134 = "deleted property """
|
125
|
+
Const StrRes135 = "Error deleting the object: "
|
126
|
+
Const StrRes136 = "deleted path """
|
127
|
+
Const StrRes137 = "ENUM_ALL Command not yet supported"
|
128
|
+
Const StrRes138 = "Error: Wrong number of Args for the Copy/Move command"
|
129
|
+
Const StrRes139 = "Error trying to open the object: "
|
130
|
+
Const StrRes140 = "Error trying to Copy/Move Source to Dest."
|
131
|
+
Const StrRes141 = "copied from "
|
132
|
+
Const StrRes142 = " to "
|
133
|
+
Const StrRes143 = "moved from "
|
134
|
+
Const StrRes145 = "Error: Wrong number of Args for the START_SERVER command"
|
135
|
+
Const StrRes146 = "Error trying to open the object: "
|
136
|
+
Const StrRes147 = "Error trying to START the server: "
|
137
|
+
Const StrRes148 = "Server "
|
138
|
+
Const StrRes149 = " Successfully STARTED"
|
139
|
+
Const StrRes150 = "Error: Wrong number of Args for the STOP_SERVER command"
|
140
|
+
Const StrRes151 = "Error trying to open the object: "
|
141
|
+
Const StrRes152 = "Error trying to STOP the server: "
|
142
|
+
Const StrRes154 = " Successfully STOPPED"
|
143
|
+
Const StrRes155 = "Error: Wrong number of Args for the PAUSE_SERVER command"
|
144
|
+
Const StrRes156 = "Error trying to open the object: "
|
145
|
+
Const StrRes157 = "Error trying to PAUSE the server: "
|
146
|
+
Const StrRes159 = " Successfully PAUSED"
|
147
|
+
Const StrRes160 = "Error: Wrong number of Args for the CONTINUE_SERVER command"
|
148
|
+
Const StrRes161 = "Error trying to open the object: "
|
149
|
+
Const StrRes162 = "Error trying to CONTINUE the server: "
|
150
|
+
Const StrRes164 = " Successfully CONTINUED"
|
151
|
+
Const StrRes165 = "Error: Wrong number of Args for the FIND_DATA command"
|
152
|
+
Const StrRes166 = "Error trying to find data paths for the Object (GetObject Failed): "
|
153
|
+
Const StrRes167 = "Error trying to get a path list (GetDataPaths Failed): "
|
154
|
+
Const StrRes168 = "Property "
|
155
|
+
Const StrRes169 = " was not found at any node beneath "
|
156
|
+
Const StrRes171 = " found at:"
|
157
|
+
Const StrRes172 = "Error listing the data paths (_newEnum Failed): "
|
158
|
+
Const StrRes173 = "Error trying to get the Object: "
|
159
|
+
Const StrRes175 = "Error trying to Create the Mime Map List."
|
160
|
+
Const StrRes176 = "Error: Wrong number of Args for the Set MIMEMAP command"
|
161
|
+
Const StrRes177 = "Error trying to get the Object: "
|
162
|
+
Const StrRes179 = "Error Trying to set the Object's ""MimeMap"" property to the new mimemap list."
|
163
|
+
Const StrRes180 = "Error Trying To Get the Object: "
|
164
|
+
Const StrRes181 = "Can't set ServerCommand on a non-IIsWebServer object."
|
165
|
+
Const StrRes182 = "Error Trying To Start the server: "
|
166
|
+
Const StrRes184 = " Successfully STARTED"
|
167
|
+
Const StrRes185 = "Error Trying To Stop the server: "
|
168
|
+
Const StrRes187 = " Successfully STOPPED"
|
169
|
+
Const StrRes188 = "Error Trying To Pause the server: "
|
170
|
+
Const StrRes190 = " Successfully PAUSED"
|
171
|
+
Const StrRes191 = "Error Trying To Continue the server: "
|
172
|
+
Const StrRes193 = " Successfully Continued"
|
173
|
+
Const StrRes194 = "Invalid ServerCommand: "
|
174
|
+
Const StrRes195 = "Error Trying To Get the Object: "
|
175
|
+
Const StrRes196 = "Can't set AppPoolCommand on a non-IIsApplicationPool object."
|
176
|
+
Const StrRes197 = "Error Trying To Start the application pool: "
|
177
|
+
Const StrRes198 = "Application pool "
|
178
|
+
Const StrRes199 = " Successfully STARTED"
|
179
|
+
Const StrRes200 = "Error Trying To Stop the application pool: "
|
180
|
+
Const StrRes202 = " Successfully STOPPED"
|
181
|
+
Const StrRes203 = "Invalid AppPoolCommand: "
|
182
|
+
Const StrRes204 = "Error Trying To Get the Object: "
|
183
|
+
Const StrRes205 = "Error: Setting not supported: "
|
184
|
+
Const StrRes206 = "Error Trying To Set data on the Object: "
|
185
|
+
Const StrRes208 = "Error Trying To Get the Object: "
|
186
|
+
Const StrRes215 = "Note: Your parameter """
|
187
|
+
Const StrRes216 = " is being mapped to AccessFlags"
|
188
|
+
Const StrRes217 = " Check individual perms using ""GET AccessRead"", ""GET AccessWrite"", etc."
|
189
|
+
Const StrRes221 = " is being mapped to AuthFlags"
|
190
|
+
Const StrRes222 = " Check individual auths using ""GET AuthNTLM"", ""GET AuthBasic"", etc."
|
191
|
+
Const StrRes223 = "ErrNumber: "
|
192
|
+
Const StrRes225 = "Error trying to Split the parameter from the object: "
|
193
|
+
Const StrRes234 = "Error trying to split the left part of the path: "
|
194
|
+
Const StrRes235 = "Error Trying To Sanitize the path: "
|
195
|
+
Const StrRes236 = "Error: Wrong number of Args for the APPCREATE command"
|
196
|
+
Const StrRes237 = "Error trying to get the path of the application: "
|
197
|
+
Const StrRes238 = "Error trying to create the application: "
|
198
|
+
Const StrRes239 = "Application Created."
|
199
|
+
Const StrRes240 = "Error: Wrong number of Args for the APPDELETE command"
|
200
|
+
Const StrRes242 = "Error trying to DELETE the application: "
|
201
|
+
Const StrRes243 = "Application Deleted."
|
202
|
+
Const StrRes244 = "Error: Wrong number of Args for the APPUNLOAD command"
|
203
|
+
Const StrRes246 = "Error trying to UNLOAD the application: "
|
204
|
+
Const StrRes247 = "Application Unloaded."
|
205
|
+
Const StrRes248 = "Error: Wrong number of Args for the APPDISABLE command"
|
206
|
+
Const StrRes251 = "Error trying to disable the application: "
|
207
|
+
Const StrRes253 = "Application Disabled."
|
208
|
+
Const StrRes254 = "Error: Wrong number of Args for the APPENABLE command"
|
209
|
+
Const StrRes257 = "Error trying to Enable the application: "
|
210
|
+
Const StrRes259 = "Application Enabled."
|
211
|
+
Const StrRes260 = "Error: Wrong number of Args for the APPGETSTATUS command"
|
212
|
+
Const StrRes262 = "Error trying to retrieve the application STATUS: "
|
213
|
+
Const StrRes263 = "Application Status: "
|
214
|
+
Const StrRes264 = "Error trying to get the property: "
|
215
|
+
Const StrRes265 = "Would you like to register CScript as your default host for VBscript?"
|
216
|
+
Const StrRes266 = "Register CScript"
|
217
|
+
Const StrRes267 = "The path requested could not be found."
|
218
|
+
Const StrRes268 = "Access is denied for the requested path or property."
|
219
|
+
Const StrRes269 = "The requested path is being used by another application."
|
220
|
+
Const StrRes270 = "Authorization"
|
221
|
+
Const StrRes271 = " Anonymous"
|
222
|
+
Const StrRes272 = " Basic"
|
223
|
+
|
224
|
+
Dim fso
|
225
|
+
Set fso = CreateObject("Scripting.FileSystemObject")
|
226
|
+
Const vbSpace = " "
|
227
|
+
|
228
|
+
' Get the overridden UI language.
|
229
|
+
Function GetLangID()
|
230
|
+
Dim args, lang
|
231
|
+
|
232
|
+
Set args = WScript.Arguments.Named
|
233
|
+
If args.Exists("lang") Then
|
234
|
+
lang = args.Item("lang")
|
235
|
+
GetLangID = CInt(lang)
|
236
|
+
Else
|
237
|
+
GetLangID = GetUILanguage()
|
238
|
+
End If
|
239
|
+
|
240
|
+
End Function
|
241
|
+
|
242
|
+
' Get a localized resources for 'resourceID' if available;
|
243
|
+
' otherwise, get the neutral resource.
|
244
|
+
Function GetLocalizedResource(resourceID)
|
245
|
+
Const ForReading = 1, TristateUseDefault = -2
|
246
|
+
Dim lang, value, ini
|
247
|
+
|
248
|
+
lang = GetLangID()
|
249
|
+
ini = fso.GetParentFolderName(WScript.ScriptFullName) & "\" _
|
250
|
+
& ToHex(lang) & "\" & fso.GetBaseName(WScript.ScriptName) & ".ini"
|
251
|
+
|
252
|
+
If fso.FileExists(ini) Then
|
253
|
+
Dim stream, file
|
254
|
+
|
255
|
+
Set file = fso.GetFile(ini)
|
256
|
+
Set stream = file.OpenAsTextStream(ForReading, TristateUseDefault)
|
257
|
+
value = ReadResource(stream, resourceID)
|
258
|
+
End If
|
259
|
+
|
260
|
+
If Not IsEmpty(value) Then
|
261
|
+
GetLocalizedResource = value
|
262
|
+
Else
|
263
|
+
GetLocalizedResource = Eval(resourceID)
|
264
|
+
End If
|
265
|
+
End Function
|
266
|
+
|
267
|
+
' Read a resource ID from the TextStream
|
268
|
+
Function ReadResource(stream, resourceID)
|
269
|
+
Const ERROR_FILE_NOT_FOUND = 2
|
270
|
+
Dim ln, arr, key, value
|
271
|
+
|
272
|
+
If Not IsObject(stream) Then Err.Raise ERROR_FILE_NOT_FOUND
|
273
|
+
|
274
|
+
Do Until stream.AtEndOfStream
|
275
|
+
ln = stream.ReadLine
|
276
|
+
|
277
|
+
arr = Split(ln, "=", 2, 1)
|
278
|
+
If UBound(arr, 1) = 1 Then
|
279
|
+
' Trim the key and the value first before trimming quotes
|
280
|
+
key = arr(0)
|
281
|
+
key = TrimSpace(key)
|
282
|
+
'key = Replace(key, String(1, vbTab), "")
|
283
|
+
|
284
|
+
If StrComp(resourceID, key, 1) = 0 Then
|
285
|
+
value = TrimChar(TrimSpace(arr(1)), """")
|
286
|
+
ReadResource = value
|
287
|
+
Exit Do
|
288
|
+
End If
|
289
|
+
End If
|
290
|
+
Loop
|
291
|
+
|
292
|
+
stream.Close
|
293
|
+
End Function
|
294
|
+
|
295
|
+
Function TrimSpace(s)
|
296
|
+
Dim c
|
297
|
+
do
|
298
|
+
c = Left(s, 1)
|
299
|
+
if c <> vbTab and c <> vbSpace then
|
300
|
+
exit do
|
301
|
+
end if
|
302
|
+
s = Right(s, len(s) - 1)
|
303
|
+
loop
|
304
|
+
|
305
|
+
do
|
306
|
+
c = Right(s, 1)
|
307
|
+
if c <> vbTab and c <> vbSpace then
|
308
|
+
exit do
|
309
|
+
end if
|
310
|
+
s = Left(s, len(s) - 1)
|
311
|
+
loop
|
312
|
+
|
313
|
+
TrimSpace = s
|
314
|
+
End Function
|
315
|
+
|
316
|
+
' Trim a character from the text string
|
317
|
+
Function TrimChar(s, c)
|
318
|
+
Dim a
|
319
|
+
do
|
320
|
+
a = Left(s, 1)
|
321
|
+
if a <> c then
|
322
|
+
exit do
|
323
|
+
end if
|
324
|
+
s = Right(s, len(s) - 1)
|
325
|
+
loop
|
326
|
+
|
327
|
+
do
|
328
|
+
a = Right(s, 1)
|
329
|
+
if a <> c then
|
330
|
+
exit do
|
331
|
+
end if
|
332
|
+
s = Left(s, len(s) - 1)
|
333
|
+
loop
|
334
|
+
|
335
|
+
TrimChar = s
|
336
|
+
End Function
|
337
|
+
|
338
|
+
Function ToHex(n)
|
339
|
+
Dim s : s = Hex(n)
|
340
|
+
ToHex = String(4 - Len(s), "0") & s
|
341
|
+
End Function
|
342
|
+
|
343
|
+
''''''''''''''''''
|
344
|
+
' Main Script Code
|
345
|
+
''''''''''''''''''
|
346
|
+
Dim ArgObj ' Object which contains the command line argument
|
347
|
+
Dim Result ' Result of the command function call
|
348
|
+
Dim Args(999) ' Array that contains all of the non-global arguments
|
349
|
+
Dim ArgCount ' Tracks the size of the Args array
|
350
|
+
|
351
|
+
' Used for string formatting
|
352
|
+
Dim Spacer
|
353
|
+
Dim SpacerSize
|
354
|
+
|
355
|
+
Const IIS_DATA_NO_INHERIT = 0
|
356
|
+
Const IIS_DATA_INHERIT = 1
|
357
|
+
Const GENERAL_FAILURE = 2
|
358
|
+
Const GENERAL_WARNING = 1
|
359
|
+
Const AppCreate_InProc = 0
|
360
|
+
Const AppCreate_OutOfProc = 1
|
361
|
+
Const AppCreate_PooledOutOfProc = 2
|
362
|
+
|
363
|
+
Const APPSTATUS_NOTDEFINED = 2
|
364
|
+
Const APPSTATUS_RUNNING = 1
|
365
|
+
Const APPSTATUS_STOPPED = 0
|
366
|
+
|
367
|
+
Spacer = " " ' Used to format the strings
|
368
|
+
SpacerSize = Len(Spacer)
|
369
|
+
|
370
|
+
' Note: The default execution mode may be under WScript.exe.
|
371
|
+
' That would be very annoying since WScript has popups for Echo.
|
372
|
+
' So, I want to detect that, and warn the user that it may cause
|
373
|
+
' problems.
|
374
|
+
DetectExeType
|
375
|
+
|
376
|
+
' Get the Arguments object
|
377
|
+
Set ArgObj = WScript.Arguments
|
378
|
+
|
379
|
+
' Test to make sure there is at least one command line arg - the command
|
380
|
+
If ArgObj.Count < 1 Then
|
381
|
+
DisplayHelpMessage
|
382
|
+
WScript.Quit (GENERAL_FAILURE)
|
383
|
+
End If
|
384
|
+
|
385
|
+
'*****************************************************
|
386
|
+
Dim TargetServer 'The server to be examined/modified
|
387
|
+
Dim I
|
388
|
+
For I = 0 To ArgObj.Count - 1
|
389
|
+
If LCase(Left(ArgObj.Item(I), 3)) = "-s:" Then
|
390
|
+
TargetServer = Right(ArgObj.Item(I), Len(ArgObj.Item(I)) - 3)
|
391
|
+
Else
|
392
|
+
Args(ArgCount) = ArgObj.Item(I)
|
393
|
+
ArgCount = ArgCount + 1
|
394
|
+
End If
|
395
|
+
Next
|
396
|
+
If Len(TargetServer) = 0 Then
|
397
|
+
TargetServer = "localhost"
|
398
|
+
End If
|
399
|
+
'*****************************************************
|
400
|
+
|
401
|
+
' Call the function associated with the given command
|
402
|
+
Select Case UCase(Args(0))
|
403
|
+
Case "SET"
|
404
|
+
Result = SetCommand()
|
405
|
+
Case "CREATE"
|
406
|
+
Result = CreateCommand("")
|
407
|
+
Case "DELETE"
|
408
|
+
Result = DeleteCommand()
|
409
|
+
Case "GET"
|
410
|
+
Result = GetCommand()
|
411
|
+
Case "ENUM"
|
412
|
+
Result = EnumCommand(False, "")
|
413
|
+
Case "ENUM_ALL"
|
414
|
+
Result = EnumCommand(True, "")
|
415
|
+
Case "ENUMALL"
|
416
|
+
Result = EnumCommand(True, "")
|
417
|
+
Case "COPY"
|
418
|
+
Result = CopyMoveCommand(True) ' The TRUE means COPY, not MOVE
|
419
|
+
Case "MOVE"
|
420
|
+
Result = CopyMoveCommand(False) ' The FALSE means MOVE, not COPY
|
421
|
+
Case "CREATE_VDIR"
|
422
|
+
Result = CreateCommand("IIsWebVirtualDir")
|
423
|
+
Case "CREATE_VSERV"
|
424
|
+
Result = CreateCommand("IIsWebServer")
|
425
|
+
Case "START_SERVER"
|
426
|
+
Result = StartServerCommand()
|
427
|
+
Case "STOP_SERVER"
|
428
|
+
Result = StopServerCommand()
|
429
|
+
Case "PAUSE_SERVER"
|
430
|
+
Result = PauseServerCommand()
|
431
|
+
Case "CONTINUE_SERVER"
|
432
|
+
Result = ContinueServerCommand()
|
433
|
+
' New Stuff being added
|
434
|
+
Case "FIND"
|
435
|
+
Result = FindData()
|
436
|
+
Case "COPY"
|
437
|
+
WScript.Echo GetLocalizedResource("StrRes0")
|
438
|
+
Case "APPCREATEINPROC"
|
439
|
+
Result = AppCreateCommand(AppCreate_InProc)
|
440
|
+
Case "APPCREATEOUTPROC"
|
441
|
+
Result = AppCreateCommand(AppCreate_OutOfProc)
|
442
|
+
Case "APPCREATEPOOLPROC"
|
443
|
+
Result = AppCreateCommand(AppCreate_PooledOutOfProc)
|
444
|
+
Case "APPDELETE"
|
445
|
+
Result = AppDeleteCommand()
|
446
|
+
Case "APPUNLOAD"
|
447
|
+
Result = AppUnloadCommand()
|
448
|
+
Case "APPDISABLE"
|
449
|
+
Result = AppDisableCommand()
|
450
|
+
Case "APPENABLE"
|
451
|
+
Result = AppEnableCommand()
|
452
|
+
Case "APPGETSTATUS"
|
453
|
+
Result = AppGetStatusCommand()
|
454
|
+
Case "HELP"
|
455
|
+
DisplayHelpMessageEx
|
456
|
+
|
457
|
+
' End New Stuff
|
458
|
+
|
459
|
+
Case Else
|
460
|
+
WScript.Echo GetLocalizedResource("StrRes1") & Args(0)
|
461
|
+
WScript.Echo GetLocalizedResource("StrRes2")
|
462
|
+
Result = GENERAL_FAILURE
|
463
|
+
|
464
|
+
End Select
|
465
|
+
|
466
|
+
WScript.Quit (Result)
|
467
|
+
|
468
|
+
''''''''''
|
469
|
+
' End Main
|
470
|
+
''''''''''
|
471
|
+
|
472
|
+
|
473
|
+
''''''''''''''''''''''''''''
|
474
|
+
'
|
475
|
+
' Display Help Message
|
476
|
+
'
|
477
|
+
''''''''''''''''''''''''''''
|
478
|
+
Sub DisplayHelpMessage()
|
479
|
+
WScript.Echo
|
480
|
+
WScript.Echo GetLocalizedResource("StrRes3")
|
481
|
+
WScript.Echo GetLocalizedResource("StrRes4")
|
482
|
+
WScript.Echo
|
483
|
+
WScript.Echo GetLocalizedResource("StrRes6")
|
484
|
+
WScript.Echo GetLocalizedResource("StrRes7")
|
485
|
+
WScript.Echo
|
486
|
+
WScript.Echo GetLocalizedResource("StrRes9")
|
487
|
+
WScript.Echo " GET, SET, ENUM, DELETE, CREATE, COPY, "
|
488
|
+
WScript.Echo " APPCREATEINPROC, APPCREATEOUTPROC, APPCREATEPOOLPROC, APPDELETE, APPUNLOAD, APPGETSTATUS "
|
489
|
+
WScript.Echo
|
490
|
+
WScript.Echo GetLocalizedResource("StrRes12")
|
491
|
+
WScript.Echo " adsutil.vbs GET W3SVC/1/ServerBindings"
|
492
|
+
WScript.Echo " adsutil.vbs SET W3SVC/1/ServerBindings "":81:"""
|
493
|
+
WScript.Echo " adsutil.vbs CREATE W3SVC/1/Root/MyVdir ""IIsWebVirtualDir"""
|
494
|
+
WScript.Echo " adsutil.vbs START_SERVER W3SVC/1"
|
495
|
+
WScript.Echo " adsutil.vbs ENUM /P W3SVC"
|
496
|
+
WScript.Echo
|
497
|
+
WScript.Echo GetLocalizedResource("StrRes18")
|
498
|
+
WScript.Echo " adsutil.vbs HELP"
|
499
|
+
End Sub
|
500
|
+
|
501
|
+
|
502
|
+
|
503
|
+
''''''''''''''''''''''''''''
|
504
|
+
'
|
505
|
+
' Display Help Message
|
506
|
+
'
|
507
|
+
''''''''''''''''''''''''''''
|
508
|
+
Sub DisplayHelpMessageEx()
|
509
|
+
|
510
|
+
WScript.Echo
|
511
|
+
WScript.Echo GetLocalizedResource("StrRes3")
|
512
|
+
WScript.Echo GetLocalizedResource("StrRes21")
|
513
|
+
WScript.Echo
|
514
|
+
WScript.Echo GetLocalizedResource("StrRes23")
|
515
|
+
WScript.Echo GetLocalizedResource("StrRes24")
|
516
|
+
WScript.Echo
|
517
|
+
WScript.Echo GetLocalizedResource("StrRes26")
|
518
|
+
WScript.Echo GetLocalizedResource("StrRes27")
|
519
|
+
WScript.Echo GetLocalizedResource("StrRes28")
|
520
|
+
WScript.Echo GetLocalizedResource("StrRes29")
|
521
|
+
WScript.Echo GetLocalizedResource("StrRes30")
|
522
|
+
WScript.Echo GetLocalizedResource("StrRes31")
|
523
|
+
WScript.Echo
|
524
|
+
WScript.Echo GetLocalizedResource("StrRes32")
|
525
|
+
WScript.Echo GetLocalizedResource("StrRes33")
|
526
|
+
WScript.Echo GetLocalizedResource("StrRes34")
|
527
|
+
WScript.Echo GetLocalizedResource("StrRes35")
|
528
|
+
WScript.Echo GetLocalizedResource("StrRes36")
|
529
|
+
WScript.Echo GetLocalizedResource("StrRes37")
|
530
|
+
WScript.Echo GetLocalizedResource("StrRes38")
|
531
|
+
WScript.Echo GetLocalizedResource("StrRes39")
|
532
|
+
WScript.Echo
|
533
|
+
WScript.Echo GetLocalizedResource("StrRes40")
|
534
|
+
WScript.Echo GetLocalizedResource("StrRes41")
|
535
|
+
WScript.Echo GetLocalizedResource("StrRes42")
|
536
|
+
WScript.Echo
|
537
|
+
WScript.Echo GetLocalizedResource("StrRes43")
|
538
|
+
WScript.Echo GetLocalizedResource("StrRes44")
|
539
|
+
WScript.Echo GetLocalizedResource("StrRes45")
|
540
|
+
WScript.Echo GetLocalizedResource("StrRes46")
|
541
|
+
WScript.Echo GetLocalizedResource("StrRes47")
|
542
|
+
WScript.Echo GetLocalizedResource("StrRes48")
|
543
|
+
WScript.Echo GetLocalizedResource("StrRes49")
|
544
|
+
WScript.Echo GetLocalizedResource("StrRes50")
|
545
|
+
WScript.Echo
|
546
|
+
WScript.Echo
|
547
|
+
WScript.Echo GetLocalizedResource("StrRes12")
|
548
|
+
WScript.Echo GetLocalizedResource("StrRes52")
|
549
|
+
WScript.Echo GetLocalizedResource("StrRes53")
|
550
|
+
WScript.Echo GetLocalizedResource("StrRes54")
|
551
|
+
WScript.Echo GetLocalizedResource("StrRes55")
|
552
|
+
WScript.Echo GetLocalizedResource("StrRes56")
|
553
|
+
|
554
|
+
WScript.Echo GetLocalizedResource("StrRes57")
|
555
|
+
WScript.Echo GetLocalizedResource("StrRes58")
|
556
|
+
WScript.Echo GetLocalizedResource("StrRes59")
|
557
|
+
WScript.Echo GetLocalizedResource("StrRes60")
|
558
|
+
WScript.Echo GetLocalizedResource("StrRes61")
|
559
|
+
WScript.Echo GetLocalizedResource("StrRes62")
|
560
|
+
WScript.Echo GetLocalizedResource("StrRes63")
|
561
|
+
WScript.Echo GetLocalizedResource("StrRes64")
|
562
|
+
WScript.Echo
|
563
|
+
WScript.Echo
|
564
|
+
WScript.Echo GetLocalizedResource("StrRes65")
|
565
|
+
WScript.Echo GetLocalizedResource("StrRes66")
|
566
|
+
WScript.Echo GetLocalizedResource("StrRes67")
|
567
|
+
WScript.Echo GetLocalizedResource("StrRes68")
|
568
|
+
WScript.Echo GetLocalizedResource("StrRes69")
|
569
|
+
WScript.Echo GetLocalizedResource("StrRes70")
|
570
|
+
|
571
|
+
' adsutil.vbs ENUM_ALL path - recursively enumerate all parameters
|
572
|
+
' adsutil.vbs COPY pathsrc pathdst - copy all from pathsrc to pathdst (will create pathdst)
|
573
|
+
' adsutil.vbs SCRIPT scriptname - runs the script
|
574
|
+
|
575
|
+
' -path has format: {computer}/{service}/{instance}/{URL}/{Parameter}
|
576
|
+
|
577
|
+
End Sub
|
578
|
+
|
579
|
+
|
580
|
+
|
581
|
+
|
582
|
+
|
583
|
+
|
584
|
+
'''''''''''''''''''''''''''
|
585
|
+
'
|
586
|
+
' DetectExeType
|
587
|
+
'
|
588
|
+
' This can detect the type of exe the
|
589
|
+
' script is running under and warns the
|
590
|
+
' user of the popups.
|
591
|
+
'
|
592
|
+
'''''''''''''''''''''''''''
|
593
|
+
Sub DetectExeType()
|
594
|
+
Dim ScriptHost
|
595
|
+
Dim ShellObject
|
596
|
+
|
597
|
+
Dim CurrentPathExt
|
598
|
+
Dim EnvObject
|
599
|
+
|
600
|
+
Dim RegCScript
|
601
|
+
Dim RegPopupType ' This is used to set the pop-up box flags.
|
602
|
+
' I couldn't find the pre-defined names
|
603
|
+
RegPopupType = 32 + 4
|
604
|
+
|
605
|
+
On Error Resume Next
|
606
|
+
|
607
|
+
ScriptHost = WScript.FullName
|
608
|
+
ScriptHost = Right(ScriptHost, Len(ScriptHost) - InStrRev(ScriptHost, "\"))
|
609
|
+
|
610
|
+
If (UCase(ScriptHost) = "WSCRIPT.EXE") Then
|
611
|
+
WScript.Echo GetLocalizedResource("StrRes71")
|
612
|
+
|
613
|
+
' Create a pop-up box and ask if they want to register cscript as the default host.
|
614
|
+
Set ShellObject = WScript.CreateObject("WScript.Shell")
|
615
|
+
' -1 is the time to wait. 0 means wait forever.
|
616
|
+
RegCScript = ShellObject.PopUp(GetLocalizedResource("StrRes265"), 0, GetLocalizedResource("StrRes266"), RegPopupType)
|
617
|
+
|
618
|
+
If (Err.Number <> 0) Then
|
619
|
+
ReportError ()
|
620
|
+
WScript.Echo GetLocalizedResource("StrRes72") & WScript.ScriptName & """"
|
621
|
+
WScript.Quit (GENERAL_FAILURE)
|
622
|
+
WScript.Quit (Err.Number)
|
623
|
+
End If
|
624
|
+
|
625
|
+
' Check to see if the user pressed yes or no. Yes is 6, no is 7
|
626
|
+
If (RegCScript = 6) Then
|
627
|
+
ShellObject.RegWrite "HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command\", "%WINDIR%\System32\CScript.exe //nologo ""%1"" %*", "REG_EXPAND_SZ"
|
628
|
+
ShellObject.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VBSFile\Shell\Open\Command\", "%WINDIR%\System32\CScript.exe //nologo ""%1"" %*", "REG_EXPAND_SZ"
|
629
|
+
' Check if PathExt already existed
|
630
|
+
CurrentPathExt = ShellObject.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATHEXT")
|
631
|
+
If Err.Number = &H80070002 Then
|
632
|
+
Err.Clear
|
633
|
+
Set EnvObject = ShellObject.Environment("PROCESS")
|
634
|
+
CurrentPathExt = EnvObject.Item("PATHEXT")
|
635
|
+
End If
|
636
|
+
|
637
|
+
ShellObject.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATHEXT", CurrentPathExt & ";.VBS", "REG_SZ"
|
638
|
+
|
639
|
+
If (Err.Number <> 0) Then
|
640
|
+
ReportError ()
|
641
|
+
WScript.Echo GetLocalizedResource("StrRes73")
|
642
|
+
WScript.Quit (Err.Number)
|
643
|
+
Else
|
644
|
+
WScript.Echo GetLocalizedResource("StrRes74")
|
645
|
+
End If
|
646
|
+
Else
|
647
|
+
WScript.Echo GetLocalizedResource("StrRes75")
|
648
|
+
End If
|
649
|
+
|
650
|
+
Dim ProcString
|
651
|
+
Dim ArgIndex
|
652
|
+
Dim ArgObj
|
653
|
+
Dim Result
|
654
|
+
|
655
|
+
ProcString = "Cscript //nologo " & WScript.ScriptFullName
|
656
|
+
|
657
|
+
Set ArgObj = WScript.Arguments
|
658
|
+
|
659
|
+
For ArgIndex = 0 To ArgCount - 1
|
660
|
+
ProcString = ProcString & " " & Args(ArgIndex)
|
661
|
+
Next
|
662
|
+
|
663
|
+
'Now, run the original executable under CScript.exe
|
664
|
+
Result = ShellObject.Run(ProcString, 0, True)
|
665
|
+
|
666
|
+
WScript.Quit (Result)
|
667
|
+
End If
|
668
|
+
|
669
|
+
End Sub
|
670
|
+
|
671
|
+
|
672
|
+
''''''''''''''''''''''''''
|
673
|
+
'
|
674
|
+
' SetCommand Function
|
675
|
+
'
|
676
|
+
' Sets the value of a property in the metabase.
|
677
|
+
'
|
678
|
+
''''''''''''''''''''''''''
|
679
|
+
Function SetCommand()
|
680
|
+
Dim IIsObject
|
681
|
+
Dim IIsObjectPath
|
682
|
+
Dim IIsSchemaObject
|
683
|
+
Dim IIsSchemaPath
|
684
|
+
Dim ObjectPath
|
685
|
+
Dim ObjectParameter
|
686
|
+
Dim MachineName
|
687
|
+
Dim ValueIndex
|
688
|
+
Dim ValueList
|
689
|
+
Dim ValueDisplay
|
690
|
+
Dim ValueDisplayLen
|
691
|
+
Dim ValueDataType
|
692
|
+
|
693
|
+
Dim ValueData
|
694
|
+
|
695
|
+
Dim ObjectDataType
|
696
|
+
|
697
|
+
On Error Resume Next
|
698
|
+
|
699
|
+
SetCommand = 0 ' Assume Success
|
700
|
+
|
701
|
+
If ArgCount < 3 Then
|
702
|
+
WScript.Echo GetLocalizedResource("StrRes76")
|
703
|
+
WScript.Quit (GENERAL_FAILURE)
|
704
|
+
End If
|
705
|
+
|
706
|
+
ObjectPath = Args(1)
|
707
|
+
SanitizePath ObjectPath
|
708
|
+
MachineName = SeparateMachineName(ObjectPath)
|
709
|
+
ObjectParameter = SplitParam(ObjectPath)
|
710
|
+
|
711
|
+
' Some Property Types have special needs - like ServerCommand.
|
712
|
+
' Check to see if this is a special command. If it is, then process it special.
|
713
|
+
If (IsSpecialSetProperty(ObjectParameter)) Then
|
714
|
+
SetCommand = DoSpecialSetProp(ObjectPath, ObjectParameter, MachineName)
|
715
|
+
Exit Function
|
716
|
+
End If
|
717
|
+
|
718
|
+
If ObjectPath = "" Then
|
719
|
+
IIsObjectPath = "IIS://" & MachineName
|
720
|
+
Else
|
721
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
722
|
+
End If
|
723
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
724
|
+
|
725
|
+
If (Err.Number <> 0) Then
|
726
|
+
ReportError ()
|
727
|
+
WScript.Echo GetLocalizedResource("StrRes77") & ObjectPath
|
728
|
+
WScript.Quit (Err.Number)
|
729
|
+
End If
|
730
|
+
|
731
|
+
' Get the Schema of the property and determine if it's multivalued
|
732
|
+
IIsSchemaPath = "IIS://" & MachineName & "/Schema/" & ObjectParameter
|
733
|
+
Set IIsSchemaObject = GetObject(IIsSchemaPath)
|
734
|
+
|
735
|
+
If (Err.Number <> 0) Then
|
736
|
+
ReportError ()
|
737
|
+
WScript.Echo GetLocalizedResource("StrRes78") & IIsSchemaPath
|
738
|
+
WScript.Quit (Err.Number)
|
739
|
+
End If
|
740
|
+
|
741
|
+
ObjectDataType = UCase(IIsSchemaObject.Syntax)
|
742
|
+
SanitizePath ObjectDataType
|
743
|
+
|
744
|
+
Select Case (ObjectDataType)
|
745
|
+
|
746
|
+
Case "STRING"
|
747
|
+
ValueList = Args(2)
|
748
|
+
IIsObject.Put ObjectParameter, (ValueList)
|
749
|
+
|
750
|
+
Case "EXPANDSZ"
|
751
|
+
ValueList = Args(2)
|
752
|
+
IIsObject.Put ObjectParameter, (ValueList)
|
753
|
+
|
754
|
+
Case "INTEGER"
|
755
|
+
' Added to convert hex values to integers
|
756
|
+
ValueData = Args(2)
|
757
|
+
|
758
|
+
If (UCase(Left(ValueData, 2))) = "0X" Then
|
759
|
+
ValueData = "&h" & Right(ValueData, Len(ValueData) - 2)
|
760
|
+
End If
|
761
|
+
|
762
|
+
ValueList = StringTo32BitUnsignedInteger(ValueData)
|
763
|
+
IIsObject.Put ObjectParameter, (ValueList)
|
764
|
+
|
765
|
+
Case "BOOLEAN"
|
766
|
+
ValueList = CBool(Args(2))
|
767
|
+
IIsObject.Put ObjectParameter, (ValueList)
|
768
|
+
|
769
|
+
Case "LIST"
|
770
|
+
ReDim ValueList(ArgCount - 3)
|
771
|
+
For ValueIndex = 2 To ArgCount - 1
|
772
|
+
ValueList(ValueIndex - 2) = Args(ValueIndex)
|
773
|
+
Next
|
774
|
+
|
775
|
+
IIsObject.Put ObjectParameter, (ValueList)
|
776
|
+
|
777
|
+
Case Else
|
778
|
+
WScript.Echo GetLocalizedResource("StrRes79") & IIsSchemaObject.Syntax
|
779
|
+
|
780
|
+
End Select
|
781
|
+
|
782
|
+
IIsObject.Setinfo
|
783
|
+
|
784
|
+
If (Err.Number <> 0) Then
|
785
|
+
ReportError ()
|
786
|
+
WScript.Echo GetLocalizedResource("StrRes80") & ObjectParameter
|
787
|
+
WScript.Quit (Err.Number)
|
788
|
+
End If
|
789
|
+
|
790
|
+
' The function call succeeded, so display the output
|
791
|
+
' Set up the initial part of the display - the property name and data type
|
792
|
+
ValueDisplay = ObjectParameter
|
793
|
+
ValueDisplayLen = Len(ValueDisplay)
|
794
|
+
|
795
|
+
If (ValueDisplayLen < SpacerSize) Then
|
796
|
+
ValueDisplay = ValueDisplay & (Right(Spacer, SpacerSize - ValueDisplayLen)) & ": " & "(" & ObjectDataType & ") "
|
797
|
+
Else
|
798
|
+
ValueDisplay = ValueDisplay & ": " & "(" & TypeName(ValueList) & ") "
|
799
|
+
End If
|
800
|
+
|
801
|
+
' Create the rest of the display - The actual data
|
802
|
+
If (IIsSchemaObject.MultiValued) Then
|
803
|
+
For ValueIndex = 0 To UBound(ValueList)
|
804
|
+
ValueDisplay = ValueDisplay & """" & ValueList(ValueIndex) & """ "
|
805
|
+
Next
|
806
|
+
Else
|
807
|
+
If (UCase(IIsSchemaObject.Syntax) = "STRING") Then
|
808
|
+
If (IsSecureProperty(ObjectParameter,MachineName) = True) Then
|
809
|
+
ValueDisplay = ValueDisplay & """" & "**********" & """"
|
810
|
+
Else
|
811
|
+
ValueDisplay = ValueDisplay & """" & ValueList & """"
|
812
|
+
End If
|
813
|
+
ElseIf (UCase(IIsSchemaObject.Syntax) = "INTEGER") Then
|
814
|
+
ValueDisplay = ValueDisplay & UnsignedIntegerToString(ValueList)
|
815
|
+
Else
|
816
|
+
ValueDisplay = ValueDisplay & ValueList
|
817
|
+
End If
|
818
|
+
End If
|
819
|
+
|
820
|
+
' Display the output
|
821
|
+
WScript.Echo ValueDisplay
|
822
|
+
|
823
|
+
SetCommand = 0 ' Success
|
824
|
+
|
825
|
+
End Function
|
826
|
+
|
827
|
+
|
828
|
+
''''''''''''''''''''''''''
|
829
|
+
'
|
830
|
+
' GetCommand Function
|
831
|
+
'
|
832
|
+
' Gets the value of a property in the metabase.
|
833
|
+
'
|
834
|
+
''''''''''''''''''''''''''
|
835
|
+
Function GetCommand()
|
836
|
+
|
837
|
+
Dim IIsObject
|
838
|
+
Dim IIsObjectPath
|
839
|
+
Dim IIsSchemaObject
|
840
|
+
Dim IIsSchemaPath
|
841
|
+
Dim ObjectPath
|
842
|
+
Dim ObjectParameter
|
843
|
+
Dim MachineName
|
844
|
+
Dim ValueIndex
|
845
|
+
Dim ValueList
|
846
|
+
Dim ValueListArray
|
847
|
+
Dim ValueDisplay
|
848
|
+
Dim ValueDisplayLen
|
849
|
+
Dim NewObjectparameter
|
850
|
+
|
851
|
+
Dim DataPathList
|
852
|
+
Dim DataPath
|
853
|
+
|
854
|
+
On Error Resume Next
|
855
|
+
|
856
|
+
GetCommand = 0 ' Assume Success
|
857
|
+
|
858
|
+
If ArgCount <> 2 Then
|
859
|
+
WScript.Echo GetLocalizedResource("StrRes81")
|
860
|
+
WScript.Quit (GENERAL_FAILURE)
|
861
|
+
End If
|
862
|
+
|
863
|
+
ObjectPath = Args(1)
|
864
|
+
|
865
|
+
SanitizePath ObjectPath
|
866
|
+
MachineName = SeparateMachineName(ObjectPath)
|
867
|
+
ObjectParameter = SplitParam(ObjectPath)
|
868
|
+
|
869
|
+
NewObjectparameter = MapSpecGetParamName(ObjectParameter)
|
870
|
+
ObjectParameter = NewObjectparameter
|
871
|
+
|
872
|
+
If (IsSpecialGetProperty(ObjectParameter)) Then
|
873
|
+
GetCommand = DoSpecialGetProp(ObjectPath, ObjectParameter, MachineName)
|
874
|
+
Exit Function
|
875
|
+
End If
|
876
|
+
|
877
|
+
If ObjectPath = "" Then
|
878
|
+
IIsObjectPath = "IIS://" & MachineName
|
879
|
+
Else
|
880
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
881
|
+
End If
|
882
|
+
|
883
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
884
|
+
|
885
|
+
If (Err.Number <> 0) Then
|
886
|
+
ReportError ()
|
887
|
+
WScript.Echo GetLocalizedResource("StrRes82") & ObjectPath
|
888
|
+
WScript.Quit (Err.Number)
|
889
|
+
End If
|
890
|
+
|
891
|
+
' Get the Schema of the property and determine if it's multivalued
|
892
|
+
IIsSchemaPath = "IIS://" & MachineName & "/Schema/" & ObjectParameter
|
893
|
+
Set IIsSchemaObject = GetObject(IIsSchemaPath)
|
894
|
+
|
895
|
+
If (Err.Number <> 0) Then
|
896
|
+
ReportError ()
|
897
|
+
WScript.Echo GetLocalizedResource("StrRes83") & IIsSchemaPath
|
898
|
+
WScript.Quit (Err.Number)
|
899
|
+
End If
|
900
|
+
|
901
|
+
' First, attempt to retrieve the property - this will tell us
|
902
|
+
' if you are even allowed to set the property at this node.
|
903
|
+
' Retrieve the property
|
904
|
+
ValueList = IIsObject.Get(ObjectParameter)
|
905
|
+
If (Err.Number <> 0) Then
|
906
|
+
ReportError ()
|
907
|
+
WScript.Echo GetLocalizedResource("StrRes84") & ObjectParameter
|
908
|
+
WScript.Echo GetLocalizedResource("StrRes85")
|
909
|
+
WScript.Quit (Err.Number)
|
910
|
+
End If
|
911
|
+
|
912
|
+
' Test to see if the property is ACTUALLY set at this node
|
913
|
+
DataPathList = IIsObject.GetDataPaths(ObjectParameter, IIS_DATA_INHERIT)
|
914
|
+
If Err.Number <> 0 Then DataPathList = IIsObject.GetDataPaths(ObjectParameter, IIS_DATA_NO_INHERIT)
|
915
|
+
Err.Clear
|
916
|
+
|
917
|
+
' If the data is not set anywhere, then stop the madness
|
918
|
+
If (UBound(DataPathList) < 0) Then
|
919
|
+
WScript.Echo GetLocalizedResource("StrRes86") & ObjectParameter & GetLocalizedResource("StrRes87")
|
920
|
+
WScript.Quit (&H80005006) ' end with property not set error
|
921
|
+
End If
|
922
|
+
|
923
|
+
DataPath = DataPathList(0)
|
924
|
+
SanitizePath DataPath
|
925
|
+
|
926
|
+
' Test to see if the item is actually set HERE
|
927
|
+
If UCase(DataPath) <> UCase(IIsObjectPath) Then
|
928
|
+
WScript.Echo GetLocalizedResource("StrRes86") & ObjectParameter & GetLocalizedResource("StrRes87")
|
929
|
+
WScript.Quit (&H80005006) ' end with property not set error
|
930
|
+
End If
|
931
|
+
|
932
|
+
' Set up the initial part of the display - the property name and data type
|
933
|
+
ValueDisplay = ObjectParameter
|
934
|
+
ValueDisplayLen = Len(ValueDisplay)
|
935
|
+
|
936
|
+
If (ValueDisplayLen < SpacerSize) Then
|
937
|
+
ValueDisplay = ValueDisplay & (Right(Spacer, SpacerSize - ValueDisplayLen)) & ": " & "(" & UCase(IIsSchemaObject.Syntax) & ") "
|
938
|
+
Else
|
939
|
+
ValueDisplay = ValueDisplay & ": " & "(" & TypeName(ValueList) & ") "
|
940
|
+
End If
|
941
|
+
|
942
|
+
' Create the rest of the display - The actual data
|
943
|
+
If (IIsSchemaObject.MultiValued) Then
|
944
|
+
WScript.Echo ValueDisplay & " (" & UBound (ValueList) + 1 & GetLocalizedResource("StrRes90")
|
945
|
+
|
946
|
+
For ValueIndex = 0 To UBound(ValueList)
|
947
|
+
WScript.Echo " """ & ValueList(ValueIndex) & """"
|
948
|
+
Next
|
949
|
+
Else
|
950
|
+
If (UCase(IIsSchemaObject.Syntax) = "STRING") Then
|
951
|
+
If (IsSecureProperty(ObjectParameter,MachineName) = True) Then
|
952
|
+
ValueDisplay = ValueDisplay & """" & "**********" & """"
|
953
|
+
Else
|
954
|
+
ValueDisplay = ValueDisplay & """" & ValueList & """"
|
955
|
+
End If
|
956
|
+
|
957
|
+
ElseIf (UCase(IIsSchemaObject.Syntax) = "BINARY") Then
|
958
|
+
ValueListArray = IIsObject.Get(ObjectParameter)
|
959
|
+
|
960
|
+
ValueList = "0x"
|
961
|
+
|
962
|
+
For ValueIndex = 0 To UBound(ValueListArray)
|
963
|
+
ValueList = ValueList & ValueListArray(ValueIndex) & " "
|
964
|
+
Next
|
965
|
+
|
966
|
+
ValueDisplay = ValueDisplay & ValueList
|
967
|
+
|
968
|
+
ElseIf (UCase(IIsSchemaObject.Syntax) = "INTEGER") Then
|
969
|
+
ValueDisplay = ValueDisplay & UnsignedIntegerToString(ValueList)
|
970
|
+
Else
|
971
|
+
'WScript.Echo ValueList
|
972
|
+
ValueDisplay = ValueDisplay & ValueList
|
973
|
+
End If
|
974
|
+
|
975
|
+
' Display the output
|
976
|
+
WScript.Echo ValueDisplay
|
977
|
+
End If
|
978
|
+
|
979
|
+
If (Err.Number <> 0) Then
|
980
|
+
ReportError ()
|
981
|
+
WScript.Echo GetLocalizedResource("StrRes91") & ObjectParameter
|
982
|
+
WScript.Quit (Err.Number)
|
983
|
+
End If
|
984
|
+
|
985
|
+
GetCommand = 0 ' Success
|
986
|
+
|
987
|
+
End Function
|
988
|
+
|
989
|
+
|
990
|
+
''''''''''''''''''''''''''
|
991
|
+
'
|
992
|
+
' EnumCommand Function
|
993
|
+
'
|
994
|
+
' Enumerates all properties at a path in the metabase.
|
995
|
+
'
|
996
|
+
''''''''''''''''''''''''''
|
997
|
+
Function EnumCommand(Recurse, StartPath)
|
998
|
+
|
999
|
+
On Error Resume Next
|
1000
|
+
|
1001
|
+
Dim IIsObject
|
1002
|
+
Dim IIsObjectPath
|
1003
|
+
Dim IIsSchemaObject
|
1004
|
+
Dim IIsSchemaPath
|
1005
|
+
Dim ObjectPath
|
1006
|
+
Dim MachineName
|
1007
|
+
Dim ValueIndex
|
1008
|
+
Dim ValueList
|
1009
|
+
Dim ValueListArray
|
1010
|
+
Dim ValueString
|
1011
|
+
Dim PropertyName
|
1012
|
+
Dim PropertyAttribObj
|
1013
|
+
Dim PropertyListSet
|
1014
|
+
Dim PropertyList
|
1015
|
+
Dim PropertyObjPath
|
1016
|
+
Dim PropertyObject
|
1017
|
+
Dim ChildObject
|
1018
|
+
Dim ChildObjectName
|
1019
|
+
Dim EnumPathsOnly
|
1020
|
+
Dim EnumAllData
|
1021
|
+
Dim ErrMask
|
1022
|
+
Dim IsInherit
|
1023
|
+
|
1024
|
+
Dim PropertyDataType
|
1025
|
+
|
1026
|
+
Dim SpecialResult
|
1027
|
+
|
1028
|
+
Dim PathOnlyOption
|
1029
|
+
PathOnlyOption = "/P"
|
1030
|
+
|
1031
|
+
EnumCommand = 0 ' Assume Success
|
1032
|
+
EnumPathsOnly = False ' Assume that the user wants all of the data items
|
1033
|
+
EnumAllData = False ' Assume that the user wants only the actual data items
|
1034
|
+
|
1035
|
+
If (ArgCount = 1) Then
|
1036
|
+
ObjectPath = ""
|
1037
|
+
EnumPathsOnly = False
|
1038
|
+
ArgCount = 2
|
1039
|
+
ElseIf (ArgCount = 2) Then
|
1040
|
+
If UCase(Args(1)) = PathOnlyOption Then
|
1041
|
+
ObjectPath = ""
|
1042
|
+
EnumPathsOnly = True
|
1043
|
+
Else
|
1044
|
+
ObjectPath = Args(1)
|
1045
|
+
EnumPathsOnly = False
|
1046
|
+
End If
|
1047
|
+
ElseIf (ArgCount = 3) Then
|
1048
|
+
|
1049
|
+
If UCase(Args(1)) = PathOnlyOption Then
|
1050
|
+
ObjectPath = Args(2)
|
1051
|
+
EnumPathsOnly = True
|
1052
|
+
ElseIf UCase(Args(2)) = PathOnlyOption Then
|
1053
|
+
ObjectPath = Args(1)
|
1054
|
+
EnumPathsOnly = True
|
1055
|
+
Else
|
1056
|
+
WScript.Echo GetLocalizedResource("StrRes92")
|
1057
|
+
WScript.Quit (GENERAL_FAILURE)
|
1058
|
+
End If
|
1059
|
+
Else
|
1060
|
+
WScript.Echo GetLocalizedResource("StrRes93")
|
1061
|
+
WScript.Quit (GENERAL_FAILURE)
|
1062
|
+
End If
|
1063
|
+
|
1064
|
+
If StartPath <> "" Then ObjectPath = StartPath
|
1065
|
+
|
1066
|
+
SanitizePath ObjectPath
|
1067
|
+
MachineName = SeparateMachineName(ObjectPath)
|
1068
|
+
|
1069
|
+
IIsObjectPath = "IIS://" & MachineName
|
1070
|
+
If (ObjectPath <> "") Then
|
1071
|
+
IIsObjectPath = IIsObjectPath & "/" & ObjectPath
|
1072
|
+
End If
|
1073
|
+
|
1074
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
1075
|
+
|
1076
|
+
If (Err.Number <> 0) Then
|
1077
|
+
WScript.Echo
|
1078
|
+
ReportError ()
|
1079
|
+
WScript.Echo GetLocalizedResource("StrRes94") & ObjectPath
|
1080
|
+
WScript.Quit (Err.Number)
|
1081
|
+
End If
|
1082
|
+
|
1083
|
+
' Get the Schema of the object and enumerate through all of the properties
|
1084
|
+
IIsSchemaPath = IIsObject.Schema
|
1085
|
+
Set IIsSchemaObject = GetObject(IIsSchemaPath)
|
1086
|
+
|
1087
|
+
If (Err.Number <> 0) Then
|
1088
|
+
WScript.Echo
|
1089
|
+
ReportError ()
|
1090
|
+
WScript.Echo GetLocalizedResource("StrRes95") & IIsSchemaPath
|
1091
|
+
WScript.Quit (Err.Number)
|
1092
|
+
End If
|
1093
|
+
|
1094
|
+
ReDim PropertyListSet(1)
|
1095
|
+
PropertyListSet(0) = IIsSchemaObject.MandatoryProperties
|
1096
|
+
PropertyListSet(1) = IIsSchemaObject.OptionalProperties
|
1097
|
+
|
1098
|
+
If (Err.Number <> 0) Then
|
1099
|
+
WScript.Echo
|
1100
|
+
ReportError ()
|
1101
|
+
WScript.Echo GetLocalizedResource("StrRes96") & IIsSchemaPath
|
1102
|
+
WScript.Quit (Err.Number)
|
1103
|
+
End If
|
1104
|
+
|
1105
|
+
' This now checks for an empty OptionalProperties list
|
1106
|
+
If TypeName (PropertyListSet(1)) <> "Variant()" Then
|
1107
|
+
WScript.Echo
|
1108
|
+
WScript.Echo GetLocalizedResource("StrRes97")
|
1109
|
+
WScript.Echo
|
1110
|
+
ElseIf (UBound (PropertyListSet(1)) = -1) Then
|
1111
|
+
WScript.Echo
|
1112
|
+
WScript.Echo GetLocalizedResource("StrRes98")
|
1113
|
+
WScript.Echo
|
1114
|
+
End If
|
1115
|
+
|
1116
|
+
If (Not EnumPathsOnly) Then
|
1117
|
+
For Each PropertyList In PropertyListSet
|
1118
|
+
|
1119
|
+
For Each PropertyName In PropertyList
|
1120
|
+
If Err <> 0 Then
|
1121
|
+
Exit For
|
1122
|
+
End If
|
1123
|
+
|
1124
|
+
' Test to see if the property is even set at this node
|
1125
|
+
IsInherit = False
|
1126
|
+
Err.Clear
|
1127
|
+
Set PropertyAttribObj = IIsObject.GetPropertyAttribObj(PropertyName)
|
1128
|
+
If (Err.Number = 0) Then
|
1129
|
+
|
1130
|
+
If (PropertyAttribObj.IsInherit) Then
|
1131
|
+
IsInherit = True
|
1132
|
+
End If
|
1133
|
+
Err.Clear
|
1134
|
+
|
1135
|
+
If (IsInherit = False) Or (EnumAllData) Then
|
1136
|
+
' If the above statement is true, then the data exists here or the user wants it anyway.
|
1137
|
+
|
1138
|
+
PropertyObjPath = "IIS://" & MachineName & "/Schema/" & PropertyName
|
1139
|
+
Set PropertyObject = GetObject(PropertyObjPath)
|
1140
|
+
|
1141
|
+
If (Err.Number <> 0) Then
|
1142
|
+
WScript.Echo
|
1143
|
+
ReportError ()
|
1144
|
+
WScript.Echo GetLocalizedResource("StrRes99") & PropertyObjPath
|
1145
|
+
WScript.Echo GetLocalizedResource("StrRes100") & PropertyName
|
1146
|
+
WScript.Echo "PropertyObjPath: " & PropertyObjPath
|
1147
|
+
WScript.Echo
|
1148
|
+
EnumCommand = Err.Number
|
1149
|
+
Err.Clear
|
1150
|
+
End If
|
1151
|
+
|
1152
|
+
ValueList = ""
|
1153
|
+
ValueListArray = ""
|
1154
|
+
|
1155
|
+
PropertyDataType = UCase(PropertyObject.Syntax)
|
1156
|
+
Select Case PropertyDataType
|
1157
|
+
Case "STRING"
|
1158
|
+
ValueList = IIsObject.Get(PropertyName)
|
1159
|
+
If (IsSecureProperty(PropertyName,MachineName) = True) Then
|
1160
|
+
WScript.Echo PropertyName & Left(Spacer, Len(Spacer) - Len(PropertyName)) & ": " & "(" & PropertyDataType & ") " & """" & "**********" & """"
|
1161
|
+
Else
|
1162
|
+
If (Len(PropertyName) < SpacerSize) Then
|
1163
|
+
WScript.Echo PropertyName & Left(Spacer, Len(Spacer) - Len(PropertyName)) & ": " & "(" & PropertyDataType & ") """ & ValueList & """"
|
1164
|
+
Else
|
1165
|
+
WScript.Echo PropertyName & " : " & "(" & PropertyDataType & ")" & """" & ValueList & """"
|
1166
|
+
End If
|
1167
|
+
End If
|
1168
|
+
|
1169
|
+
Case "EXPANDSZ"
|
1170
|
+
ValueList = IIsObject.Get(PropertyName)
|
1171
|
+
If (Len(PropertyName) < SpacerSize) Then
|
1172
|
+
WScript.Echo PropertyName & Left(Spacer, Len(Spacer) - Len(PropertyName)) & ": " & "(" & PropertyDataType & ") """ & ValueList & """"
|
1173
|
+
Else
|
1174
|
+
WScript.Echo PropertyName & " : " & "(" & PropertyDataType & ") """ & ValueList & """"
|
1175
|
+
End If
|
1176
|
+
|
1177
|
+
Case "BINARY"
|
1178
|
+
ValueListArray = IIsObject.Get(PropertyName)
|
1179
|
+
|
1180
|
+
ValueList = "0x"
|
1181
|
+
|
1182
|
+
For ValueIndex = 0 To UBound(ValueListArray)
|
1183
|
+
ValueList = ValueList & ValueListArray(ValueIndex) & " "
|
1184
|
+
Next
|
1185
|
+
|
1186
|
+
If (Len(PropertyName) < SpacerSize) Then
|
1187
|
+
WScript.Echo PropertyName & Left(Spacer, Len(Spacer) - Len(PropertyName)) & ": " & "(" & PropertyDataType & ") " & ValueList
|
1188
|
+
Else
|
1189
|
+
WScript.Echo PropertyName & " : " & "(" & PropertyDataType & ") " & ValueList
|
1190
|
+
End If
|
1191
|
+
|
1192
|
+
Case "INTEGER"
|
1193
|
+
ValueList = IIsObject.Get(PropertyName)
|
1194
|
+
If (Len(PropertyName) < SpacerSize) Then
|
1195
|
+
WScript.Echo PropertyName & Left(Spacer, Len(Spacer) - Len(PropertyName)) & ": " & "(" & PropertyDataType & ") " & UnsignedIntegerToString(ValueList)
|
1196
|
+
Else
|
1197
|
+
WScript.Echo PropertyName & " : " & "(" & PropertyDataType & ") " & UnsignedIntegerToString(ValueList)
|
1198
|
+
End If
|
1199
|
+
|
1200
|
+
Case "BOOLEAN"
|
1201
|
+
ValueList = IIsObject.Get(PropertyName)
|
1202
|
+
If (Len(PropertyName) < SpacerSize) Then
|
1203
|
+
WScript.Echo PropertyName & Left(Spacer, Len(Spacer) - Len(PropertyName)) & ": " & "(" & PropertyDataType & ") " & ValueList
|
1204
|
+
Else
|
1205
|
+
WScript.Echo PropertyName & " : " & "(" & PropertyDataType & ") " & ValueList
|
1206
|
+
End If
|
1207
|
+
|
1208
|
+
Case "LIST"
|
1209
|
+
ValueList = IIsObject.Get(PropertyName)
|
1210
|
+
If (Len(PropertyName) < SpacerSize) Then
|
1211
|
+
WScript.Echo PropertyName & _
|
1212
|
+
Left(Spacer, Len(Spacer) - Len(PropertyName)) & _
|
1213
|
+
": " & "(" & PropertyDataType & ") (" & _
|
1214
|
+
(UBound (ValueList) + 1) & GetLocalizedResource("StrRes102")
|
1215
|
+
Else
|
1216
|
+
WScript.Echo PropertyName & " : " & "(" & PropertyDataType & ") (" & (UBound (ValueList) + 1) & GetLocalizedResource("StrRes102")
|
1217
|
+
End If
|
1218
|
+
ValueString = ""
|
1219
|
+
|
1220
|
+
For ValueIndex = 0 To UBound(ValueList)
|
1221
|
+
WScript.Echo " """ & ValueList(ValueIndex) & """"
|
1222
|
+
Next
|
1223
|
+
WScript.Echo
|
1224
|
+
|
1225
|
+
Case Else
|
1226
|
+
|
1227
|
+
If (IsSpecialGetProperty(PropertyName)) Then
|
1228
|
+
|
1229
|
+
SpecialResult = DoSpecialGetProp(ObjectPath, PropertyName, MachineName)
|
1230
|
+
Err.Clear
|
1231
|
+
|
1232
|
+
Else
|
1233
|
+
WScript.Echo
|
1234
|
+
WScript.Echo GetLocalizedResource("StrRes103") & """" & PropertyObject.Syntax & """" & GetLocalizedResource("StrRes104") & PropertyName
|
1235
|
+
ReportError
|
1236
|
+
WScript.Echo
|
1237
|
+
End If
|
1238
|
+
|
1239
|
+
End Select
|
1240
|
+
|
1241
|
+
End If ' End if data exists at the current node
|
1242
|
+
|
1243
|
+
Else ' Error during GetPropertyAttribObj
|
1244
|
+
Err.Clear 'ignore and go to the next property
|
1245
|
+
End If
|
1246
|
+
|
1247
|
+
If (Err.Number <> 0) Then
|
1248
|
+
WScript.Echo
|
1249
|
+
ReportError ()
|
1250
|
+
WScript.Echo GetLocalizedResource("StrRes105") & PropertyObjPath
|
1251
|
+
WScript.Echo GetLocalizedResource("StrRes100") & PropertyName
|
1252
|
+
WScript.Echo "PropertyObjPath: " & PropertyObjPath
|
1253
|
+
' If there is an ADS error, just ignore it and move on
|
1254
|
+
' otherwise, quit
|
1255
|
+
If ((Err.Number) >= &H80005000) And ((Err.Number) < &H80006000) Then
|
1256
|
+
Err.Clear
|
1257
|
+
WScript.Echo GetLocalizedResource("StrRes108")
|
1258
|
+
Else
|
1259
|
+
WScript.Quit (Err.Number)
|
1260
|
+
End If
|
1261
|
+
WScript.Echo
|
1262
|
+
End If
|
1263
|
+
Next
|
1264
|
+
Next
|
1265
|
+
|
1266
|
+
If (Err.Number <> 0) Then
|
1267
|
+
WScript.Echo GetLocalizedResource("StrRes109")
|
1268
|
+
ReportError ()
|
1269
|
+
WScript.Echo
|
1270
|
+
EnumCommand = Err.Number
|
1271
|
+
Err.Clear
|
1272
|
+
End If
|
1273
|
+
|
1274
|
+
End If ' End if (Not EnumPathsOnly)
|
1275
|
+
|
1276
|
+
' Now, enumerate the data paths
|
1277
|
+
For Each ChildObject In IIsObject
|
1278
|
+
If (Err.Number <> 0) Then Exit For
|
1279
|
+
|
1280
|
+
ChildObjectName = Right(ChildObject.AdsPath, Len(ChildObject.AdsPath) - 6)
|
1281
|
+
ChildObjectName = Right(ChildObjectName, Len(ChildObjectName) - InStr(ChildObjectName, "/") + 1)
|
1282
|
+
WScript.Echo "[" & ChildObjectName & "]"
|
1283
|
+
If (Recurse = True) And (ChildObjectName <> Args(1)) Then
|
1284
|
+
EnumCommand = EnumCommand(True, ChildObjectName)
|
1285
|
+
End If
|
1286
|
+
Next
|
1287
|
+
|
1288
|
+
If (Err.Number <> 0) Then
|
1289
|
+
WScript.Echo GetLocalizedResource("StrRes111")
|
1290
|
+
ReportError ()
|
1291
|
+
WScript.Echo
|
1292
|
+
EnumCommand = Err.Number
|
1293
|
+
Err.Clear
|
1294
|
+
End If
|
1295
|
+
|
1296
|
+
WScript.Echo ""
|
1297
|
+
|
1298
|
+
End Function
|
1299
|
+
|
1300
|
+
|
1301
|
+
''''''''''''''''''''''''''
|
1302
|
+
'
|
1303
|
+
' Create Function
|
1304
|
+
'
|
1305
|
+
' Creates a path in the metabase. An additional parameter that is
|
1306
|
+
' not found in mdutil is optional. That is the Object Type (KeyType)
|
1307
|
+
' If this is not specified, the object type will be assumed to be
|
1308
|
+
' IIsObject (which, of course, is useless).
|
1309
|
+
'
|
1310
|
+
''''''''''''''''''''''''''
|
1311
|
+
Function CreateCommand(ObjectTypeParam)
|
1312
|
+
|
1313
|
+
On Error Resume Next
|
1314
|
+
|
1315
|
+
Dim IIsObject
|
1316
|
+
Dim IIsObjectPath
|
1317
|
+
Dim IIsObjectRelativePath
|
1318
|
+
Dim NewObject
|
1319
|
+
Dim ObjectTypeName
|
1320
|
+
Dim ParentObjPath
|
1321
|
+
Dim ParentObjSize
|
1322
|
+
Dim FullAdsParentPath
|
1323
|
+
Dim MachineName
|
1324
|
+
Dim OpenErr
|
1325
|
+
|
1326
|
+
' Set the return code - assume success
|
1327
|
+
CreateCommand = 0
|
1328
|
+
|
1329
|
+
' Setup the parameters
|
1330
|
+
If (ArgCount = 2) Then
|
1331
|
+
If (ObjectTypeParam = "") Then
|
1332
|
+
ObjectTypeName = "IIsObject"
|
1333
|
+
Else
|
1334
|
+
ObjectTypeName = ObjectTypeParam
|
1335
|
+
End If
|
1336
|
+
ElseIf (ArgCount = 3) Then
|
1337
|
+
ObjectTypeName = Args(2)
|
1338
|
+
Else
|
1339
|
+
WScript.Echo GetLocalizedResource("StrRes112")
|
1340
|
+
DisplayHelpMessage
|
1341
|
+
WScript.Quit (GENERAL_FAILURE)
|
1342
|
+
End If
|
1343
|
+
|
1344
|
+
IIsObjectPath = Args(1)
|
1345
|
+
SanitizePath IIsObjectPath
|
1346
|
+
MachineName = SeparateMachineName(IIsObjectPath)
|
1347
|
+
|
1348
|
+
' Parse the path and determine if the parent exists.
|
1349
|
+
ParentObjSize = InStrRev(IIsObjectPath, "/")
|
1350
|
+
ParentObjPath = ""
|
1351
|
+
|
1352
|
+
If ParentObjSize <> 0 Then
|
1353
|
+
ParentObjPath = Left(IIsObjectPath, ParentObjSize - 1)
|
1354
|
+
IIsObjectRelativePath = Right(IIsObjectPath, Len(IIsObjectPath) - ParentObjSize)
|
1355
|
+
Else
|
1356
|
+
IIsObjectRelativePath = IIsObjectPath
|
1357
|
+
End If
|
1358
|
+
|
1359
|
+
If ParentObjPath <> "" Then
|
1360
|
+
FullAdsParentPath = "IIS://" & MachineName & "/" & ParentObjPath
|
1361
|
+
Else
|
1362
|
+
FullAdsParentPath = "IIS://" & MachineName
|
1363
|
+
End If
|
1364
|
+
'debug
|
1365
|
+
'WScript.Echo "Last Error: " & Err.Number
|
1366
|
+
'WScript.Echo "MachineName: " & MachineName
|
1367
|
+
'WScript.Echo "ParentObjPath: " & ParentObjPath
|
1368
|
+
'WScript.Echo "FullAdsParentPath: " & FullAdsParentPath
|
1369
|
+
'WScript.Echo "IIsObjectPath: " & IIsObjectPath
|
1370
|
+
'WScript.Echo "IIsObjectRelativePath: " & IIsObjectRelativePath
|
1371
|
+
'WScript.Echo "ObjectTypeName: " & ObjectTypeName
|
1372
|
+
|
1373
|
+
' First, attempt to open the parent path and add the new path.
|
1374
|
+
Set IIsObject = GetObject(FullAdsParentPath)
|
1375
|
+
If Err.Number <> 0 Then
|
1376
|
+
OpenErr = Err.Number
|
1377
|
+
OpenErrDesc = Err.Description
|
1378
|
+
Err.Clear
|
1379
|
+
' Attempt to get the Computer Object (IIS://LocalHost)
|
1380
|
+
Set IIsObject = GetObject("IIS://" & MachineName)
|
1381
|
+
If Err.Number <> 0 Then
|
1382
|
+
WScript.Echo
|
1383
|
+
ReportError ()
|
1384
|
+
WScript.Echo GetLocalizedResource("StrRes120") & IIsObjectPath
|
1385
|
+
WScript.Quit (Err.Number)
|
1386
|
+
End If
|
1387
|
+
End If
|
1388
|
+
|
1389
|
+
'Now, attempt to add the new object.
|
1390
|
+
If (OpenErr <> 0) Then
|
1391
|
+
Set NewObject = IIsObject.Create(ObjectTypeName, IIsObjectPath)
|
1392
|
+
Else
|
1393
|
+
Set NewObject = IIsObject.Create(ObjectTypeName, IIsObjectRelativePath)
|
1394
|
+
End If
|
1395
|
+
|
1396
|
+
If Err.Number <> 0 Then
|
1397
|
+
WScript.Echo
|
1398
|
+
ReportError ()
|
1399
|
+
WScript.Echo GetLocalizedResource("StrRes121") & IIsObjectPath
|
1400
|
+
WScript.Quit (Err.Number)
|
1401
|
+
End If
|
1402
|
+
|
1403
|
+
NewObject.Setinfo
|
1404
|
+
|
1405
|
+
If Err.Number <> 0 Then
|
1406
|
+
WScript.Echo
|
1407
|
+
ReportError ()
|
1408
|
+
WScript.Echo GetLocalizedResource("StrRes121") & IIsObjectPath
|
1409
|
+
WScript.Quit (Err.Number)
|
1410
|
+
End If
|
1411
|
+
|
1412
|
+
|
1413
|
+
' Now, if the parent object was not created, generate a warning.
|
1414
|
+
If OpenErr <> 0 Then
|
1415
|
+
WScript.Echo
|
1416
|
+
WScript.Echo GetLocalizedResource("StrRes123") & ParentObjPath & GetLocalizedResource("StrRes124")
|
1417
|
+
WScript.Echo GetLocalizedResource("StrRes125")
|
1418
|
+
WScript.Echo GetLocalizedResource("StrRes126")
|
1419
|
+
WScript.Echo GetLocalizedResource("StrRes127")
|
1420
|
+
WScript.Echo
|
1421
|
+
CreateCommand = GENERAL_WARNING
|
1422
|
+
End If
|
1423
|
+
|
1424
|
+
If UCase(ObjectTypeName) = "IISOBJECT" Then
|
1425
|
+
WScript.Echo
|
1426
|
+
WScript.Echo GetLocalizedResource("StrRes128")
|
1427
|
+
WScript.Echo GetLocalizedResource("StrRes129")
|
1428
|
+
WScript.Echo GetLocalizedResource("StrRes130")
|
1429
|
+
WScript.Echo
|
1430
|
+
CreateCommand = GENERAL_WARNING
|
1431
|
+
End If
|
1432
|
+
|
1433
|
+
WScript.Echo GetLocalizedResource("StrRes131") & IIsObjectPath & """"
|
1434
|
+
End Function
|
1435
|
+
|
1436
|
+
''''''''''''''''''''''''''
|
1437
|
+
'
|
1438
|
+
' Delete Function
|
1439
|
+
'
|
1440
|
+
' Deletes a path in the metabase.
|
1441
|
+
'
|
1442
|
+
''''''''''''''''''''''''''
|
1443
|
+
Function DeleteCommand()
|
1444
|
+
|
1445
|
+
On Error Resume Next
|
1446
|
+
|
1447
|
+
Dim IIsObject
|
1448
|
+
Dim IIsObjectPath
|
1449
|
+
|
1450
|
+
Dim ObjectPath
|
1451
|
+
Dim ObjectParam
|
1452
|
+
Dim MachineName
|
1453
|
+
|
1454
|
+
Dim DummyVariant
|
1455
|
+
Dim DeletePathOnly
|
1456
|
+
ReDim DummyVariant(0)
|
1457
|
+
DummyVariant(0) = "Bogus"
|
1458
|
+
|
1459
|
+
' Set the return code - assume success
|
1460
|
+
DeleteCommand = 0
|
1461
|
+
|
1462
|
+
' Setup the parameters
|
1463
|
+
If (ArgCount <> 2) Then
|
1464
|
+
WScript.Echo GetLocalizedResource("StrRes132")
|
1465
|
+
WScript.Quit (GENERAL_FAILURE)
|
1466
|
+
End If
|
1467
|
+
|
1468
|
+
ObjectPath = Args(1)
|
1469
|
+
|
1470
|
+
' Check and see if the user is specifically asking to delete the path
|
1471
|
+
DeletePathOnly = False
|
1472
|
+
If Right(ObjectPath, 1) = "/" Then
|
1473
|
+
DeletePathOnly = True
|
1474
|
+
End If
|
1475
|
+
|
1476
|
+
' Sanitize the path and split parameter and path
|
1477
|
+
SanitizePath ObjectPath
|
1478
|
+
MachineName = SeparateMachineName(ObjectPath)
|
1479
|
+
ObjectParam = SplitParam(ObjectPath)
|
1480
|
+
|
1481
|
+
' Open the parent object
|
1482
|
+
IIsObjectPath = "IIS://" & MachineName
|
1483
|
+
If ObjectPath <> "" Then
|
1484
|
+
IIsObjectPath = IIsObjectPath & "/" & ObjectPath
|
1485
|
+
End If
|
1486
|
+
|
1487
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
1488
|
+
|
1489
|
+
If Err.Number <> 0 Then
|
1490
|
+
WScript.Echo
|
1491
|
+
ReportError ()
|
1492
|
+
WScript.Echo GetLocalizedResource("StrRes133") & ObjectPath & "/" & ObjectParam
|
1493
|
+
WScript.Quit (Err.Number)
|
1494
|
+
End If
|
1495
|
+
|
1496
|
+
' If they did not specifically ask to delete the path, then attempt to delete the property
|
1497
|
+
If Not DeletePathOnly Then
|
1498
|
+
' Try to delete the property
|
1499
|
+
|
1500
|
+
' ADS_PROPERTY_CLEAR used to be defined, but it isn't anymore.
|
1501
|
+
'IIsObject.PutEx ADS_PROPERTY_CLEAR, ObjectParam, DummyVariant
|
1502
|
+
IIsObject.PutEx "1", ObjectParam, DummyVariant
|
1503
|
+
|
1504
|
+
' If it succeeded, then just return, else continue and try to delete the path
|
1505
|
+
If Err.Number = 0 Then
|
1506
|
+
IIsObject.SetInfo
|
1507
|
+
WScript.Echo GetLocalizedResource("StrRes134") & ObjectParam & """"
|
1508
|
+
Exit Function
|
1509
|
+
End If
|
1510
|
+
Err.Clear
|
1511
|
+
End If
|
1512
|
+
|
1513
|
+
' Try to just delete the path
|
1514
|
+
IIsObject.Delete "IIsObject", ObjectParam
|
1515
|
+
|
1516
|
+
If Err.Number <> 0 Then
|
1517
|
+
WScript.Echo
|
1518
|
+
ReportError ()
|
1519
|
+
WScript.Echo GetLocalizedResource("StrRes135") & ObjectPath & "/" & ObjectParam
|
1520
|
+
WScript.Quit (Err.Number)
|
1521
|
+
End If
|
1522
|
+
|
1523
|
+
WScript.Echo GetLocalizedResource("StrRes136") & ObjectPath & "/" & ObjectParam & """"
|
1524
|
+
|
1525
|
+
Exit Function
|
1526
|
+
|
1527
|
+
End Function
|
1528
|
+
|
1529
|
+
|
1530
|
+
''''''''''''''''''''''''''
|
1531
|
+
'
|
1532
|
+
' EnumAllCommand
|
1533
|
+
'
|
1534
|
+
' Enumerates all data and all properties in the metabase under the current path.
|
1535
|
+
'
|
1536
|
+
''''''''''''''''''''''''''
|
1537
|
+
Function EnumAllCommand()
|
1538
|
+
On Error Resume Next
|
1539
|
+
|
1540
|
+
WScript.Echo GetLocalizedResource("StrRes137")
|
1541
|
+
|
1542
|
+
End Function
|
1543
|
+
|
1544
|
+
|
1545
|
+
''''''''''''''''''''''''''
|
1546
|
+
'
|
1547
|
+
' CopyMoveCommand
|
1548
|
+
'
|
1549
|
+
' Copies a path in the metabase to another path.
|
1550
|
+
'
|
1551
|
+
''''''''''''''''''''''''''
|
1552
|
+
Function CopyMoveCommand(bCopyFlag)
|
1553
|
+
On Error Resume Next
|
1554
|
+
|
1555
|
+
Dim SrcObjectPath
|
1556
|
+
Dim DestObjectPath
|
1557
|
+
Dim DestObject
|
1558
|
+
|
1559
|
+
Dim ParentObjectPath
|
1560
|
+
Dim ParentRelativePath
|
1561
|
+
Dim ParentObject
|
1562
|
+
|
1563
|
+
Dim MachineName
|
1564
|
+
|
1565
|
+
Dim TmpDestLeftPath
|
1566
|
+
Dim TmpSrcLeftPath
|
1567
|
+
|
1568
|
+
CopyMoveCommand = 0 ' Assume Success
|
1569
|
+
|
1570
|
+
If ArgCount <> 3 Then
|
1571
|
+
WScript.Echo GetLocalizedResource("StrRes138")
|
1572
|
+
WScript.Quit (GENERAL_FAILURE)
|
1573
|
+
End If
|
1574
|
+
|
1575
|
+
SrcObjectPath = Args(1)
|
1576
|
+
DestObjectPath = Args(2)
|
1577
|
+
|
1578
|
+
SanitizePath SrcObjectPath
|
1579
|
+
SanitizePath DestObjectPath
|
1580
|
+
MachineName = SeparateMachineName(SrcObjectPath)
|
1581
|
+
ParentObjectPath = "IIS://" & MachineName
|
1582
|
+
|
1583
|
+
' Extract the left part of the paths until there are no more left parts to extract
|
1584
|
+
Do
|
1585
|
+
TmpSrcLeftPath = SplitLeftPath(SrcObjectPath)
|
1586
|
+
TmpDestLeftPath = SplitLeftPath(DestObjectPath)
|
1587
|
+
|
1588
|
+
If (SrcObjectPath = "") Or (DestObjectPath = "") Then
|
1589
|
+
SrcObjectPath = TmpSrcLeftPath & "/" & SrcObjectPath
|
1590
|
+
DestObjectPath = TmpDestLeftPath & "/" & DestObjectPath
|
1591
|
+
Exit Do
|
1592
|
+
End If
|
1593
|
+
|
1594
|
+
If (TmpSrcLeftPath <> TmpDestLeftPath) Then
|
1595
|
+
SrcObjectPath = TmpSrcLeftPath & "/" & SrcObjectPath
|
1596
|
+
DestObjectPath = TmpDestLeftPath & "/" & DestObjectPath
|
1597
|
+
Exit Do
|
1598
|
+
End If
|
1599
|
+
|
1600
|
+
ParentObjectPath = ParentObjectPath & "/" & TmpSrcLeftPath
|
1601
|
+
ParentRelativePath = ParentRelativePath & "/" & TmpSrcLeftPath
|
1602
|
+
|
1603
|
+
Loop
|
1604
|
+
|
1605
|
+
SanitizePath SrcObjectPath
|
1606
|
+
SanitizePath DestObjectPath
|
1607
|
+
SanitizePath ParentObjectPath
|
1608
|
+
|
1609
|
+
' Now, open the parent object and Copy/Move the objects
|
1610
|
+
Set ParentObject = GetObject(ParentObjectPath)
|
1611
|
+
|
1612
|
+
If (Err.Number <> 0) Then
|
1613
|
+
ReportError ()
|
1614
|
+
WScript.Echo GetLocalizedResource("StrRes139") & ParentObjectPath
|
1615
|
+
WScript.Quit (Err.Number)
|
1616
|
+
End If
|
1617
|
+
|
1618
|
+
If (bCopyFlag) Then
|
1619
|
+
Set DestObject = ParentObject.CopyHere(SrcObjectPath, DestObjectPath)
|
1620
|
+
Else
|
1621
|
+
Set DestObject = ParentObject.MoveHere(SrcObjectPath, DestObjectPath)
|
1622
|
+
End If
|
1623
|
+
|
1624
|
+
If (Err.Number <> 0) Then
|
1625
|
+
ReportError ()
|
1626
|
+
WScript.Echo GetLocalizedResource("StrRes140")
|
1627
|
+
WScript.Quit (Err.Number)
|
1628
|
+
End If
|
1629
|
+
|
1630
|
+
If (bCopyFlag) Then
|
1631
|
+
WScript.Echo GetLocalizedResource("StrRes141") & ParentRelativePath & "/" & SrcObjectPath & GetLocalizedResource("StrRes142") & ParentRelativePath & "/" & DestObjectPath
|
1632
|
+
Else
|
1633
|
+
WScript.Echo GetLocalizedResource("StrRes143") & ParentRelativePath & "/" & SrcObjectPath & GetLocalizedResource("StrRes142") & ParentRelativePath & "/" & DestObjectPath
|
1634
|
+
End If
|
1635
|
+
|
1636
|
+
End Function
|
1637
|
+
|
1638
|
+
''''''''''''''''''''''''''
|
1639
|
+
'
|
1640
|
+
' StartServerCommand
|
1641
|
+
'
|
1642
|
+
' Starts a server in the metabase.
|
1643
|
+
'
|
1644
|
+
''''''''''''''''''''''''''
|
1645
|
+
Function StartServerCommand()
|
1646
|
+
|
1647
|
+
On Error Resume Next
|
1648
|
+
|
1649
|
+
Dim IIsObject
|
1650
|
+
Dim IIsObjectPath
|
1651
|
+
Dim ObjectPath
|
1652
|
+
Dim MachineName
|
1653
|
+
|
1654
|
+
If ArgCount <> 2 Then
|
1655
|
+
WScript.Echo GetLocalizedResource("StrRes145")
|
1656
|
+
WScript.Quit (GENERAL_FAILURE)
|
1657
|
+
End If
|
1658
|
+
|
1659
|
+
ObjectPath = Args(1)
|
1660
|
+
SanitizePath ObjectPath
|
1661
|
+
MachineName = SeparateMachineName(ObjectPath)
|
1662
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
1663
|
+
|
1664
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
1665
|
+
|
1666
|
+
If (Err.Number <> 0) Then
|
1667
|
+
ReportError ()
|
1668
|
+
WScript.Echo GetLocalizedResource("StrRes146") & ObjectPath
|
1669
|
+
WScript.Quit (Err.Number)
|
1670
|
+
End If
|
1671
|
+
'debug
|
1672
|
+
'WScript.echo "About to start server. Last Error: " & Err.Number
|
1673
|
+
IIsObject.Start
|
1674
|
+
'WScript.echo "After starting server. Last Error: " & Err.Number
|
1675
|
+
If (Err.Number <> 0) Then
|
1676
|
+
ReportError ()
|
1677
|
+
WScript.Echo GetLocalizedResource("StrRes147") & ObjectPath
|
1678
|
+
WScript.Quit (Err.Number)
|
1679
|
+
End If
|
1680
|
+
WScript.Echo GetLocalizedResource("StrRes148") & ObjectPath & GetLocalizedResource("StrRes149")
|
1681
|
+
|
1682
|
+
End Function
|
1683
|
+
|
1684
|
+
''''''''''''''''''''''''''
|
1685
|
+
'
|
1686
|
+
' StopServerCommand
|
1687
|
+
'
|
1688
|
+
' Stops a server in the metabase.
|
1689
|
+
'
|
1690
|
+
''''''''''''''''''''''''''
|
1691
|
+
Function StopServerCommand()
|
1692
|
+
|
1693
|
+
On Error Resume Next
|
1694
|
+
|
1695
|
+
Dim IIsObject
|
1696
|
+
Dim IIsObjectPath
|
1697
|
+
Dim ObjectPath
|
1698
|
+
Dim MachineName
|
1699
|
+
|
1700
|
+
If ArgCount <> 2 Then
|
1701
|
+
WScript.Echo GetLocalizedResource("StrRes150")
|
1702
|
+
WScript.Quit (GENERAL_FAILURE)
|
1703
|
+
End If
|
1704
|
+
|
1705
|
+
ObjectPath = Args(1)
|
1706
|
+
SanitizePath ObjectPath
|
1707
|
+
MachineName = SeparateMachineName(ObjectPath)
|
1708
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
1709
|
+
|
1710
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
1711
|
+
|
1712
|
+
If (Err.Number <> 0) Then
|
1713
|
+
ReportError ()
|
1714
|
+
WScript.Echo GetLocalizedResource("StrRes151") & ObjectPath
|
1715
|
+
WScript.Quit (Err.Number)
|
1716
|
+
End If
|
1717
|
+
|
1718
|
+
IIsObject.Stop
|
1719
|
+
If (Err.Number <> 0) Then
|
1720
|
+
ReportError ()
|
1721
|
+
WScript.Echo GetLocalizedResource("StrRes152") & ObjectPath
|
1722
|
+
WScript.Quit (Err.Number)
|
1723
|
+
End If
|
1724
|
+
WScript.Echo GetLocalizedResource("StrRes148") & ObjectPath & GetLocalizedResource("StrRes154")
|
1725
|
+
|
1726
|
+
End Function
|
1727
|
+
|
1728
|
+
''''''''''''''''''''''''''
|
1729
|
+
'
|
1730
|
+
' PauseServerCommand
|
1731
|
+
'
|
1732
|
+
' Pauses a server in the metabase.
|
1733
|
+
'
|
1734
|
+
''''''''''''''''''''''''''
|
1735
|
+
Function PauseServerCommand()
|
1736
|
+
|
1737
|
+
On Error Resume Next
|
1738
|
+
|
1739
|
+
Dim IIsObject
|
1740
|
+
Dim IIsObjectPath
|
1741
|
+
Dim ObjectPath
|
1742
|
+
Dim MachineName
|
1743
|
+
|
1744
|
+
If ArgCount <> 2 Then
|
1745
|
+
WScript.Echo GetLocalizedResource("StrRes155")
|
1746
|
+
WScript.Quit (GENERAL_FAILURE)
|
1747
|
+
End If
|
1748
|
+
|
1749
|
+
ObjectPath = Args(1)
|
1750
|
+
SanitizePath ObjectPath
|
1751
|
+
MachineName = SeparateMachineName(ObjectPath)
|
1752
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
1753
|
+
|
1754
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
1755
|
+
|
1756
|
+
If (Err.Number <> 0) Then
|
1757
|
+
ReportError ()
|
1758
|
+
WScript.Echo GetLocalizedResource("StrRes156") & ObjectPath
|
1759
|
+
WScript.Quit (Err.Number)
|
1760
|
+
End If
|
1761
|
+
|
1762
|
+
IIsObject.Pause
|
1763
|
+
If (Err.Number <> 0) Then
|
1764
|
+
ReportError ()
|
1765
|
+
WScript.Echo GetLocalizedResource("StrRes157") & ObjectPath
|
1766
|
+
WScript.Quit (Err.Number)
|
1767
|
+
End If
|
1768
|
+
WScript.Echo GetLocalizedResource("StrRes148") & ObjectPath & GetLocalizedResource("StrRes159")
|
1769
|
+
|
1770
|
+
End Function
|
1771
|
+
|
1772
|
+
''''''''''''''''''''''''''
|
1773
|
+
'
|
1774
|
+
' ContinueServerCommand
|
1775
|
+
'
|
1776
|
+
' Continues a server in the metabase.
|
1777
|
+
'
|
1778
|
+
''''''''''''''''''''''''''
|
1779
|
+
Function ContinueServerCommand()
|
1780
|
+
|
1781
|
+
On Error Resume Next
|
1782
|
+
|
1783
|
+
Dim IIsObject
|
1784
|
+
Dim IIsObjectPath
|
1785
|
+
Dim ObjectPath
|
1786
|
+
Dim MachineName
|
1787
|
+
|
1788
|
+
If ArgCount <> 2 Then
|
1789
|
+
WScript.Echo GetLocalizedResource("StrRes160")
|
1790
|
+
WScript.Quit (GENERAL_FAILURE)
|
1791
|
+
End If
|
1792
|
+
|
1793
|
+
ObjectPath = Args(1)
|
1794
|
+
SanitizePath ObjectPath
|
1795
|
+
MachineName = SeparateMachineName(ObjectPath)
|
1796
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
1797
|
+
|
1798
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
1799
|
+
|
1800
|
+
If (Err.Number <> 0) Then
|
1801
|
+
ReportError ()
|
1802
|
+
WScript.Echo GetLocalizedResource("StrRes161") & ObjectPath
|
1803
|
+
WScript.Quit (Err.Number)
|
1804
|
+
End If
|
1805
|
+
|
1806
|
+
IIsObject.Continue
|
1807
|
+
If (Err.Number <> 0) Then
|
1808
|
+
ReportError ()
|
1809
|
+
WScript.Echo GetLocalizedResource("StrRes162") & ObjectPath
|
1810
|
+
WScript.Quit (Err.Number)
|
1811
|
+
End If
|
1812
|
+
WScript.Echo GetLocalizedResource("StrRes148") & ObjectPath & GetLocalizedResource("StrRes164")
|
1813
|
+
|
1814
|
+
End Function
|
1815
|
+
|
1816
|
+
|
1817
|
+
Function FindData()
|
1818
|
+
' FindData will accept 1 parameter from the command line - the node and
|
1819
|
+
' property to search for (i.e. w3svc/1/ServerComment)
|
1820
|
+
|
1821
|
+
On Error Resume Next
|
1822
|
+
|
1823
|
+
Dim ObjectPath
|
1824
|
+
Dim ObjectParameter
|
1825
|
+
Dim NewObjectparameter
|
1826
|
+
Dim MachineName
|
1827
|
+
|
1828
|
+
Dim IIsObjectPath
|
1829
|
+
Dim IIsObject
|
1830
|
+
|
1831
|
+
Dim Path
|
1832
|
+
Dim PathList
|
1833
|
+
Dim I
|
1834
|
+
|
1835
|
+
FindData = 0 ' Assume Success
|
1836
|
+
|
1837
|
+
If ArgCount <> 2 Then
|
1838
|
+
WScript.Echo GetLocalizedResource("StrRes165")
|
1839
|
+
WScript.Quit (GENERAL_FAILURE)
|
1840
|
+
End If
|
1841
|
+
|
1842
|
+
ObjectPath = Args(1)
|
1843
|
+
|
1844
|
+
SanitizePath ObjectPath
|
1845
|
+
MachineName = SeparateMachineName(ObjectPath)
|
1846
|
+
ObjectParameter = SplitParam(ObjectPath)
|
1847
|
+
|
1848
|
+
' Since people may still want to use MDUTIL parameter names
|
1849
|
+
' we should still do the GET translation of parameter names.
|
1850
|
+
NewObjectparameter = MapSpecGetParamName(ObjectParameter)
|
1851
|
+
ObjectParameter = NewObjectparameter
|
1852
|
+
|
1853
|
+
If ObjectPath = "" Then
|
1854
|
+
IIsObjectPath = "IIS://" & MachineName
|
1855
|
+
Else
|
1856
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
1857
|
+
End If
|
1858
|
+
|
1859
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
1860
|
+
|
1861
|
+
If (Err.Number <> 0) Then
|
1862
|
+
ReportError ()
|
1863
|
+
WScript.Echo GetLocalizedResource("StrRes166") & ObjectPath
|
1864
|
+
WScript.Quit (Err.Number)
|
1865
|
+
End If
|
1866
|
+
|
1867
|
+
' Now, list out all the places where this property exists.
|
1868
|
+
PathList = IIsObject.GetDataPaths(ObjectParameter, IIS_DATA_INHERIT)
|
1869
|
+
If Err.Number <> 0 Then PathList = IIsObject.GetDataPaths(ObjectParameter, IIS_DATA_NO_INHERIT)
|
1870
|
+
|
1871
|
+
If (Err.Number <> 0) Then
|
1872
|
+
ReportError ()
|
1873
|
+
WScript.Echo GetLocalizedResource("StrRes167") & ObjectPath
|
1874
|
+
WScript.Quit (Err.Number)
|
1875
|
+
End If
|
1876
|
+
|
1877
|
+
If UBound(PathList) < 0 Then
|
1878
|
+
WScript.Echo GetLocalizedResource("StrRes168") & ObjectParameter & GetLocalizedResource("StrRes169") & ObjectPath
|
1879
|
+
Else
|
1880
|
+
WScript.Echo GetLocalizedResource("StrRes168") & ObjectParameter & GetLocalizedResource("StrRes171")
|
1881
|
+
|
1882
|
+
For Each Path In PathList
|
1883
|
+
Path = Right(Path, Len(Path) - 6)
|
1884
|
+
Path = Right(Path, Len(Path) - InStr(Path, "/"))
|
1885
|
+
WScript.Echo " " & Path
|
1886
|
+
Next
|
1887
|
+
End If
|
1888
|
+
|
1889
|
+
If (Err.Number <> 0) Then
|
1890
|
+
ReportError ()
|
1891
|
+
WScript.Echo GetLocalizedResource("StrRes172") & ObjectPath
|
1892
|
+
WScript.Quit (Err.Number)
|
1893
|
+
End If
|
1894
|
+
|
1895
|
+
End Function
|
1896
|
+
|
1897
|
+
'''''''''''''''''''''
|
1898
|
+
'
|
1899
|
+
' MimeMapGet
|
1900
|
+
'
|
1901
|
+
' Special function for displaying a MimeMap property
|
1902
|
+
'
|
1903
|
+
'''''''''''''''''''''
|
1904
|
+
Function MimeMapGet(ObjectPath, MachineName)
|
1905
|
+
On Error Resume Next
|
1906
|
+
|
1907
|
+
Dim MimePath
|
1908
|
+
|
1909
|
+
Dim MimeMapList
|
1910
|
+
Dim MimeMapObject
|
1911
|
+
Dim MimeEntry
|
1912
|
+
Dim MimeEntryIndex
|
1913
|
+
|
1914
|
+
Dim MimeStr
|
1915
|
+
Dim MimeOutPutStr
|
1916
|
+
|
1917
|
+
Dim DataPathList
|
1918
|
+
Dim DataPath
|
1919
|
+
|
1920
|
+
MimeMapGet = 0 ' Assume Success
|
1921
|
+
|
1922
|
+
MimePath = "IIS://" & MachineName
|
1923
|
+
If ObjectPath <> "" Then MimePath = MimePath & "/" & ObjectPath
|
1924
|
+
|
1925
|
+
' Get the object that contains the mimemap
|
1926
|
+
Set MimeMapObject = GetObject(MimePath)
|
1927
|
+
If (Err.Number <> 0) Then
|
1928
|
+
ReportError ()
|
1929
|
+
WScript.Echo GetLocalizedResource("StrRes173") & ObjectPath
|
1930
|
+
WScript.Quit (Err.Number)
|
1931
|
+
End If
|
1932
|
+
|
1933
|
+
' Test to see if the property is ACTUALLY set at this node
|
1934
|
+
DataPathList = MimeMapObject.GetDataPaths("MimeMap", IIS_DATA_INHERIT)
|
1935
|
+
If Err.Number <> 0 Then DataPathList = IIsObject.GetDataPaths(MimeMap, IIS_DATA_NO_INHERIT)
|
1936
|
+
Err.Clear
|
1937
|
+
|
1938
|
+
' If the data is not set anywhere, then stop the madness
|
1939
|
+
If (UBound(DataPathList) < 0) Then
|
1940
|
+
MimeMapGet = &H80005006 ' end with property not set error
|
1941
|
+
Exit Function
|
1942
|
+
End If
|
1943
|
+
|
1944
|
+
DataPath = DataPathList(0)
|
1945
|
+
SanitizePath DataPath
|
1946
|
+
|
1947
|
+
' Test to see if the item is actually set HERE
|
1948
|
+
If UCase(DataPath) <> UCase(MimePath) Then
|
1949
|
+
MimeMapGet = &H80005006 ' end with property not set error
|
1950
|
+
Exit Function
|
1951
|
+
End If
|
1952
|
+
|
1953
|
+
' Get the mime map list from the object
|
1954
|
+
MimeMapList = MimeMapObject.Get("MimeMap")
|
1955
|
+
If (Err.Number <> 0) Then
|
1956
|
+
ReportError ()
|
1957
|
+
WScript.Echo GetLocalizedResource("StrRes173") & ObjectPath
|
1958
|
+
WScript.Quit (Err.Number)
|
1959
|
+
End If
|
1960
|
+
|
1961
|
+
MimeOutPutStr = "MimeMap : (MimeMapList) "
|
1962
|
+
|
1963
|
+
' Enumerate the Mime Entries
|
1964
|
+
For MimeEntryIndex = 0 To UBound(MimeMapList)
|
1965
|
+
Set MimeEntry = MimeMapList(MimeEntryIndex)
|
1966
|
+
MimeOutPutStr = MimeOutPutStr & """" & MimeEntry.Extension & "," & MimeEntry.MimeType & """ "
|
1967
|
+
Next
|
1968
|
+
|
1969
|
+
If (Err.Number <> 0) Then
|
1970
|
+
ReportError ()
|
1971
|
+
WScript.Echo GetLocalizedResource("StrRes175")
|
1972
|
+
WScript.Quit (Err.Number)
|
1973
|
+
End If
|
1974
|
+
|
1975
|
+
WScript.Echo MimeOutPutStr
|
1976
|
+
|
1977
|
+
End Function
|
1978
|
+
|
1979
|
+
|
1980
|
+
|
1981
|
+
Function MimeMapSet(ObjectPath, ObjectParameter, MachineName)
|
1982
|
+
On Error Resume Next
|
1983
|
+
|
1984
|
+
Dim MimePath
|
1985
|
+
|
1986
|
+
Dim MimeEntryIndex
|
1987
|
+
Dim MimeMapList()
|
1988
|
+
Dim MimeMapObject
|
1989
|
+
Dim MimeEntry
|
1990
|
+
|
1991
|
+
Dim MimeStr
|
1992
|
+
Dim MimeOutPutStr
|
1993
|
+
|
1994
|
+
MimeMapSet = 0 ' Assume Success
|
1995
|
+
|
1996
|
+
' First, check the number of args
|
1997
|
+
If ArgCount < 3 Then
|
1998
|
+
WScript.Echo GetLocalizedResource("StrRes176")
|
1999
|
+
WScript.Quit (GENERAL_FAILURE)
|
2000
|
+
End If
|
2001
|
+
|
2002
|
+
|
2003
|
+
MimePath = "IIS://" & MachineName
|
2004
|
+
If ObjectPath <> "" Then MimePath = MimePath & "/" & ObjectPath
|
2005
|
+
|
2006
|
+
' Get the object that contains the mimemap
|
2007
|
+
Set MimeMapObject = GetObject(MimePath)
|
2008
|
+
If (Err.Number <> 0) Then
|
2009
|
+
ReportError ()
|
2010
|
+
WScript.Echo GetLocalizedResource("StrRes177") & ObjectPath
|
2011
|
+
WScript.Quit (Err.Number)
|
2012
|
+
End If
|
2013
|
+
|
2014
|
+
' Create a new MimeMapList of Mime Entries
|
2015
|
+
ReDim MimeMapList(ArgCount - 3)
|
2016
|
+
|
2017
|
+
MimeOutPutStr = "MimeMap : (MimeMapList) "
|
2018
|
+
|
2019
|
+
' Fill the list with mime entries
|
2020
|
+
For MimeEntryIndex = 0 To UBound(MimeMapList)
|
2021
|
+
|
2022
|
+
MimeStr = Args(2 + MimeEntryIndex)
|
2023
|
+
MimeOutPutStr = MimeOutPutStr & """" & MimeStr & """ "
|
2024
|
+
|
2025
|
+
Set MimeEntry = CreateObject("MimeMap")
|
2026
|
+
|
2027
|
+
MimeEntry.MimeType = Right (MimeStr, Len(MimeStr) - InStr(MimeStr, ","))
|
2028
|
+
MimeEntry.Extension = Left(MimeStr, InStr(MimeStr, ",") - 1)
|
2029
|
+
|
2030
|
+
Set MimeMapList(MimeEntryIndex) = MimeEntry
|
2031
|
+
Next
|
2032
|
+
|
2033
|
+
If (Err.Number <> 0) Then
|
2034
|
+
ReportError ()
|
2035
|
+
WScript.Echo GetLocalizedResource("StrRes175")
|
2036
|
+
WScript.Quit (Err.Number)
|
2037
|
+
End If
|
2038
|
+
|
2039
|
+
MimeMapObject.MimeMap = MimeMapList
|
2040
|
+
MimeMapObject.Setinfo
|
2041
|
+
|
2042
|
+
If (Err.Number <> 0) Then
|
2043
|
+
ReportError ()
|
2044
|
+
WScript.Echo GetLocalizedResource("StrRes179")
|
2045
|
+
WScript.Quit (Err.Number)
|
2046
|
+
End If
|
2047
|
+
|
2048
|
+
WScript.Echo MimeOutPutStr
|
2049
|
+
|
2050
|
+
End Function
|
2051
|
+
|
2052
|
+
''''''''''''''''''''''''''
|
2053
|
+
'
|
2054
|
+
' IsSpecialGetProperty
|
2055
|
+
'
|
2056
|
+
' Checks to see if the property requires special processing in order to
|
2057
|
+
' display its contents.
|
2058
|
+
'
|
2059
|
+
''''''''''''''''''''''''''
|
2060
|
+
Function IsSpecialGetProperty(ObjectParameter)
|
2061
|
+
|
2062
|
+
On Error Resume Next
|
2063
|
+
|
2064
|
+
Select Case UCase(ObjectParameter)
|
2065
|
+
Case "MIMEMAP"
|
2066
|
+
IsSpecialGetProperty = True
|
2067
|
+
Case Else
|
2068
|
+
IsSpecialGetProperty = False
|
2069
|
+
End Select
|
2070
|
+
|
2071
|
+
End Function
|
2072
|
+
|
2073
|
+
''''''''''''''''''''''''''
|
2074
|
+
'
|
2075
|
+
' DoSpecialGetProp
|
2076
|
+
'
|
2077
|
+
' Checks to see if the property requires special processing in order to
|
2078
|
+
' display its contents.
|
2079
|
+
'
|
2080
|
+
''''''''''''''''''''''''''
|
2081
|
+
Function DoSpecialGetProp(ObjectPath, ObjectParameter, MachineName)
|
2082
|
+
|
2083
|
+
On Error Resume Next
|
2084
|
+
|
2085
|
+
Select Case UCase(ObjectParameter)
|
2086
|
+
Case "MIMEMAP"
|
2087
|
+
DoSpecialGetProp = MimeMapGet(ObjectPath, MachineName)
|
2088
|
+
Case Else
|
2089
|
+
DoSpecialGetProp = False
|
2090
|
+
End Select
|
2091
|
+
|
2092
|
+
End Function
|
2093
|
+
|
2094
|
+
|
2095
|
+
|
2096
|
+
''''''''''''''''''''''''''
|
2097
|
+
'
|
2098
|
+
' IsSpecialSetProperty
|
2099
|
+
'
|
2100
|
+
' Checks to see if the property is a type that needs to be handled
|
2101
|
+
' specially for compatibility with mdutil
|
2102
|
+
'
|
2103
|
+
''''''''''''''''''''''''''
|
2104
|
+
Function IsSpecialSetProperty(ObjectParameter)
|
2105
|
+
|
2106
|
+
On Error Resume Next
|
2107
|
+
|
2108
|
+
Select Case UCase(ObjectParameter)
|
2109
|
+
Case "APPPOOLCOMMAND"
|
2110
|
+
IsSpecialSetProperty = True
|
2111
|
+
Case "SERVERCOMMAND"
|
2112
|
+
IsSpecialSetProperty = True
|
2113
|
+
Case "ACCESSPERM"
|
2114
|
+
IsSpecialSetProperty = True
|
2115
|
+
Case "VRPATH"
|
2116
|
+
IsSpecialSetProperty = True
|
2117
|
+
Case "AUTHORIZATION"
|
2118
|
+
IsSpecialSetProperty = True
|
2119
|
+
Case "MIMEMAP"
|
2120
|
+
IsSpecialSetProperty = True
|
2121
|
+
Case Else
|
2122
|
+
IsSpecialSetProperty = False
|
2123
|
+
End Select
|
2124
|
+
End Function
|
2125
|
+
|
2126
|
+
''''''''''''''''''''''''''
|
2127
|
+
'
|
2128
|
+
' DoSpecialSetProp
|
2129
|
+
'
|
2130
|
+
' Handles datatypes that need to be handled
|
2131
|
+
' specially for compatibility with mdutil
|
2132
|
+
'
|
2133
|
+
''''''''''''''''''''''''''
|
2134
|
+
Function DoSpecialSetProp(ObjectPath, ObjectParameter, MachineName)
|
2135
|
+
Dim IIsObjectPath
|
2136
|
+
Dim IIsObject
|
2137
|
+
Dim ValueList
|
2138
|
+
Dim ValueDisplay
|
2139
|
+
Dim PermIndex
|
2140
|
+
|
2141
|
+
On Error Resume Next
|
2142
|
+
|
2143
|
+
DoSpecialSetProp = 0 ' Assume Success
|
2144
|
+
Select Case UCase(ObjectParameter)
|
2145
|
+
Case "SERVERCOMMAND"
|
2146
|
+
|
2147
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
2148
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2149
|
+
|
2150
|
+
If (Err.Number <> 0) Then
|
2151
|
+
ReportError ()
|
2152
|
+
WScript.Echo GetLocalizedResource("StrRes180") & ObjectPath
|
2153
|
+
WScript.Quit (Err.Number)
|
2154
|
+
End If
|
2155
|
+
|
2156
|
+
If (IIsObject.KeyType <> "IIsWebServer") Then
|
2157
|
+
ReportError ()
|
2158
|
+
WScript.Echo GetLocalizedResource("StrRes181")
|
2159
|
+
WScript.Quit (GENERAL_FAILURE)
|
2160
|
+
End If
|
2161
|
+
|
2162
|
+
ValueList = CLng(Args(2))
|
2163
|
+
Select Case ValueList
|
2164
|
+
Case 1
|
2165
|
+
IIsObject.Start
|
2166
|
+
If (Err.Number <> 0) Then
|
2167
|
+
ReportError ()
|
2168
|
+
WScript.Echo GetLocalizedResource("StrRes182") & ObjectPath
|
2169
|
+
WScript.Quit (Err.Number)
|
2170
|
+
End If
|
2171
|
+
WScript.Echo GetLocalizedResource("StrRes148") & ObjectPath & GetLocalizedResource("StrRes184")
|
2172
|
+
Case 2
|
2173
|
+
IIsObject.Stop
|
2174
|
+
If (Err.Number <> 0) Then
|
2175
|
+
ReportError ()
|
2176
|
+
WScript.Echo GetLocalizedResource("StrRes185") & ObjectPath
|
2177
|
+
WScript.Quit (Err.Number)
|
2178
|
+
End If
|
2179
|
+
WScript.Echo GetLocalizedResource("StrRes148") & ObjectPath & GetLocalizedResource("StrRes187")
|
2180
|
+
Case 3
|
2181
|
+
IIsObject.Pause
|
2182
|
+
If (Err.Number <> 0) Then
|
2183
|
+
ReportError ()
|
2184
|
+
WScript.Echo GetLocalizedResource("StrRes188") & ObjectPath
|
2185
|
+
WScript.Quit (Err.Number)
|
2186
|
+
End If
|
2187
|
+
WScript.Echo GetLocalizedResource("StrRes148") & ObjectPath & GetLocalizedResource("StrRes190")
|
2188
|
+
Case 4
|
2189
|
+
IIsObject.Continue
|
2190
|
+
If (Err.Number <> 0) Then
|
2191
|
+
ReportError ()
|
2192
|
+
WScript.Echo GetLocalizedResource("StrRes191") & ObjectPath
|
2193
|
+
WScript.Quit (Err.Number)
|
2194
|
+
End If
|
2195
|
+
WScript.Echo GetLocalizedResource("StrRes148") & ObjectPath & GetLocalizedResource("StrRes193")
|
2196
|
+
Case Else
|
2197
|
+
WScript.Echo GetLocalizedResource("StrRes194") & ValueList
|
2198
|
+
DoSpecialSetProp = GENERAL_FAILURE
|
2199
|
+
End Select
|
2200
|
+
Exit Function
|
2201
|
+
|
2202
|
+
Case "APPPOOLCOMMAND"
|
2203
|
+
|
2204
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
2205
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2206
|
+
|
2207
|
+
If (Err.Number <> 0) Then
|
2208
|
+
ReportError ()
|
2209
|
+
WScript.Echo GetLocalizedResource("StrRes195") & ObjectPath
|
2210
|
+
WScript.Quit (Err.Number)
|
2211
|
+
End If
|
2212
|
+
|
2213
|
+
If (IIsObject.KeyType <> "IIsApplicationPool") Then
|
2214
|
+
ReportError ()
|
2215
|
+
WScript.Echo GetLocalizedResource("StrRes196")
|
2216
|
+
WScript.Quit (GENERAL_FAILURE)
|
2217
|
+
End If
|
2218
|
+
|
2219
|
+
ValueList = CLng(Args(2))
|
2220
|
+
Select Case ValueList
|
2221
|
+
Case 1
|
2222
|
+
IIsObject.Start
|
2223
|
+
If (Err.Number <> 0) Then
|
2224
|
+
ReportError ()
|
2225
|
+
WScript.Echo GetLocalizedResource("StrRes197") & ObjectPath
|
2226
|
+
WScript.Quit (Err.Number)
|
2227
|
+
End If
|
2228
|
+
WScript.Echo GetLocalizedResource("StrRes198") & ObjectPath & GetLocalizedResource("StrRes199")
|
2229
|
+
Case 2
|
2230
|
+
IIsObject.Stop
|
2231
|
+
If (Err.Number <> 0) Then
|
2232
|
+
ReportError ()
|
2233
|
+
WScript.Echo GetLocalizedResource("StrRes200") & ObjectPath
|
2234
|
+
WScript.Quit (Err.Number)
|
2235
|
+
End If
|
2236
|
+
WScript.Echo GetLocalizedResource("StrRes198") & ObjectPath & GetLocalizedResource("StrRes201")
|
2237
|
+
Case Else
|
2238
|
+
WScript.Echo GetLocalizedResource("StrRes203") & ValueList
|
2239
|
+
DoSpecialSetProp = GENERAL_FAILURE
|
2240
|
+
End Select
|
2241
|
+
Exit Function
|
2242
|
+
|
2243
|
+
Case "ACCESSPERM"
|
2244
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
2245
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2246
|
+
|
2247
|
+
If (Err.Number <> 0) Then
|
2248
|
+
ReportError ()
|
2249
|
+
WScript.Echo GetLocalizedResource("StrRes204") & ObjectPath
|
2250
|
+
WScript.Quit (Err.Number)
|
2251
|
+
End If
|
2252
|
+
|
2253
|
+
' Set the access flags to None, first, and then add them back, as necessary
|
2254
|
+
IIsObject.AccessFlags = 0
|
2255
|
+
|
2256
|
+
' Set up the display output
|
2257
|
+
ValueDisplay = "AccessFlags (AccessPerm)" & (Right(Spacer, SpacerSize - Len("AccessFlags (AccessPerm)")) & ": " & "(" & TypeName(IIsObject.AccessFlags) & ") ")
|
2258
|
+
|
2259
|
+
' Attempt to convert parameter to number
|
2260
|
+
Dim APValue
|
2261
|
+
Dim TempValStr
|
2262
|
+
|
2263
|
+
TempValStr = Args(2)
|
2264
|
+
|
2265
|
+
' Check for Hex
|
2266
|
+
If (UCase(Left(Args(2), 2)) = "0X") Then
|
2267
|
+
TempValStr = "&H" & Right(TempValStr, Len(TempValStr) - 2)
|
2268
|
+
End If
|
2269
|
+
|
2270
|
+
APValue = CLng(TempValStr)
|
2271
|
+
|
2272
|
+
If (Err.Number = 0) Then
|
2273
|
+
IIsObject.AccessFlags = APValue
|
2274
|
+
ValueDisplay = ValueDisplay & " " & APValue & " (0x" & Hex(APValue) & ")"
|
2275
|
+
Else
|
2276
|
+
Err.Clear
|
2277
|
+
For PermIndex = 2 To ArgCount - 1
|
2278
|
+
Select Case UCase(Args(PermIndex))
|
2279
|
+
Case "READ"
|
2280
|
+
IIsObject.AccessRead = True
|
2281
|
+
ValueDisplay = ValueDisplay & " Read"
|
2282
|
+
Case "WRITE"
|
2283
|
+
IIsObject.AccessWrite = True
|
2284
|
+
ValueDisplay = ValueDisplay & " Write"
|
2285
|
+
Case "EXECUTE"
|
2286
|
+
IIsObject.AccessExecute = True
|
2287
|
+
ValueDisplay = ValueDisplay & " Execute"
|
2288
|
+
Case "SCRIPT"
|
2289
|
+
IIsObject.AccessScript = True
|
2290
|
+
ValueDisplay = ValueDisplay & " Script"
|
2291
|
+
Case Else
|
2292
|
+
WScript.Echo GetLocalizedResource("StrRes205") & Args(PermIndex)
|
2293
|
+
WScript.Quit (GENERAL_FAILURE)
|
2294
|
+
End Select
|
2295
|
+
Next
|
2296
|
+
End If
|
2297
|
+
|
2298
|
+
If (Err.Number <> 0) Then
|
2299
|
+
ReportError ()
|
2300
|
+
WScript.Echo GetLocalizedResource("StrRes206") & ObjectPath
|
2301
|
+
WScript.Quit (Err.Number)
|
2302
|
+
End If
|
2303
|
+
|
2304
|
+
IIsObject.Setinfo
|
2305
|
+
|
2306
|
+
If (Err.Number <> 0) Then
|
2307
|
+
ReportError ()
|
2308
|
+
WScript.Echo GetLocalizedResource("StrRes206") & ObjectPath
|
2309
|
+
WScript.Quit (Err.Number)
|
2310
|
+
End If
|
2311
|
+
|
2312
|
+
' Send the current settings to the screen
|
2313
|
+
WScript.Echo ValueDisplay
|
2314
|
+
|
2315
|
+
Case "VRPATH"
|
2316
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
2317
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2318
|
+
|
2319
|
+
If (Err.Number <> 0) Then
|
2320
|
+
ReportError ()
|
2321
|
+
WScript.Echo GetLocalizedResource("StrRes208") & ObjectPath
|
2322
|
+
WScript.Quit (Err.Number)
|
2323
|
+
End If
|
2324
|
+
|
2325
|
+
' Set the access flags to None, first, and then add them back, as necessary
|
2326
|
+
IIsObject.Path = Args(2)
|
2327
|
+
|
2328
|
+
If (Err.Number <> 0) Then
|
2329
|
+
ReportError ()
|
2330
|
+
WScript.Echo GetLocalizedResource("StrRes206") & ObjectPath
|
2331
|
+
WScript.Quit (Err.Number)
|
2332
|
+
End If
|
2333
|
+
|
2334
|
+
' Set up the display output
|
2335
|
+
ValueDisplay = "Path (VRPath)" & (Right(Spacer, SpacerSize - Len("Path (VRPath)")) & ": " & "(" & TypeName(IIsObject.Path) & ") " & IIsObject.Path)
|
2336
|
+
|
2337
|
+
IIsObject.Setinfo
|
2338
|
+
|
2339
|
+
If (Err.Number <> 0) Then
|
2340
|
+
ReportError ()
|
2341
|
+
WScript.Echo GetLocalizedResource("StrRes206") & ObjectPath
|
2342
|
+
WScript.Quit (Err.Number)
|
2343
|
+
End If
|
2344
|
+
|
2345
|
+
' Send the current settings to the screen
|
2346
|
+
WScript.Echo ValueDisplay
|
2347
|
+
|
2348
|
+
Case "AUTHORIZATION"
|
2349
|
+
IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
|
2350
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2351
|
+
|
2352
|
+
If (Err.Number <> 0) Then
|
2353
|
+
ReportError ()
|
2354
|
+
WScript.Echo GetLocalizedResource("StrRes208") & ObjectPath
|
2355
|
+
WScript.Quit (Err.Number)
|
2356
|
+
End If
|
2357
|
+
|
2358
|
+
' Set the auth flags to None, first, and then add them back, as necessary
|
2359
|
+
IIsObject.AuthFlags = 0
|
2360
|
+
|
2361
|
+
' Set up the display output
|
2362
|
+
ValueDisplay = GetLocalizedResource("StrRes270") & (Right(Spacer, SpacerSize - Len(GetLocalizedResource("StrRes270"))) & ": " & "(" & TypeName(IIsObject.AuthFlags) & ") ")
|
2363
|
+
|
2364
|
+
For PermIndex = 2 To ArgCount - 1
|
2365
|
+
Select Case UCase(Args(PermIndex))
|
2366
|
+
Case "NT"
|
2367
|
+
IIsObject.AuthNTLM = True
|
2368
|
+
ValueDisplay = ValueDisplay & " NT"
|
2369
|
+
Case "ANONYMOUS"
|
2370
|
+
IIsObject.AuthAnonymous = True
|
2371
|
+
ValueDisplay = ValueDisplay & GetLocalizedResource("StrRes271")
|
2372
|
+
Case "BASIC"
|
2373
|
+
IIsObject.AuthBasic = True
|
2374
|
+
ValueDisplay = ValueDisplay & GetLocalizedResource("StrRes272")
|
2375
|
+
Case Else
|
2376
|
+
WScript.Echo GetLocalizedResource("StrRes205") & Args(PermIndex)
|
2377
|
+
WScript.Quit (GENERAL_FAILURE)
|
2378
|
+
End Select
|
2379
|
+
Next
|
2380
|
+
|
2381
|
+
If (Err.Number <> 0) Then
|
2382
|
+
ReportError ()
|
2383
|
+
WScript.Echo GetLocalizedResource("StrRes206") & ObjectPath
|
2384
|
+
WScript.Quit (Err.Number)
|
2385
|
+
End If
|
2386
|
+
|
2387
|
+
IIsObject.Setinfo
|
2388
|
+
|
2389
|
+
If (Err.Number <> 0) Then
|
2390
|
+
ReportError ()
|
2391
|
+
WScript.Echo GetLocalizedResource("StrRes206") & ObjectPath
|
2392
|
+
WScript.Quit (Err.Number)
|
2393
|
+
End If
|
2394
|
+
|
2395
|
+
' Send the current settings to the screen
|
2396
|
+
WScript.Echo ValueDisplay
|
2397
|
+
|
2398
|
+
Case "MIMEMAP"
|
2399
|
+
DoSpecialSetProp = MimeMapSet(ObjectPath, ObjectParameter, MachineName)
|
2400
|
+
' Case "FILTER"
|
2401
|
+
' DoSpecialSetProp = FiltersSet()
|
2402
|
+
Case Else
|
2403
|
+
DoSpecialSetProp = GENERAL_FAILURE
|
2404
|
+
End Select
|
2405
|
+
End Function
|
2406
|
+
|
2407
|
+
''''''''''''''''''''''''''''''
|
2408
|
+
'
|
2409
|
+
' Function SeparateMachineName
|
2410
|
+
'
|
2411
|
+
' This function will get the machine name from the Path parameter
|
2412
|
+
' that was passed into the script. It will also alter the passed in
|
2413
|
+
' path so that it contains only the rest of the path - not the machine
|
2414
|
+
' name. If there is no machine name in the path, then the script
|
2415
|
+
' will assume LocalHost.
|
2416
|
+
'
|
2417
|
+
''''''''''''''''''''''''''''''
|
2418
|
+
Function SeparateMachineName(Path)
|
2419
|
+
On Error Resume Next
|
2420
|
+
|
2421
|
+
' Temporarily, just return LocalHost
|
2422
|
+
' SeparateMachineName = "LocalHost"
|
2423
|
+
|
2424
|
+
SeparateMachineName = TargetServer
|
2425
|
+
|
2426
|
+
Exit Function
|
2427
|
+
End Function
|
2428
|
+
|
2429
|
+
''''''''''''''''''''''''''''''
|
2430
|
+
'
|
2431
|
+
' Function MapSpecGetParamName
|
2432
|
+
'
|
2433
|
+
' Some parameters in MDUTIL are named differently in ADSI.
|
2434
|
+
' This function maps the improtant parameter names to ADSI
|
2435
|
+
' names.
|
2436
|
+
'
|
2437
|
+
''''''''''''''''''''''''''''''
|
2438
|
+
Function MapSpecGetParamName(ObjectParameter)
|
2439
|
+
On Error Resume Next
|
2440
|
+
|
2441
|
+
Select Case UCase(ObjectParameter)
|
2442
|
+
Case "ACCESSPERM"
|
2443
|
+
WScript.Echo GetLocalizedResource("StrRes215") & ObjectParameter & GetLocalizedResource("StrRes216")
|
2444
|
+
WScript.Echo GetLocalizedResource("StrRes217")
|
2445
|
+
MapSpecGetParamName = "AccessFlags"
|
2446
|
+
Case "VRPATH"
|
2447
|
+
MapSpecGetParamName = "Path"
|
2448
|
+
Case "AUTHORIZATION"
|
2449
|
+
WScript.Echo GetLocalizedResource("StrRes215") & ObjectParameter & GetLocalizedResource("StrRes221")
|
2450
|
+
WScript.Echo GetLocalizedResource("StrRes222")
|
2451
|
+
MapSpecGetParamName = "AuthFlags"
|
2452
|
+
Case Else
|
2453
|
+
' Do nothing - the parameter doesn't map to anything special
|
2454
|
+
MapSpecGetParamName = ObjectParameter
|
2455
|
+
End Select
|
2456
|
+
End Function
|
2457
|
+
|
2458
|
+
Sub ReportError()
|
2459
|
+
' On Error Resume Next
|
2460
|
+
|
2461
|
+
Dim ErrorDescription
|
2462
|
+
|
2463
|
+
Select Case (Err.Number)
|
2464
|
+
Case &H80070003
|
2465
|
+
ErrorDescription = GetLocalizedResource("StrRes267")
|
2466
|
+
Case &H80070005
|
2467
|
+
ErrorDescription = GetLocalizedResource("StrRes268")
|
2468
|
+
Case &H80070094
|
2469
|
+
ErrorDescription = GetLocalizedResource("StrRes269")
|
2470
|
+
Case Else
|
2471
|
+
ErrorDescription = Err.Description
|
2472
|
+
End Select
|
2473
|
+
|
2474
|
+
WScript.Echo ErrorDescription
|
2475
|
+
WScript.Echo GetLocalizedResource("StrRes223") & Err.Number & " (0x" & Hex(Err.Number) & ")"
|
2476
|
+
End Sub
|
2477
|
+
|
2478
|
+
|
2479
|
+
|
2480
|
+
|
2481
|
+
Function SplitParam(ObjectPath)
|
2482
|
+
' Note: Assume the string has been sanitized (no leading or trailing slashes)
|
2483
|
+
On Error Resume Next
|
2484
|
+
|
2485
|
+
Dim SlashIndex
|
2486
|
+
Dim TempParam
|
2487
|
+
Dim ObjectPathLen
|
2488
|
+
|
2489
|
+
SplitParam = "" ' Assume no parameter
|
2490
|
+
ObjectPathLen = Len(ObjectPath)
|
2491
|
+
|
2492
|
+
' Separate the path of the node from the parameter
|
2493
|
+
SlashIndex = InStrRev(ObjectPath, "/")
|
2494
|
+
|
2495
|
+
If (SlashIndex = 0) Or (SlashIndex = ObjectPathLen) Then
|
2496
|
+
TempParam = ObjectPath
|
2497
|
+
ObjectPath = "" ' ObjectParameter is more important
|
2498
|
+
Else
|
2499
|
+
TempParam = ObjectPath
|
2500
|
+
ObjectPath = Left(ObjectPath, SlashIndex - 1)
|
2501
|
+
TempParam = Right(TempParam, Len(TempParam) - SlashIndex)
|
2502
|
+
End If
|
2503
|
+
|
2504
|
+
SplitParam = TempParam
|
2505
|
+
|
2506
|
+
If (Err.Number <> 0) Then
|
2507
|
+
ReportError ()
|
2508
|
+
WScript.Echo GetLocalizedResource("StrRes225") & ObjectPath
|
2509
|
+
WScript.Quit (Err.Number)
|
2510
|
+
End If
|
2511
|
+
|
2512
|
+
End Function
|
2513
|
+
|
2514
|
+
|
2515
|
+
|
2516
|
+
Function SplitLeftPath(ObjectPath)
|
2517
|
+
' Note: Assume the string has been sanitized (no leading or trailing slashes)
|
2518
|
+
On Error Resume Next
|
2519
|
+
|
2520
|
+
Dim SlashIndex
|
2521
|
+
Dim TmpLeftPath
|
2522
|
+
Dim ObjectPathLen
|
2523
|
+
|
2524
|
+
SplitLeftPath = "" ' Assume no LeftPath
|
2525
|
+
ObjectPathLen = Len(ObjectPath)
|
2526
|
+
|
2527
|
+
' Separate the left part of the path from the remaining path
|
2528
|
+
SlashIndex = InStr(ObjectPath, "/")
|
2529
|
+
|
2530
|
+
If (SlashIndex = 0) Or (SlashIndex = ObjectPathLen) Then
|
2531
|
+
TmpLeftPath = ObjectPath
|
2532
|
+
ObjectPath = ""
|
2533
|
+
Else
|
2534
|
+
TmpLeftPath = Left(ObjectPath, SlashIndex - 1)
|
2535
|
+
ObjectPath = Right(ObjectPath, Len(ObjectPath) - SlashIndex)
|
2536
|
+
End If
|
2537
|
+
|
2538
|
+
SplitLeftPath = TmpLeftPath
|
2539
|
+
|
2540
|
+
If (Err.Number <> 0) Then
|
2541
|
+
ReportError ()
|
2542
|
+
WScript.Echo GetLocalizedResource("StrRes234") & ObjectPath
|
2543
|
+
WScript.Quit (Err.Number)
|
2544
|
+
End If
|
2545
|
+
|
2546
|
+
End Function
|
2547
|
+
|
2548
|
+
|
2549
|
+
|
2550
|
+
|
2551
|
+
Sub SanitizePath(ObjectPath)
|
2552
|
+
On Error Resume Next
|
2553
|
+
|
2554
|
+
' Remove WhiteSpace
|
2555
|
+
Do While (Left(ObjectPath, 1) = " ")
|
2556
|
+
ObjectPath = Right(ObjectPath, Len(ObjectPath) - 1)
|
2557
|
+
Loop
|
2558
|
+
|
2559
|
+
Do While (Right(ObjectPath, 1) = " ")
|
2560
|
+
ObjectPath = Left(ObjectPath, Len(ObjectPath) - 1)
|
2561
|
+
Loop
|
2562
|
+
|
2563
|
+
' Replace all occurrences of \ with /
|
2564
|
+
ObjectPath = Replace(ObjectPath, "\", "/")
|
2565
|
+
|
2566
|
+
' Remove leading and trailing slashes
|
2567
|
+
If Left(ObjectPath, 1) = "/" Then
|
2568
|
+
ObjectPath = Right(ObjectPath, Len(ObjectPath) - 1)
|
2569
|
+
End If
|
2570
|
+
|
2571
|
+
If Right(ObjectPath, 1) = "/" Then
|
2572
|
+
ObjectPath = Left(ObjectPath, Len(ObjectPath) - 1)
|
2573
|
+
End If
|
2574
|
+
|
2575
|
+
If (Err.Number <> 0) Then
|
2576
|
+
ReportError ()
|
2577
|
+
WScript.Echo GetLocalizedResource("StrRes235") & ObjectPath
|
2578
|
+
WScript.Quit (Err.Number)
|
2579
|
+
End If
|
2580
|
+
|
2581
|
+
End Sub
|
2582
|
+
|
2583
|
+
|
2584
|
+
'''''''''''''''''''''''''''''
|
2585
|
+
' AppCreateCommand
|
2586
|
+
'''''''''''''''''''''''''''''
|
2587
|
+
Function AppCreateCommand(InProcFlag)
|
2588
|
+
On Error Resume Next
|
2589
|
+
|
2590
|
+
Dim IIsObject
|
2591
|
+
Dim IIsObjectPath
|
2592
|
+
Dim ObjectPath
|
2593
|
+
Dim MachineName
|
2594
|
+
|
2595
|
+
AppCreateCommand = 0 ' Assume Success
|
2596
|
+
|
2597
|
+
If ArgCount <> 2 Then
|
2598
|
+
WScript.Echo GetLocalizedResource("StrRes236")
|
2599
|
+
WScript.Quit (GENERAL_FAILURE)
|
2600
|
+
End If
|
2601
|
+
|
2602
|
+
ObjectPath = Args(1)
|
2603
|
+
SanitizePath ObjectPath
|
2604
|
+
MachineName = SeparateMachineName(ObjectPath)
|
2605
|
+
|
2606
|
+
IIsObjectPath = "IIS://" & MachineName
|
2607
|
+
If ObjectPath <> "" Then
|
2608
|
+
IIsObjectPath = IIsObjectPath & "/" & ObjectPath
|
2609
|
+
End If
|
2610
|
+
|
2611
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2612
|
+
|
2613
|
+
If (Err.Number <> 0) Then
|
2614
|
+
ReportError ()
|
2615
|
+
WScript.Echo GetLocalizedResource("StrRes237") & ObjectPath
|
2616
|
+
WScript.Quit (Err.Number)
|
2617
|
+
End If
|
2618
|
+
|
2619
|
+
IIsObject.AppCreate2 (InProcFlag)
|
2620
|
+
|
2621
|
+
If (Err.Number <> 0) Then
|
2622
|
+
ReportError ()
|
2623
|
+
WScript.Echo GetLocalizedResource("StrRes238") & ObjectPath
|
2624
|
+
WScript.Quit (Err.Number)
|
2625
|
+
End If
|
2626
|
+
|
2627
|
+
WScript.Echo GetLocalizedResource("StrRes239")
|
2628
|
+
|
2629
|
+
End Function
|
2630
|
+
|
2631
|
+
|
2632
|
+
'''''''''''''''''''''''''''''
|
2633
|
+
' AppDeleteCommand
|
2634
|
+
'''''''''''''''''''''''''''''
|
2635
|
+
Function AppDeleteCommand()
|
2636
|
+
On Error Resume Next
|
2637
|
+
|
2638
|
+
Dim IIsObject
|
2639
|
+
Dim IIsObjectPath
|
2640
|
+
Dim ObjectPath
|
2641
|
+
Dim MachineName
|
2642
|
+
|
2643
|
+
AppDeleteCommand = 0 ' Assume Success
|
2644
|
+
|
2645
|
+
If ArgCount <> 2 Then
|
2646
|
+
WScript.Echo GetLocalizedResource("StrRes240")
|
2647
|
+
WScript.Quit (GENERAL_FAILURE)
|
2648
|
+
End If
|
2649
|
+
|
2650
|
+
ObjectPath = Args(1)
|
2651
|
+
SanitizePath ObjectPath
|
2652
|
+
MachineName = SeparateMachineName(ObjectPath)
|
2653
|
+
|
2654
|
+
IIsObjectPath = "IIS://" & MachineName
|
2655
|
+
If ObjectPath <> "" Then
|
2656
|
+
IIsObjectPath = IIsObjectPath & "/" & ObjectPath
|
2657
|
+
End If
|
2658
|
+
|
2659
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2660
|
+
|
2661
|
+
If (Err.Number <> 0) Then
|
2662
|
+
ReportError ()
|
2663
|
+
WScript.Echo GetLocalizedResource("StrRes237") & ObjectPath
|
2664
|
+
WScript.Quit (Err.Number)
|
2665
|
+
End If
|
2666
|
+
|
2667
|
+
IIsObject.AppDelete
|
2668
|
+
|
2669
|
+
If (Err.Number <> 0) Then
|
2670
|
+
ReportError ()
|
2671
|
+
WScript.Echo GetLocalizedResource("StrRes242") & ObjectPath
|
2672
|
+
WScript.Quit (Err.Number)
|
2673
|
+
End If
|
2674
|
+
|
2675
|
+
WScript.Echo GetLocalizedResource("StrRes243")
|
2676
|
+
|
2677
|
+
End Function
|
2678
|
+
|
2679
|
+
|
2680
|
+
'''''''''''''''''''''''''''''
|
2681
|
+
' AppUnloadCommand
|
2682
|
+
'''''''''''''''''''''''''''''
|
2683
|
+
Function AppUnloadCommand()
|
2684
|
+
On Error Resume Next
|
2685
|
+
|
2686
|
+
Dim IIsObject
|
2687
|
+
Dim IIsObjectPath
|
2688
|
+
Dim ObjectPath
|
2689
|
+
Dim MachineName
|
2690
|
+
|
2691
|
+
AppUnloadCommand = 0 ' Assume Success
|
2692
|
+
|
2693
|
+
If ArgCount <> 2 Then
|
2694
|
+
WScript.Echo GetLocalizedResource("StrRes244")
|
2695
|
+
WScript.Quit (GENERAL_FAILURE)
|
2696
|
+
End If
|
2697
|
+
|
2698
|
+
ObjectPath = Args(1)
|
2699
|
+
SanitizePath ObjectPath
|
2700
|
+
MachineName = SeparateMachineName(ObjectPath)
|
2701
|
+
|
2702
|
+
IIsObjectPath = "IIS://" & MachineName
|
2703
|
+
If ObjectPath <> "" Then
|
2704
|
+
IIsObjectPath = IIsObjectPath & "/" & ObjectPath
|
2705
|
+
End If
|
2706
|
+
|
2707
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2708
|
+
|
2709
|
+
If (Err.Number <> 0) Then
|
2710
|
+
ReportError ()
|
2711
|
+
WScript.Echo GetLocalizedResource("StrRes237") & ObjectPath
|
2712
|
+
WScript.Quit (Err.Number)
|
2713
|
+
End If
|
2714
|
+
|
2715
|
+
IIsObject.AppUnload
|
2716
|
+
|
2717
|
+
If (Err.Number <> 0) Then
|
2718
|
+
ReportError ()
|
2719
|
+
WScript.Echo GetLocalizedResource("StrRes246") & ObjectPath
|
2720
|
+
WScript.Quit (Err.Number)
|
2721
|
+
End If
|
2722
|
+
|
2723
|
+
WScript.Echo GetLocalizedResource("StrRes247")
|
2724
|
+
|
2725
|
+
End Function
|
2726
|
+
|
2727
|
+
|
2728
|
+
Function AppDisableCommand()
|
2729
|
+
On Error Resume Next
|
2730
|
+
|
2731
|
+
Dim IIsObject
|
2732
|
+
Dim IIsObjectPath
|
2733
|
+
Dim ObjectPath
|
2734
|
+
Dim MachineName
|
2735
|
+
|
2736
|
+
AppDisableCommand = 0 ' Assume Success
|
2737
|
+
|
2738
|
+
If ArgCount <> 2 Then
|
2739
|
+
WScript.Echo GetLocalizedResource("StrRes248")
|
2740
|
+
WScript.Quit (GENERAL_FAILURE)
|
2741
|
+
End If
|
2742
|
+
|
2743
|
+
ObjectPath = Args(1)
|
2744
|
+
SanitizePath ObjectPath
|
2745
|
+
MachineName = SeparateMachineName(ObjectPath)
|
2746
|
+
|
2747
|
+
'debug
|
2748
|
+
'WScript.Echo "Last Error: " & Err & " (" & Hex (Err) & "): " & Err.Description
|
2749
|
+
|
2750
|
+
IIsObjectPath = "IIS://" & MachineName
|
2751
|
+
If ObjectPath <> "" Then
|
2752
|
+
IIsObjectPath = IIsObjectPath & "/" & ObjectPath
|
2753
|
+
End If
|
2754
|
+
|
2755
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2756
|
+
|
2757
|
+
If (Err.Number <> 0) Then
|
2758
|
+
ReportError ()
|
2759
|
+
WScript.Echo GetLocalizedResource("StrRes237") & ObjectPath
|
2760
|
+
WScript.Quit (Err.Number)
|
2761
|
+
End If
|
2762
|
+
|
2763
|
+
IIsObject.AppDisable
|
2764
|
+
|
2765
|
+
If (Err.Number <> 0) Then
|
2766
|
+
ReportError ()
|
2767
|
+
WScript.Echo GetLocalizedResource("StrRes251") & ObjectPath
|
2768
|
+
WScript.Quit (Err.Number)
|
2769
|
+
End If
|
2770
|
+
|
2771
|
+
'debug
|
2772
|
+
'WScript.Echo "Last Error: " & Err & " (" & Hex (Err) & "): " & Err.Description
|
2773
|
+
|
2774
|
+
WScript.Echo GetLocalizedResource("StrRes253")
|
2775
|
+
|
2776
|
+
End Function
|
2777
|
+
|
2778
|
+
Function AppEnableCommand()
|
2779
|
+
On Error Resume Next
|
2780
|
+
|
2781
|
+
Dim IIsObject
|
2782
|
+
Dim IIsObjectPath
|
2783
|
+
Dim ObjectPath
|
2784
|
+
Dim MachineName
|
2785
|
+
|
2786
|
+
AppEnableCommand = 0 ' Assume Success
|
2787
|
+
|
2788
|
+
If ArgCount <> 2 Then
|
2789
|
+
WScript.Echo GetLocalizedResource("StrRes254")
|
2790
|
+
WScript.Quit (GENERAL_FAILURE)
|
2791
|
+
End If
|
2792
|
+
|
2793
|
+
ObjectPath = Args(1)
|
2794
|
+
SanitizePath ObjectPath
|
2795
|
+
MachineName = SeparateMachineName(ObjectPath)
|
2796
|
+
|
2797
|
+
'debug
|
2798
|
+
'WScript.Echo "Last Error: " & Err & " (" & Hex (Err) & "): " & Err.Description
|
2799
|
+
|
2800
|
+
IIsObjectPath = "IIS://" & MachineName
|
2801
|
+
If ObjectPath <> "" Then
|
2802
|
+
IIsObjectPath = IIsObjectPath & "/" & ObjectPath
|
2803
|
+
End If
|
2804
|
+
|
2805
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2806
|
+
|
2807
|
+
If (Err.Number <> 0) Then
|
2808
|
+
ReportError ()
|
2809
|
+
WScript.Echo GetLocalizedResource("StrRes237") & ObjectPath
|
2810
|
+
WScript.Quit (Err.Number)
|
2811
|
+
End If
|
2812
|
+
|
2813
|
+
IIsObject.AppEnable
|
2814
|
+
|
2815
|
+
If (Err.Number <> 0) Then
|
2816
|
+
ReportError ()
|
2817
|
+
WScript.Echo GetLocalizedResource("StrRes257") & ObjectPath
|
2818
|
+
WScript.Quit (Err.Number)
|
2819
|
+
End If
|
2820
|
+
|
2821
|
+
'debug
|
2822
|
+
'WScript.Echo "Last Error: " & Err & " (" & Hex (Err) & "): " & Err.Description
|
2823
|
+
|
2824
|
+
WScript.Echo GetLocalizedResource("StrRes259")
|
2825
|
+
|
2826
|
+
End Function
|
2827
|
+
|
2828
|
+
'''''''''''''''''''''''''''''
|
2829
|
+
' AppGetStatusCommand
|
2830
|
+
'''''''''''''''''''''''''''''
|
2831
|
+
Function AppGetStatusCommand()
|
2832
|
+
On Error Resume Next
|
2833
|
+
|
2834
|
+
Dim IIsObject
|
2835
|
+
Dim IIsObjectPath
|
2836
|
+
Dim ObjectPath
|
2837
|
+
Dim MachineName
|
2838
|
+
Dim Status
|
2839
|
+
|
2840
|
+
AppGetStatusCommand = 0 ' Assume Success
|
2841
|
+
|
2842
|
+
If ArgCount <> 2 Then
|
2843
|
+
WScript.Echo GetLocalizedResource("StrRes260")
|
2844
|
+
WScript.Quit (GENERAL_FAILURE)
|
2845
|
+
End If
|
2846
|
+
|
2847
|
+
ObjectPath = Args(1)
|
2848
|
+
SanitizePath ObjectPath
|
2849
|
+
MachineName = SeparateMachineName(ObjectPath)
|
2850
|
+
|
2851
|
+
IIsObjectPath = "IIS://" & MachineName
|
2852
|
+
If ObjectPath <> "" Then
|
2853
|
+
IIsObjectPath = IIsObjectPath & "/" & ObjectPath
|
2854
|
+
End If
|
2855
|
+
|
2856
|
+
Set IIsObject = GetObject(IIsObjectPath)
|
2857
|
+
|
2858
|
+
If (Err.Number <> 0) Then
|
2859
|
+
ReportError ()
|
2860
|
+
WScript.Echo GetLocalizedResource("StrRes237") & ObjectPath
|
2861
|
+
WScript.Quit (Err.Number)
|
2862
|
+
End If
|
2863
|
+
|
2864
|
+
Status = IIsObject.AppGetStatus2
|
2865
|
+
|
2866
|
+
If (Err.Number <> 0) Then
|
2867
|
+
ReportError ()
|
2868
|
+
WScript.Echo GetLocalizedResource("StrRes262") & ObjectPath
|
2869
|
+
WScript.Quit (Err.Number)
|
2870
|
+
End If
|
2871
|
+
|
2872
|
+
WScript.Echo GetLocalizedResource("StrRes263") & Status
|
2873
|
+
|
2874
|
+
End Function
|
2875
|
+
|
2876
|
+
|
2877
|
+
|
2878
|
+
''''''''''''''''''''''''''
|
2879
|
+
'
|
2880
|
+
' IsSecureProperty
|
2881
|
+
'
|
2882
|
+
' Checks to see if the property requires special processing in order to
|
2883
|
+
' display its contents.
|
2884
|
+
'
|
2885
|
+
''''''''''''''''''''''''''
|
2886
|
+
Function IsSecureProperty(ObjectParameter,MachineName)
|
2887
|
+
|
2888
|
+
On Error Resume Next
|
2889
|
+
Dim PropObj,Attribute
|
2890
|
+
Set PropObj = GetObject("IIS://" & MachineName & "/schema/" & ObjectParameter)
|
2891
|
+
If (Err.Number <> 0) Then
|
2892
|
+
ReportError ()
|
2893
|
+
WScript.Echo GetLocalizedResource("StrRes264") & err.number
|
2894
|
+
WScript.Quit (Err.Number)
|
2895
|
+
End If
|
2896
|
+
Attribute = PropObj.Secure
|
2897
|
+
If (Attribute = True) Then
|
2898
|
+
IsSecureProperty = True
|
2899
|
+
Else
|
2900
|
+
IsSecureProperty = False
|
2901
|
+
End If
|
2902
|
+
End Function
|
2903
|
+
|
2904
|
+
|
2905
|
+
' We want to be able to cope with 32-bit unsigned integers,
|
2906
|
+
' but CLng works with 32-bit signed integers
|
2907
|
+
Function StringTo32BitUnsignedInteger(ValueData)
|
2908
|
+
Dim numVal
|
2909
|
+
If (UCase(Left(ValueData, 2))) = "0X" Then
|
2910
|
+
ValueData = "&h" & Right(ValueData, Len(ValueData) - 2)
|
2911
|
+
End If
|
2912
|
+
|
2913
|
+
numVal = Int(ValueData) ' Despite its name, this actually turns it into a double.
|
2914
|
+
|
2915
|
+
If numVal < 0 Or numVal >= 4294967296 Then
|
2916
|
+
' this number is out of the range of a 32-bit unsigned integer,
|
2917
|
+
Err.Raise 6 ' overflow
|
2918
|
+
ElseIf numVal >= 2147483648 Then
|
2919
|
+
' bias downwards by -2^32
|
2920
|
+
numVal = numVal - 4294967296
|
2921
|
+
End If
|
2922
|
+
|
2923
|
+
StringTo32BitUnsignedInteger = CLng(numVal)
|
2924
|
+
End Function
|
2925
|
+
|
2926
|
+
|
2927
|
+
Function UnsignedIntegerToString(ValueData)
|
2928
|
+
Dim numVal
|
2929
|
+
|
2930
|
+
numVal = CLng(ValueData)
|
2931
|
+
numVal = Int(numVal)
|
2932
|
+
|
2933
|
+
If numVal < 0 Then
|
2934
|
+
numVal = numVal + 4294967296
|
2935
|
+
End If
|
2936
|
+
|
2937
|
+
UnsignedIntegerToString = CStr(numVal)
|
2938
|
+
End Function
|