Назад | Перейти на главную страницу

Оснастка PowerShell для IIS 7.0 IIsProviderSnapIn vs WebAdministration

Я пытаюсь установить Оснастка Windows PowerShell для IIS 7.0 на сервере под управлением server 2008 с установленным пакетом обновления 2, поэтому я могу использовать WebAdministration snappin.

При установке я столкнулся с ошибкой

Другая версия этого продукта уже установлена. Установка этой версии не может быть продолжена. Чтобы настроить или удалить существующую версию этого продукта.

Ни Get-PSSnapin, ни Get-Module -ListAvailable не показывают WebAdministration, но у меня есть IIsProviderSnapIn перечисленные. Кроме того, сценарий предоставлен как ответ на Администрирование IIS с помощью PowerShell 2 и модулей в Windows 2008 R1 возвращает False.

Это старая версия WebAdministration ?

Это указано в разделе «Программы и компоненты» как «Поставщик Microsoft Windows PowerShell для IIS 7.0»? и если да, могу ли я безопасно удалить его и установить оснастку PowerShell по исходной ссылке?

(Или, как вариант, могу ли я использовать IIsProviderSnapIn для получения списка всех запущенных в данный момент сайтов, как я бы сделал с Get-Website в WebAdministration модуль?)

Хотя я все еще не уверен, что именно IIsProviderSnapIn оснастка сравнивается с WebAdministration, Я получил модифицированную версию ответа на https://stackoverflow.com/questions/1924217/powershell-load-webadministration-in-ps1-script-on-both-iis-7-and-iis-7-5
который загружается в WebAdministration оснастка или модуль, если они доступны, в противном случае используется IIsProviderSnapIn.

$iisVersion = Get-ItemProperty "HKLM:\software\microsoft\InetStp"
$useIISProviderSnappin = $False

if ($iisVersion.MajorVersion -eq 7)
{
    if ($iisVersion.MinorVersion -ge 5)
    {
        Import-Module WebAdministration
    }           
    else
    {

        if(Get-PSSnapIn -Registered | Where {$_.Name -eq "WebAdministration"}) 
        {
            if (-not (Get-PSSnapIn | Where {$_.Name -eq "WebAdministration"})) 
            {
                Add-PSSnapIn WebAdministration
            }
        }
        elseif(Get-PSSnapIn -Registered | Where {$_.Name -eq "IIsProviderSnapIn"})
        {
            #older versions of server 2008 don't have the webadministration module!
            if (-not (Get-PSSnapIn | Where {$_.Name -eq "IIsProviderSnapIn"})) 
            {
                Add-PSSnapIn IIsProviderSnapIn
            }

            $useIISProviderSnappin = $True
        }
        else 
        {
            throw "Unable to import any suitable modules... :( "
        }
    }
}

Function Get-IISWebsite()
{
    if($useIISProviderSnappin)
    {
        return dir iis:\sites
    }
    else
    {
        return Get-Website
    }
}