改进后的mkw3site.vbs(创建虚拟目录)_vbs

 
'---------------------------------------------------------------------------------------------------
' 创建虚拟目录  POWER BY JARON , 江都资讯网 , 1999-2002. 
' 如果您需要设置权限,请修改40-56 的代码。 ** 根据 Microsoft Corp. 的 AdminScripts 改写
'
' 用法: mkw3site <--RootDirectory|-r ROOT DIRECTORY>
'                         <--Comment|-t SERVER COMMENT>
'                         [--computer|-c COMPUTER1[,COMPUTER2...]]
'                         [--HostName|-h HOST NAME]
'                         [--port|-o PORT NUM]
'                         [--IPAddress|-i IP ADDRESS]
'                         [--SiteNumber|-n SITENUMBER]
'                         [--DontStart]
'                         [--verbose|-v]
'                         [--help|-?]
'
' IP ADDRESS            The IP Address to assign to the new server.  Optional.
' HOST NAME             The host name of the web site for host headers.
'WARNING: Only use Host Name if DNS is set up find the server.
' PORT NUM              The port to which the server should bind
' ROOT DIRECTORY        Full path to the root directory for the new server.
' SERVER COMMENT        The server comment -- this is the name that appers in the MMC.
' SITENUMBERThe Site Number is the number in the path that the web server
'will be created at.  i.e. w3svc/3
'
' Example 1: mkw3site -r D:\Roots\Company11 --DontStart -t "My Company Site"
' Example 2: mkw3site -r C:\Inetpub\wwwroot -t Test -o 8080
'------------------------------------------------------------------------------------------------ 

' Force explicit declaration of all variables
Option Explicit 

On Error Resume Next 

Dim ArgIPAddress, ArgRootDirectory, ArgServerComment, ArgSkeletalDir, ArgHostName, ArgPort
Dim ArgComputers, ArgStart
Dim ArgSiteNumber
Dim oArgs, ArgNum
Dim verbose
' 设置可写、脚本执行权限
Dim prop(15,2)
Dim propNum
prop(propNum,0) = "AccessRead"
prop(propNum,1) = true' 可读设为TRUE,不可读设为FALSE
propNum = propNum + 1
prop(propNum, 0) = "AccessWrite"
prop(propNum, 1) = true ' 可写设为TRUE,不可写设为FALSE
propNum = propNum + 1
prop(propNum, 0) = "AccessScript"
prop(propNum, 1) = true ' 可运行脚本文件设为TRUE,不可运行脚本文件设为FALSE
propNum = propNum + 1
prop(propNum, 0) = "AccessExecute"
prop(propNum, 1) = false ' 可运行执行文件设为TRUE,不可运行执行文件设为FALSE
propNum = propNum + 1
prop(propNum, 0) = "EnableDirBrowsing"
prop(propNum, 1) = true ' 允许列出目录设为TRUE,不允许列出目录设为FALSE
propNum = propNum + 1 

ArgIPAddress = ""
ArgHostName = ""
ArgPort = 80
ArgStart = True
ArgComputers = Array(1)
ArgComputers(0) = "LocalHost"
ArgSiteNumber = 0
verbose = false 

Set oArgs = WScript.Arguments
ArgNum = 0 

While ArgNum < oArgs.Count 

Select Case LCase(oArgs(ArgNum))
Case "--port","-o":
ArgNum = ArgNum + 1
ArgPort = oArgs(ArgNum)
Case "--ipaddress","-i":
ArgNum = ArgNum + 1
ArgIPAddress = oArgs(ArgNum)
Case "--rootdirectory","-r": 
ArgNum = ArgNum + 1
ArgRootDirectory = oArgs(ArgNum)
Case "--comment","-t":
ArgNum = ArgNum + 1
ArgServerComment = oArgs(ArgNum)
Case "--hostname","-h":
ArgNum = ArgNum + 1
ArgHostName = oArgs(ArgNum)
Case "--computer","-c":
ArgNum = ArgNum + 1
ArgComputers = Split(oArgs(ArgNum), ",", -1)
Case "--sitenumber","-n":
ArgNum = ArgNum + 1
ArgSiteNumber = CLng(oArgs(ArgNum))
Case "--dontstart":
ArgStart = False
Case "--help","-?":
Call DisplayUsage
Case "--verbose", "-v":
verbose = true
Case Else:
WScript.Echo "Unknown argument "& oArgs(ArgNum)
Call DisplayUsage
End Select 

ArgNum = ArgNum + 1
Wend 

If (ArgRootDirectory = "") Or (ArgServerComment = "") Then
if (ArgRootDirectory = "") then
WScript.Echo "Missing Root Directory"
else
WScript.Echo "Missing Server Comment"
end if
Call DisplayUsage
WScript.Quit(1)
End If 

Call ASTCreateWebSite(ArgIPAddress, ArgRootDirectory, ArgServerComment, ArgHostName, ArgPort, ArgComputers, ArgStart) 

