Administração do IIS usando o PowerShell 2 e os módulos no Windows 2008 R1

1

Eu tenho um script do PowerShell 2 para registrar automaticamente módulos gerenciados com o IIS7. Com o PowerShell 2, usei import-module webadministration em vez do snap-in.

É possível instalar o módulo de administração da Web IIS7 (em vez do snap-in) no Windows Server 2008 R1 quando o PowerShell 2 é instalado? Se sim, como?

Isso teria o benefício de simplificar meu script, caso contrário, precisarei tentar segmentar duas plataformas de servidor diferentes.

    
por Ryan Taylor 14.11.2010 / 22:53

1 resposta

2

Infelizmente, não é possível carregar o provedor do IIS como a mesma coisa em 2008 e 2008R2. Em 2008, o provedor do IIS é fornecido apenas como snap-in e, no 2008R2, é fornecido apenas como um módulo.

Com um pouco de codificação, você pode realmente determinar qual usar e carregar dinamicamente o módulo ou o snap-in no script, dependendo do que for necessário. Eu peguei este código do link quando estava tendo um problema parecido.

$ModuleName = "WebAdministration"
$ModuleLoaded = $false
$LoadAsSnapin = $false

if ($PSVersionTable.PSVersion.Major -ge 2) {
    if ((Get-Module -ListAvailable | ForEach-Object {$_.Name}) -contains $ModuleName) {
        Import-Module $ModuleName
        if ((Get-Module | ForEach-Object {$_.Name}) -contains $ModuleName) {
            $ModuleLoaded = $true
        } else {
            $LoadAsSnapin = $true
        }
    } elseif ((Get-Module | ForEach-Object {$_.Name}) -contains $ModuleName) {
        $ModuleLoaded = $true
    } else {
        $LoadAsSnapin = $true
    }
} else {
    $LoadAsSnapin = $true
}

if ($LoadAsSnapin) {
    if ((Get-PSSnapin -Registered | ForEach-Object {$_.Name}) -contains $ModuleName) {
        Add-PSSnapin $ModuleName
        if ((Get-PSSnapin | ForEach-Object {$_.Name}) -contains $ModuleName) {
            $ModuleLoaded = $true
        }
    } elseif ((Get-PSSnapin | ForEach-Object {$_.Name}) -contains $ModuleName) {
        $ModuleLoaded = $true
    }
}

Antes de tentar fazer qualquer coisa com o provedor do IIS, verifique se $ModuleLoaded é verdadeiro e se deve ir.

    
por 15.11.2010 / 21:04