Windows-Server-2008
在 Windows 2008 R1 上使用 PowerShell 2 和模組進行 IIS 管理
我有一個 PowerShell 2 腳本來自動向 IIS7 註冊託管模組。我使用 PowerShell 2
import-module webadministration
而不是管理單元。安裝 PowerShell 2 後,是否可以在 Window Server 2008 R1 上安裝 IIS7 Web 管理模組(而不是管理單元)?如果是這樣,怎麼做?
這將有利於簡化我的腳本,否則,我將需要嘗試針對兩個不同的伺服器平台。
不幸的是,不可能在 2008 和 2008R2 上將 IIS 提供程序載入為相同的東西。在 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
是真的,您應該一切順利。