在Windows 2008 R1上使用PowerShell 2和模块的IISpipe理

我有一个PowerShell 2脚本来自动注册托pipe模块与IIS7。 使用PowerShell 2,我使用了import-module webadministrationpipe理而不是pipe理单元。

安装PowerShell 2时,是否可以在Window Server 2008 R1上安装IIS7 Webpipe理模块(而不是pipe理单元)? 如果是这样,怎么样?

这将有简化我的脚本的好处,否则,我将需要尝试针对两个不同的服务器平台。

不幸的是,在2008和2008R2上都不可能像IIS一样加载IIS提供程序。 2008年,IIS提供程序仅作为pipe理单元提供,在2008R2上仅作为模块提供。

通过一些编码,你可以确定使用哪一个,并根据需要dynamic加载模块或pipe理单元。 当我遇到类似问题时,我从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为真,并且您应该很好。