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

Администрирование IIS с помощью PowerShell 2 и модулей в Windows 2008 R1

У меня есть сценарий PowerShell 2 для автоматической регистрации управляемых модулей в IIS7. С PowerShell 2 я использовал import-module webadministration а не оснастку.

Можно ли установить модуль веб-администрирования IIS7 (а не оснастку) на Window Server 2008 R1 при установленном PowerShell 2? Если да, то как?

Это поможет упростить мой сценарий, в противном случае мне нужно будет попытаться настроить таргетинг на две разные серверные платформы.

К сожалению, невозможно загрузить поставщик IIS как одно и то же в 2008 и 2008R2. В 2008 году поставщик IIS предоставляется только в виде оснастки, а в 2008R2 он предоставляется только в виде модуля.

Немного написав код, вы можете фактически определить, что использовать, и динамически загрузить модуль или оснастку в свой сценарий, в зависимости от того, что необходимо. Я взял этот код из http://forums.iis.net/t/1166784.aspx когда у меня была аналогичная проблема.

$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
    }
}

Прежде чем пытаться что-либо сделать с поставщиком IIS, убедитесь, что $ModuleLoaded правда, и вам должно быть хорошо.