我正在尝试在 powershell 中执行 IIS 操作。我们的客户可能拥有 windows 2008 R2 或 Sp2。
不幸的是,在 Windows 2008 Sp2 中,Webadministration 是一个管理单元,而在 R2 中,它是一个模块。
如果我们的脚本要在生产环境的 diff 服务器中使用,如何确保我们的脚本不会在其中一台机器上中断?
我正在尝试在 powershell 中执行 IIS 操作。我们的客户可能拥有 windows 2008 R2 或 Sp2。
不幸的是,在 Windows 2008 Sp2 中,Webadministration 是一个管理单元,而在 R2 中,它是一个模块。
如果我们的脚本要在生产环境的 diff 服务器中使用,如何确保我们的脚本不会在其中一台机器上中断?
您可以测试 pssnapin 是否存在:
if ( [bool]((Get-PSSnapin -Registered) -match 'Webadministration') )
{
add-pssnapin Webadministration
}
else
{
import-module Webadministration
}
您还可以测试模块的存在:
[bool]((get-module -ListAvailable) -match "Webadministration")
或者您可以使用 wmi 测试操作系统:
(gwmi Win32_OperatingSystem ).caption
并根据标题值添加 pssnapin 或 mudule
编辑:
快捷方式:
if (!(import-module Webadministration -ea silentlycontinue) #on error return $false
{
add-pssnapin Webadministration
}