У меня есть сценарий 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
правда, и вам должно быть хорошо.