IIS нового элемента: \ Sites \ SiteName - индекс находился за пределами массива - PullRequest
15 голосов
/ 01 декабря 2011

Я создал функцию для создания сайта в IIS, но у меня возникает странная ошибка.

Вот URL-адрес, который я использовал в качестве ссылки:

http://learn.iis.net/page.aspx/433/powershell-snap-in-creating-web-sites-web-applications-virtual-directories-and-application-pools/

New-Item: индекс находился за пределами массива.

В строке: 1 символ: 9 + New-Item <<<< 'IIS: \ Sites \ SiteName' -PhysicalPath "$ sitePath" -bindings @ {protocol = "$ protocol"; bindingInformation = "$ fullBindings"} + CategoryInfo: NotSpecified: (:) [New-Item], IndexOutOfRangeException + FullyQualifiedErrorId: System.IndexOutOfRangeException, Microsoft.PowerShell..NewItemCommand </p>

Вот блок кода, который вызывает функцию:

    function Create-FullSite($site, $framework, $userName, $password, $protocol, $port, $enabledProtocols)
            {
                #Write-Host "Prompting for path to "
                $sitePath = Select-Folder

                #Write-Host $sitePath

                #Write-Host "Setting up app pool for "
                $csServicePool = New-Item -Path iis:\AppPools\$site

                #Write-Host "Configuring app pool"
                Set-ItemProperty -Path IIS:\AppPools\$site -name managedRuntimeVersion -value $framework
                $csServicePool.processModel.username = $userName
                $csServicePool.processModel.password = $password
                $csServicePool.processModel.identityType = 3
                $csServicePool  | set-item 

                #Write-Host "Creating IIS Site "

                $fullBindings = ':'+$port.ToString()+':'
                Write-Host $fullBindings

                Write-Host $site    
                Write-Host $sitePath
                Write-Host $protocol

                New-Item IIS:\Sites\$site -physicalPath "$sitePath" -bindings @{protocol="$protocol";bindingInformation="$fullBindings"}

                #Write-Host "Assigning App pool to "



                Set-ItemProperty -Path IIS:\Sites\$site -name ApplicationPool -value $site

                #Write-Host "setting applicationDefaults.enabledProtocols: "
                Set-ItemProperty -Path IIS:\Sites\$site -name applicationDefaults.enabledProtocols -value "$enabledProtocols"

                return $sitePath
            }   

    $ServicesSiteName = 'MyNewSite'
            $ServicesPort = '80'
            $ServiceBindings = 'http'

            $csWebServiceUserName = 'domain\someUser'
            $csWebServicePassword = 'AReallyComplexPassword'

            $v2Framework = 'v2.0'
            $v4Framework = 'v4.0'

           Create-FullSite $ServicesSiteName $v2Framework $csWebServiceUserName $csWebServicePassword $ServiceBindings $ServicesPort $ServiceBindings

1 Ответ

26 голосов
/ 09 декабря 2011

Оказывается, если вы удаляете все сайты в IIS, всегда выдается исключение «Индекс вне диапазона». У меня такое ощущение, что он пытается создать идентификатор сайта и не может найти следующий в списке. Эта статья помогла мне решить проблему. http://forums.iis.net/t/1159761.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...