2009-06-08 7 views
12

editar: IIS6; No estoy seguro de que IIS7 sea una opción en el futuro inmediato ...Herramienta de desarrollador para configurar IIS6

Desde un ángulo de desarrollador, estoy cambiando constantemente mi configuración de IIS o necesito fusionar configuraciones de otros equipos en diferentes máquinas virtuales. El "Guardar configuración en disco" nunca funcionó bien para mí.

Debido a que estamos realizando muchos pequeños cambios, los proyectos de instalación web nunca funcionaron realmente ... Las herramientas destinadas a la administración web no son necesariamente adecuadas para el desarrollador; tenemos diferentes objetivos y necesidades.

¿Alguien tiene un script/herramienta/utilidad que nos permita configurar rápidamente IIS? En particular:

  • eliminar todo (inicio limpio)
  • añadir una carga de directorios virtuales, cada asignan a corrido de bases aplicación
  • conjunto como una aplicación
  • configurar la aplicación piscina (nos 'll asumir el grupo de aplicación ya existe)
  • establecer la versión de ASP.NET para 2.x si es necesario

f rom algún hallazgo de lista de entrada plana (cualquier formato haría).

Respuesta

11

puedo pensar en tres opciones de la parte superior de mi cabeza ...

  1. PowerShell.
  2. AdsUtil.vbs (ubicado en C: \ Inetpub \ AdminScripts de forma predeterminada) le permitirá ejecutar esas tareas en un archivo por lotes, o incluso podría llamarlo desde powershell si no tiene tiempo para invertir el aprendizaje la interfaz WMI para IIS.
  3. MSBuild script. Probablemente sea más difícil de configurar pero el MSBuild Extension Pack proporciona algunas tareas para administrar tanto IIS6 como IIS7 desde un script de MSBuild.

Creo que si era yo tener que hacer esto, me gustaría utilizar Powershell, o eliminar la necesidad de todos juntos y crear una base de VM instalar que tenían todos los elementos básicos ya configurados. Cuando he terminado con el teasting Simplemente retrocedería el disco duro y sería libre de volver.

1

Powershell funcionaría. Si quería evitar dependencias, también podría generar una secuencia de comandos para ejecutar contra AdsUtil.vbs.

Probablemente sería más fácil estandarizar en IIS7 donde todo esto vive en archivos web.config que hacen la vida mucho más fácil.

1

Es posible que desee buscar en los archivos de configuración XML de Metabase para IIS y permitir la edición directa.

4

Llego un poco tarde al show pero pensé que este script de PowerShell podría ser útil, tenga en cuenta que solo uso esto para mi cuadro de desarrollo local así que le pido disculpas por los números mágicos.

AuthFlags = 4 está integrado autorización

No cumple exactamente los requisitos de Marc, pero es un buen comienzo.

Si descarga WMI Tools puede usarlos para explorar la interfaz WMI a la metabase de IIS.

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 
Cuestiones relacionadas