日期:2014-05-17 浏览次数:21158 次
'------------------------
'
' This is a simple script to create a new virtual FTP server.
'
' Call this script with "-?" for usage instructions
'
'------------------------
' Force explicit declaration of all variables
Option Explicit
On Error Resume Next
Dim bArgStart
Dim bVerbose
Dim iArgPort
Dim iArgSiteNumber
Dim iArgNum
Dim oArgs
Dim szArgComputers
Dim szArgIPAddress
Dim szArgRootDirectory
Dim szArgServerComment
bArgStart = True
bVerbose = False
iArgPort = 21
iArgSiteNumber = 0
szArgIPAddress = ""
szArgComputers = Array(1)
szArgComputers(0) = "LocalHost"
Set oArgs = WScript.Arguments
iArgNum = 0
While iArgNum < oArgs.Count
Select Case LCase(oArgs(iArgNum))
Case "-o","--port":
iArgNum = iArgNum + 1
iArgPort = oArgs(iArgNum)
Case "-i","--ipaddress":
iArgNum = iArgNum + 1
szArgIPAddress = oArgs(iArgNum)
Case "-r","--rootdirectory":
iArgNum = iArgNum + 1
szArgRootDirectory = oArgs(iArgNum)
Case "-t","--comment":
iArgNum = iArgNum + 1
szArgServerComment = oArgs(iArgNum)
Case "-c","--computer":
iArgNum = iArgNum + 1
szArgComputers = Split(oArgs(iArgNum),",",-1)
Case "-n","--sitenumber":
iArgNum = iArgNum + 1
iArgSiteNumber = CLng(oArgs(iArgNum))
Case "-d","--dontstart":
bArgStart = False
Case "-?","--help":
Call DisplayUsage
Case "-v","--verbose":
bVerbose = True
Case Else:
WScript.Echo "Unknown argument " & oArgs(iArgNum)
Call DisplayUsage
End Select
iArgNum = iArgNum + 1
Wend
If (szArgRootDirectory = "") Or (szArgServerComment = "") Then
If (szArgRootDirectory = "") Then
WScript.Echo "Missing Root Directory"
Else
WScript.Echo "Missing Server Comment"
End If
Call DisplayUsage
WScript.Quit(1)
End If
Call ASTCreateFtpSite(szArgIPAddress, szArgRootDirectory, szArgServerComment, iArgPort, szArgComputers, iArgSiteNumber, bArgStart)
Sub ASTCreateFtpSite(szIPAddress, szRootDirectory, szServerComment, iPortNum, szComputers, iSiteNumber, bStart)
Dim bDone
Dim iComputerIndex
Dim iIndex
Dim oFtpServer
Dim oFtpSite
Dim oMsFtpSvc
Dim oNewFtpServer
Dim oNewDir
Dim szBindings
Dim szBindingString
Dim szComp
Dim szNewBindings
On Error Resume Next
For iComputerIndex = 0 To UBound(szComputers)
szComp = szComputers(iComputerIndex)
If iComputerIndex <> UBound(szComputers) Then
Trace "Creating FTP site on " & szComp & "."
End If
' Grab the ftp service object
Err.Clear
Set oMsFtpSvc = GetObject("IIS://" & szComp & "/MSFTPSVC")
If Err.Number <> 0 Then
Display "Unable to open: " & "IIS://" & szComp & "/MSFTPSVC"
End If
szBindingString = szIPAddress & ":" & iPortNum & ":"
Trace "Making sure this FTP server doesn't conflict with another..."
For Each oFtpServer in oMsFtpSvc
If oFtpServer.Class = "IIsFtpServer" Then
szBindings = oFtpServer.ServerBindings
If szBindingString = szBindings(0) Then
Display "The server bindings you specified are duplicated in another virtual FTP server."
WScript.Quit (1)
End If
End If
Next
iIndex = 1
bDone = False
Trace "Creating new FTP