Sub ASTCreateWebSite(IPAddress, RootDirectory, ServerComment, HostName, PortNum, Computers, Start)
Dim w3svc, WebServer, NewWebServer, NewDir, Bindings, BindingString, NewBindings, ComputerIndex, Index, SiteObj, bDone
Dim comp
On Error Resume Next
For ComputerIndex = 0 To UBound(Computers)
comp = Computers(ComputerIndex)
If ComputerIndex <> UBound(Computers) Then
Trace "Creating web site on " & comp & "."
End If 

' Grab the web service object
Err.Clear
Set w3svc = GetObject("IIS://" & comp & "/w3svc")
If Err.Number <> 0 Then
Display "Unable to open: "&"IIS://" & comp & "/w3svc"
End If
BindingString = IpAddress & ":" & PortNum & ":" & HostName
Trace "Making sure this web server doesn't conflict with another..."
For Each WebServer in w3svc
If WebServer.Class = "IIsWebServer" Then
Bindings = WebServer.ServerBindings
If BindingString = Bindings(0) Then
Trace "The server bindings you specified are duplicated in another virtual web server."
WScript.Quit (1)
End If
End If
Next 

Index = 1
bDone = False
Trace "Creating new web server..." 

' If the user specified a SiteNumber, then use that.  Otherwise,
' test successive numbers under w3svc until an unoccupied slot is found
If ArgSiteNumber <> 0 Then
Set NewWebServer = w3svc.Create("IIsWebServer", ArgSiteNumber)
NewWebServer.SetInfo
If (Err.Number <> 0) Then
WScript.Echo "Couldn't create a web site with the specified number: " & ArgSiteNumber
WScript.Quit (1)
Else
Err.Clear
' Verify that the newly created site can be retrieved
Set SiteObj = GetObject("IIS://"&comp&"/w3svc/" & ArgSiteNumber)
If (Err.Number = 0) Then
bDone = True
Trace "Web server created. Path is - "&"IIS://"&comp&"/w3svc/" & ArgSiteNumber
Else
WScript.Echo "Couldn't create a web site with the specified number: " & ArgSiteNumber
WScript.Quit (1)
End If
End If
Else
While (Not bDone)
Err.Clear
Set SiteObj = GetObject("IIS://"&comp&"/w3svc/" & Index) 

If (Err.Number = 0) Then
' A web server is already defined at this position so increment
Index = Index + 1
Else
Err.Clear
Set NewWebServer = w3svc.Create("IIsWebServer", Index)
NewWebServer.SetInfo
If (Err.Number <> 0) Then
' If call to Create failed then try the next number
Index = Index + 1
Else
Err.Clear
' Verify that the newly created site can be retrieved
Set SiteObj = GetObject("IIS://"&comp&"/w3svc/" & Index)
If (Err.Number = 0) Then
bDone = True
Trace "Web server created. Path is - "&"IIS://"&comp&"/w3svc/" & Index
Else
Index = Index + 1
End If
End If
End If 

' sanity check
If (Index > 10000) Then
Trace "Seem to be unable to create new web server.  Server number is "&Index&"."
WScript.Quit (1)
End If
Wend
End If
NewBindings = Array(0)
NewBindings(0) = BindingString
NewWebServer.ServerBindings = NewBindings
NewWebServer.ServerComment = ServerComment
NewWebServer.SetInfo 

' Now create the root directory object.
Trace "Setting the home directory..."
Set NewDir = NewWebServer.Create("IIsWebVirtualDir", "ROOT")
NewDir.Path = RootDirectory
NewDir.AccessRead = true
Err.Clear
NewDir.SetInfo
NewDir.AppCreate (True) 

If (Err.Number = 0) Then
Trace "Home directory set."
Else
Display "Error setting home directory."
End If 

Trace "Web site created!" 

If Start = True Then
Trace "Attempting to start new web server..."
Err.Clear
Set NewWebServer = GetObject("IIS://" & comp & "/w3svc/" & Index)
NewWebServer.Start
If Err.Number <> 0 Then
Display "Error starting web server!"
Err.Clear
Else
Trace "Web server started succesfully!"
End If
End If
Next
Call ASTSetPerms(comp, Index,ArgRootDirectory , prop, propNum)
End Sub 

Sub ASTSetPerms(comp, ArgSiteNumber,ArgRootDirectory , propList, propCount)
'On Error Resume Next
Dim oAdmin
Dim fullPath
fullPath = "IIS://"&comp&"/w3svc/" & ArgSiteNumber & "/ROOT"
Trace "Opening path " & fullPath
Set oAdmin = GetObject(fullPath)
If Err.Number <> 0 Then
Display Error_NoNode
WScript.Quit (1)
End If 

Dim name, val
if propCount > 0 then
Dim i 

