背景
我正在尝试根据现有虚拟目录及其子目录的位置自动创建虚拟目录。
示例:
C:\网站已\父\ NewVirtualDirectories
其中Parent是虚拟目录,NewVirtualDirectories包含任何自动虚拟目录。
问题
使用以下代码:
Option Explicit
Dim args, strComputer, strVdirName, strVdirPath, objVdir, objIIS, objWebSite
Set args = WScript.Arguments
strComputer = "localhost"
strVdirName = args(1)
strVdirPath = args(0)
Set objIIS = GetObject("IIS://" & strComputer & "/W3SVC/1")
Set objWebSite = objIIS.GetObject("IISWebVirtualDir","Root/Parent")
Set objVdir = objWebSite.Create("IISWebVirtualDir",strVdirName)
objVdir.AccessRead = True
objVdir.Path = strVdirPath
objVdir.AppCreate (True)
objVdir.SetInfo
WScript.Quit
我可以在Parent下创建子项,但它们直接显示在父项下。我需要它们在子文件夹中。
我得到:http://localhost/Parent/NewSite
我想:http://localhost/Parent/NewVirtualDirectories/NewSite
我试过
Set objWebSite = objIIS.GetObject("IISWebVirtualDir","Root/Parent/NewVirtualDirectories")
但NewVirtualDirectories不是虚拟目录(我不希望它),所以我收到错误。当我在IIS管理器中手动执行此操作时,我可以获得所需的效果,但我无法弄清楚如何自动化它。
非常感谢任何帮助。
答案 0 :(得分:0)
修改强>
对于那些面临类似问题的人,我找到了很好的VBScript-ing资源
http://www.cruto.com/resources/vbscript/vbscript-examples/vbscript-sitemap.asp
经过多次挖掘(试错)后,我才弄清楚了。
通过将现有文件夹引用为 IISWebDirectory ,我可以选择它,然后创建应用程序而无需创建虚拟目录。
Option Explicit
Dim args, strComputer, strVdirName, strVdirPath, objVdir, objIIS, objWebSite
Set args = WScript.Arguments
strComputer = "localhost"
strVdirName = args(1)
strVdirPath = args(0)
Set objIIS = GetObject("IIS://" & strComputer & "/W3SVC/1")
Set objVdir = objIIS.GetObject("IISWebDirectory","Root/Parent/NewVirtualDirectories/" + strVdirName)
objVdir.AccessRead = True
objVdir.AccessScript = True
objVdir.AppFriendlyName = strVdirName
objVdir.AppCreate (True)
objVdir.SetInfo
WScript.Quit