我有一個PowerShell腳本,用於配置IIS中的網站和Web應用程序設置。因此,我使用WebAdministration管理單元中的cmdlet。但是,此腳本需要在Windows 2008,Windows 7和Windows 2008 R2上運行。我需要它從用戶那裏以最小的麻煩運行。PowerShell:在IIS 7和IIS 7.5上的ps1腳本中加載Web管理
問題是,Windows 7和Windows 2008 R2使用隨WebAdministration一起安裝的IIS 7.5作爲模塊。在Windows 2008,我們已經安裝了它安裝WebAdministration作爲一個單元的IIS 7 PowerShell提供。
所以包括進口模塊WebAdministration腳本炸燬在IIS 7,但在IIS 7.5中工作正常,包括添加 - pssnapin Web管理在IIS 7.5上爆炸,但在IIS 7上正常工作。
因此,我們的解決方法是讓管理員在運行腳本之前手動加載適用於環境的WebAdministration。但這並不是最佳的,因爲很容易忘記哪個命令適用於哪種環境。我們可以創建兩個不同的腳本,但這會爲開發創建維護問題。
有沒有人解決過這個問題?有誰知道如何檢查環境,然後從PS腳本中調用相應的cmdlet?
--- ANSWER(我的情況)----
的解決方案是對代碼和預先配置的控制檯的組合。 IIS 7 PoSH提供程序包含一個桌面快捷方式,可啓動加載Web管理的PoSH控制檯。結合以下功能,我的腳本在所有三個系統上都像魅力一樣運行。
Function Load-WebAdmin {
$webAdminModule = get-module -ListAvailable
| ? { $_.Name -eq "webadministration" }
If ($webAdminModule -ne $null) {
import-module WebAdministration
}
}
這樣做的唯一問題是,儘管** import-module **可以多次運行,即使模塊已經加載也不會引發錯誤,但是如果snapin是snap-in,** add-pssnapin **會引發錯誤已經加載。 感謝您尋求可行解決方案的靈感。 – 2009-12-21 15:06:34
可以通過第二次調用ps-snapin來修復它是否已經在當前會話中加載 – GrayWizardx 2009-12-21 19:03:35
1.爲什麼你的第二個塊使用'Select'而不是'Where'? 「$ hasSnapin」似乎是一個很差的名字。或者應該有一些將列表變回布爾值的名稱,或者該名稱的起始處應該有'has'。 – jpmc26 2016-11-21 21:35:12