for i = 0 to propCount-1
name = propList(i,0)
val = propList(i,1)
if verbose = true then
Trace "Setting "&fullPath&"/"&name&" = "& val
end if
oAdmin.Put name, (val)
If Err <> 0 Then
Display "Unable to set property "&name
End If
next
oAdmin.SetInfo
If Err <> 0 Then
Display "不能保存更新信息."
End If
end if
End Sub 

' Display the usage message
Sub DisplayUsage
WScript.Quit (1)
End Sub 

Sub Display(Msg)
WScript.Echo Now & ". Error Code: " & Hex(Err) & " - " & Msg
End Sub 

Sub Trace(Msg)
if verbose = true then
WScript.Echo Now & " : " & Msg
end if
End Sub

时间: 2024-09-25 07:27:41

改进后的mkw3site.vbs(创建虚拟目录)_vbs的相关文章

改进后的mkw3site.vbs(创建虚拟目录)

//////////////////////////作者:Jaron, 江都资讯网 邮件:jaron@jdinfo.net网址:http://www.jiangdu.net本文首次发表于 jiangdu.net ,如果您要转载该文章,请注明出处.////////////////////////// '---------------------------------------------------------------------------------------------------

用vbs控制iis创建虚拟目录

参照了InetpubAdminScriptsadsutil.vbs写的创建虚拟目录的脚本:'////////////////////////// begin //////////////////////////////////////////On Error Resume NextstrVirtualDirectoryName = InputBox("请输入虚拟目录名")If strVirtualDirectoryName = "" Then msgbox(&quo

iisvdir.vbs iis虚拟目录管理脚本使用介绍_vbs

IIS管理器也是通过调用iisvdir.vbs来实现虚拟目录的创建和删除的.我们可以通过命令行的方式来执行iisvdir.vbs脚本 1)创建虚拟目录: cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /create [virtualRoot] Alias PhysicalPath 2)删除虚拟目录: 1cscript c:\windows\system32\iisvdir.vbs [/s

使用ADSI创建虚拟目录

创建|虚拟目录 你曾经相通过VBS添加一个虚拟目录吗?(我想过~)自动建立ISAPI服务器扩展?或者建立一整个站点, 包括权限?你可以用ADSI做这些和更多的事情. ADSI (Active Directory Services Interface)是一种应用程序数据接口.微软的操作系统支持ADS I的有Windows NT 4.0 Server, Exchange, IIS, 和Site Server.在WIN2K中ADSI将会成为操作系统 的接口并且可能取代注册表.ADSI的关键并不在于底层

使用AdminScripts脚本创建虚拟目录

创建|脚本|虚拟目录 AdminScripts脚本位于\Inetpub\AdminScripts目录下,本文介绍如何使用这些脚本来创建一个虚拟目录,并对该虚拟目录进行参数设置. AdminScripts目录下的脚本很多,这里只使用了其中的两个,adsutil.vbs和chaccess.vbs: adsutil.vbs - 可用于创建并配置虚拟目录(实际上adsutil.vbs的功能涵盖了其他所有脚本) chaccess.vbs - 设定虚拟目录的权限 下面是批处理脚本makevd.bat的内容,

Xp系统如何创建虚拟目录?

    Xp系统如何创建虚拟目录? 每个 Internet服务可以从多个目录中发布,通过以通用命名约定 (UNC) 名.用户名及用于访问权限的密码指定目录,可将每个目录定位在本地驱动器或网络上.虚拟服务器可拥有一个宿主目录和任意数量的其它发布目录.其它发布目录称为虚拟目录. 具体方法: 1.在C盘的"inetpub"文件夹下有一个"wwwroot"文件夹,打开,在里面新建一个"wdzd(名字可自己取)"文件夹. 2.点击"开始"

使用JS创建虚拟目录,并引导进入浏览

js|创建|虚拟目录 使用JS,可以替代Windows安装方式: 代码也比较简单:) 创建一个setup.js文件,内容为: var fso = new ActiveXObject("Scripting.FileSystemObject")  var svcPath = "IIS://localhost/W3SVC/1"  var svcRoot = GetObject(svcPath)  var webRoot = svcRoot.GetObject("

用.net (在IIS中)创建虚拟目录(包括 脚本语言)

iis|创建|脚本|虚拟目录 两种语言在IIS中创建虚拟目录 用.net在IIS中创建虚拟目录 使用.NET的目录服务就可以访问IIS的设置,添加虚拟目录其实就是创建一个DirectoryEntry复杂的在于DirectoryEntry的属性,其实就是虚拟目的一些配置,比如,权限,是否要log,应用程序名等Properties非常多,而且文档不太好找详细可以参考MSDN以下内容help://MS.MSDNQTR.2004JUL.1033/iissdk/iis/configuring_proper

创建虚拟目录(VB.net)

创建|虚拟目录 Function CriaDiretorioVirtual(ByVal vdirname As String, ByVal serverID As String, ByVal vdirPath As String, ByVal criaApplication As Boolean) As DirectoryEntry Dim newvdir As DirectoryEntry Dim root As DirectoryEntry root = New DirectoryEntry