2008-12-11 4 views
1

У меня есть простой сценарий PowerShell, который использует WMI для создания веб-сайта в окне Vista. Да, я знаю, что у PowerShell есть IIS-провайдер для работы с IIS 7, но этот скрипт также должен поддерживать IIS 6.0, так что правила, которые выходят.Ошибка WMI/PowerShell: почему CreateSite создает * два * сайта внезапно?

В любом случае, сценарий работал нормально, но внезапно (и я имею в виду, что буквально я сделал нулевые изменения кода в скрипте), он начал создавать второй сломанный сайт для каждого вызова метода CreateNewSite. Ниже приведен сценарий. У кого-нибудь есть идеи?

$path = "C:\My Path\WebSite" 
$site = "TestSite" 
$hostHeader = "demo.blah.com" 

$service = Get-WmiObject -namespace "root\MicrosoftIISv2" -class "IIsWebService" 

$bindingClass = [wmiclass]'root\MicrosoftIISv2:ServerBinding' 
$bindings = $bindingClass.CreateInstance() 
$bindings.IP = "" 
$bindings.Port = "80" 
$bindings.Hostname = $hostHeader 

$result = $service.CreateNewSite($site, $bindings, $path) 

выше сценарий был просто создать сайт с именем «тестовый сайт», но теперь это также создание сайта под названием «SITE_1786339847» (число меняется, но это всегда похоже на то). Я выполнил скрипт, выполняющий одну строку за раз, и ни один сайт не создается до тех пор, пока не будет вызван метод CreateNewSite. Является ли WMI просто ошибкой?

ответ

1

Ой, ответил на мой вопрос. Я проверил исходный файл конфигурации IIS 7.0 и нашел потерянный виртуальный каталог, связанный с сайтом с ID 1786339847. Когда я удалил этот виртуальный каталог из файла конфигурации, скрипт снова начал работать правильно.

В случае, если кто-то сталкивается с чем-то похожим, возьмите идентификатор сайта для плохого сайта из диспетчера IIS перед его удалением, затем откройте C: \ Windows \ system32 \ inetsrv \ config \ applicationHost.config. Сканируйте файл для этого идентификатора и найдите любые осиротевшие ссылки на него. Убедитесь, что у вас есть резервная копия.