2009-06-08 84 views
12

编辑:IIS6;我不确定在不久的将来IIS7是一种选择...用于配置IIS6的开发工具

从开发人员角度来看,我经常更改我的IIS设置,或者需要将其他团队的设置合并到不同的VM中。 “保存配置到磁盘”从来没有真正适用于我。

因为我们做了很多小的修改,网络安装项目从未真正起作用......针对网络管理员的工具不一定非常适合开发者 - 我们有不同的目标和需求。

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

  • 除去一切(开始清洁)
  • 添加虚拟目录的负荷,每个映射到应用基路径
  • 组作为应用
  • 设置应用池(我们“会假定应用程序池已存在)
  • 设置ASP.NET版本2.X如果需要

˚F从一些平面输入列表的查找(任何格式都可以)。

回答

11

我能想到的三个选项中把我的头顶部...

  1. PowerShell的管理单元。
  2. AdsUtil.vbs(默认情况下位于C:\ Inetpub \ AdminScripts)将使您能够将这些任务编写为批处理文件,或者如果您没有时间投入学习,甚至可以从PowerShell中调用它IIS的WMI界面。
  3. MSBuild脚本。可能难以配置,但MSBuild Extension Pack提供了一些用于从MSBuild脚本管理IIS6和IIS7的任务。

我想,如果是我需要做到这一点,我会用PowerShell或删除需要一起并创建一个基准VM安装了所有的基本知识已经配置的。当我与teasting完成我只是回滚硬盘,然后可以自由重走。

1

Powershell会工作。如果你想避免依赖,你也可以生成一个脚本来针对AdsUtil.vbs运行。

可能会更容易在IIS7上进行标准化,所有这些东西都存放在web.config文件中,使生活变得更加简单。

1

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

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