如何删除多个虚拟目录?

时间:2012-03-15 08:21:13

标签: iis web

我需要删除大量的虚拟目录,其中一些没有相关的物理目录 想法?

2 个答案:

答案 0 :(得分:5)

由于你需要删除大量的内容,我猜你会想要使用某种形式的脚本。

IIS 6.0 ,使用IISvdir.vbs(article @ MSDN):

在命令提示符下,使用cd命令切换到安装Iisvdir.vbs脚本的目录。此文件的默认位置是systemroot / system32 / iisvdir.vbs。

在命令提示符下,键入:

cscript iisvdir.vbs /delete "Sample Web Site" VirtualDirectoryName.

根据需要替换您的网站名称和虚拟目录名称。如果网站名称中有空格,请在网站名称周围使用引号,如上例所示。

使用AppCmd.exearticle @ TechNet

IIS 7

要删除虚拟目录,请使用以下语法:

appcmd delete vdir /vdir.name: string

变量vdir.namestring是虚拟目录的虚拟路径。

例如,要从名为contoso的站点的根应用程序中删除名为photos的虚拟目录,请在命令提示符处键入以下命令,然后按Enter:

appcmd delete vdir /vdir.name: contoso / photos

要从名为contoso的站点中名为marketing的应用程序中删除名为photos的虚拟目录,请在命令提示符处键入以下命令,然后按Enter:

appcmd delete vdir /vdir.name: contoso / marketing / photos

HTH

答案 1 :(得分:1)

您也可以编写一个msbuild脚本来执行此操作并使用可用的msbuild扩展包here。我已成功地使用它来完成你在iis 6和iis 7.5中为100多个vdir所说的内容。

它非常简单,编写.proj文件花了我更长的时间,而不是弄清楚如何去做。

玩得开心:)

生成的msbuild目标如下所示

  <Target Name="IIS7VirtualDirectories:Delete">
    <MSBuild.ExtensionPack.Web.Iis7Application
      TaskAction="Delete"
      Website="%(Application.WebsiteName)"
      Applications="@(Application)"
      MachineName="$(MachineName)"
      ContinueOnError="false"/>

     <MSBuild.ExtensionPack.Web.Iis7Website 
      TaskAction="DeleteVirtualDirectory" 
      Name="%(VirtualDirectory.WebsiteName)" 
      VirtualDirectories="@(VirtualDirectory)"
      ContinueOnError="false"
      MachineName="$(MachineName)"/>    
    </Target>

在外部项目文件中定义Application和VirtualDirectory:)