用于配置IIS6的开发人员工具

时间:2009-06-08 15:04:50

标签: asp.net iis

编辑: IIS6 ;我不确定IIS7在不久的将来是不是一个选择......

从开发人员的角度来看,我不断更改我的IIS设置,或者需要将其他团队的设置合并到不同的VM中。 “将配置保存到磁盘”对我来说从未真正起作用。

因为我们正在进行大量的小改动,所以网络安装项目从未真正发挥作用......针对网络管理员的工具不一定非常适合开发人员 - 我们有不同的目标和需求。

是否有人有脚本/工具/实用程序可以让我们快速配置IIS?特别是:

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

从一些平面输入列表中找到(任何格式都可以)。

6 个答案:

答案 0 :(得分:11)

我可以想到三个选项......

  1. Powershell管理单元。
  2. AdsUtil.vbs(默认情况下位于C:\ Inetpub \ AdminScripts中)将使您能够将这些任务编写为批处理文件,或者如果您没有时间投资学习,甚至可以从powershell调用它IIS的WMI界面。
  3. MSBuild脚本。可能更难配置,但MSBuild Extension Pack提供了从MSBuild脚本管理IIS6和IIS7的一些任务。
  4. 我认为如果我需要这样做,我会使用Powershell,或者将所有需求全部删除,并创建一个基本的VM安装,其中已经配置了所有基础知识。当我完成了teasting时我会只需回滚硬盘并可以自由再次使用。

答案 1 :(得分:4)

使用IIS administration snapin的PowerShell?

答案 2 :(得分:4)

我在节目中有点迟了但是我认为这个PowerShell脚本很有用,请注意我只将它用于我的本地开发盒,所以为神奇的数字道歉。

AuthFlags = 4是集成授权

它并不完全符合Marc的要求,但它是一个良好的开端。

如果您下载WMI Tools,可以使用它们来浏览IIS元数据库的WMI界面。

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

答案 3 :(得分:1)

Powershell会起作用。如果您想避免依赖,您还可以生成一个针对AdsUtil.vbs运行的脚本。

可能更容易标准化IIS7,其中所有这些东西都存在于web.config文件中,使生活更轻松。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

可能会或可能不会帮助但退房 http://rprieto.github.com/psDeploy/iis-6-cmdlets.html