Snap-in do PowerShell para IIS 7.0 IIsProviderSnapIn vs WebAdministration

1

Estou tentando instalar o Snap-in do Windows PowerShell para IIS 7.0 em um servidor que executa o servidor 2008 com service pack 2 instalado, para que eu possa usar o WebAdministration snappin.

Na instalação, estou diante de um erro

Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product.

Nem Get-PSSnapin nem Get-Module -ListAvailable mostram WebAdministration , mas eu tenho IIsProviderSnapIn listado. Além disso, o script forneceu uma resposta para IIS A administração usando o PowerShell 2 e os módulos no Windows 2008 R1 retorna False.

Esta é uma versão antiga de WebAdministration ?

Isso está listado em Programas e Recursos como "Microsoft Windows PowerShell provider for IIS 7.0"? e, em caso afirmativo, posso desinstalá-lo com segurança e instalar o snap-in do PowerShell a partir do link original?

(Ou, como alternativa, posso usar o IIsProviderSnapIn para obter uma lista de todos os sites atualmente em execução, como faria com o módulo Get-Website in WebAdministration ?)

    
por RYFN 04.10.2013 / 15:51

1 resposta

1

Embora eu ainda não saiba exatamente o que o IIsProviderSnapIn snap-in é comparado a WebAdministration , acabei com uma versão modificada de uma resposta para link
que carrega no WebAdministration snap-in ou módulo, se disponível, caso contrário, usa o 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
    }
}
    
por 07.10.2013 / 10:32