Ошибка WMI / PowerShell: почему CreateSite внезапно создает * два * сайта? - PullRequest
1 голос
/ 11 декабря 2008

У меня есть простой сценарий PowerShell, который использует WMI для создания веб-сайта на Windows Vista. Да, я знаю, что в PowerShell есть поставщик IIS для работы с IIS 7, но этот сценарий также должен поддерживать IIS 6.0, что исключает это.

В любом случае, скрипт работал просто отлично, но внезапно (и я имею в виду, что буквально я сделал нулевые изменения кода в скрипте) он начал создавать второй сломанный сайт для каждого вызова метода 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)

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

1 Ответ

1 голос
/ 11 декабря 2008

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

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

...