关于asp.net:Developer工具,用于配置IIS6

Developer tool for configuring IIS6

编辑:iis6;我不确定iis7是否是近期的选择…

从开发人员的角度来看,我一直在更改我的IIS设置,或者需要将其他团队的设置合并到不同的虚拟机中。"将配置保存到磁盘"对我来说从来没有真正的效果。

因为我们做了很多小改动,Web安装项目也从来没有真正工作过…针对网络管理员的工具不一定适合开发人员——我们有不同的目标和需求。

是否有任何人拥有允许我们快速配置IIS的脚本/工具/实用程序?特别地:

  • 移除所有东西(开始清理)
  • 添加一个虚拟目录负载,每个目录映射到应用程序基路径
  • 设置为应用程序
  • 设置应用程序池(我们假设应用程序池已经存在)
  • 如果需要,将ASP.NET版本设置为2.x

从平面输入列表的一些发现(任何格式都可以)。


我可以想出三个办法…

  • PowerShell管理单元。
  • adsutil.vbs(默认情况下位于c:inetpubadminscripts中)将使您能够将这些任务编写成批处理文件,或者如果您没有时间投资学习IIS的WMI接口,甚至可以从PowerShell调用它。
  • msbuild脚本。可能更难配置,但msbuild扩展包提供了一些任务,用于从msbuild脚本管理iis6和iis7。
  • 我认为如果我需要这样做,我将使用PowerShell,或者一起删除所有的需求,并创建一个基本的VM安装,其中已经配置了所有的基础知识。当我玩完戏弄后,我只需回滚硬盘驱动器就可以自由地再去了。


    我有点晚了,但我认为这个PowerShell脚本很有用,请注意,我只在本地开发框中使用这个脚本,所以对这些神奇的数字深表歉意。

    AuthFlags=4是集成授权

    这并不能完全满足马克的要求,但这是一个良好的开端。

    如果下载了WMI工具,则可以使用它们来探索到IIS元数据库的WMI接口。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    function CreateAppPool($poolName,$userName,$password)
    {
        [wmiclass] $appPoolSettings ="root\MicrosoftIISv2:IISApplicationPoolSetting";
        $newPool = $appPoolSettings.CreateInstance();
        $newPool.Name ="W3SVC/AppPools/" + $poolName;
        $newPool.WAMUsername = $userName;
        $newPool.WAMUserPass = $password;
        $newPool.AppPoolIdentityType = 3;
        $newPool.Put();
        # Do it again if it fails as there is a bug with Powershell/WMI
        if (!$?)
        {
            $newPool.Put();
        }
    }


    function CreateWebsite($webSiteName, $path, $port, $appPoolName)
    {
        [wmiclass] $bindingClass = 'root\MicrosoftIISv2:ServerBinding';
        $bindings = $bindingClass.CreateInstance();
        $bindings.Port = $port;
        $webService = Get-WmiObject -namespace"root\MicrosoftIISv2" -class"IIsWebService";
        $webSite = $webService.CreateNewSite($webSiteName, $bindings, $path);
        [int] $index = $webSite.ReturnValue.IndexOf("'") + 1;
        [int] $length = $webSite.ReturnValue.Length - $index - 1;
        [string] $websiteID = $webSite.ReturnValue.SubString($index, $length)  +"/root";
        $webVirtualDirSetting = Get-WmiObject -namespace"root\MicrosoftIISv2" -class"IIsWebVirtualDirSetting" | Where-Object {$_.Name -eq $websiteID};
        $webVirtualDirSetting.AppFriendlyName = $webSiteName;
        $webVirtualDirSetting.AppPoolId = $appPoolName;
        $webVirtualDirSetting.AccessFlags = 517;
        $webVirtualDirSetting.AuthFlags = 4;
        $webVirtualDirSetting.Put();

        #Switch the Website to .NET 2.0
        C:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -sn W3SVC/
    }

    $webSiteName ="MyWebsiteName";
    $webSitePath ="C:\MyWebsitePath";
    $webSitePort ="9001";
    $appPoolName ="MyWebsitePool";
    $appPoolIdentity ="MYDESKTOP\MyWebsiteIdentity";
    $appPoolPassword ="MyWebsitePassword";

    CreateAppPool $appPoolName $appPoolIdentity $appPoolPassword
    CreateWebsite $webSiteName $webSitePath $webSitePort $appPoolName


    带IIS管理单元的PowerShell?


    可能会,也可能不会,但退房http://rprieto.github.com/psdeploy/iis-6-cmdlets.html


    您可能需要查看IIS的元数据库XML配置文件并允许直接编辑。


    PowerShell可以工作。如果您想避免依赖关系,还可以生成一个脚本来针对adsutil.vbs运行。

    可能更简单的方法是在iis7上实现标准化,在iis7中,所有这些东西都保存在web.config文件中,从而使生活更加轻松。