Инструмент разработчика для настройки IIS6

изменить: IIS6; Я не уверен, что IIS7 - это вариант в ближайшем будущем...

От угла разработчика я постоянно меняю настройки IIS или нужно объединить настройки из других команд в разные виртуальные машины. "Сохранить конфигурацию на диск" никогда не работало хорошо для меня.

Поскольку мы делаем множество небольших изменений, проекты веб-инсталляции никогда не работали ни... Инструменты, предназначенные для веб-администратора, не обязательно подходят для разработчика - у нас разные цели и потребности.

У кого-нибудь есть script/tool/utility, который позволит нам быстро настроить IIS? В частности:

  • удалить все (начать чистку)
  • добавить загрузку виртуальных каталогов, каждая из которых привязана к базовым путям приложений
  • устанавливается как приложение
  • установить приложение-пул (предположим, что пул приложений уже существует)
  • установите версию ASP.NET на 2.x при необходимости

из некоторой находки плоского списка ввода (любой формат будет делать).

Ответ 1

Я могу думать о трех вариантах от верхней части головы...

  • оснастка Powershell.
  • AdsUtil.vbs(находится в C:\Inetpub\AdminScripts по умолчанию) позволит вам script выполнять эти задачи в пакетном файле, или вы даже можете вызвать его из powershell, если у вас нет времени на инвестировать изучение интерфейса WMI для IIS.
  • MSBuild script. Вероятно, сложнее настроить, но MSBuild Extension Pack предоставляет некоторые задачи для управления IIS6 и IIS7 из MSBuild script.

Я думаю, если бы мне это нужно было сделать, я бы использовал Powershell или удалил все вместе и создал базовую установку VM, в которой были уже настроены все основы. Когда я закончил с пищей, я бы просто откатите жесткий диск и будьте свободны снова.

Ответ 3

Я немного опоздал на шоу, но я подумал, что этот PowerShell script мой будет полезен, помните, что я использую это только для своей локальной коробки разработки, поэтому извиняюсь за магические числа.

AuthFlags = 4 - встроенная авторизация

Это точно не соответствует требованиям Marc, но это хорошее начало.

Если вы загрузите WMI Tools, вы можете использовать их для изучения интерфейса WMI для метабазы ​​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

Ответ 4

Powershell будет работать. Если вы хотите избежать зависимостей, вы также можете создать script для работы с AdsUtil.vbs.

Вероятно, проще было бы стандартизировать IIS7, где все это происходит в файлах web.config, что делает жизнь намного проще.

Ответ 5

Возможно, вы захотите ознакомиться с конфигурационными файлами Metabase XML для IIS и разрешить прямое редактирование.