我有一个PowerShell脚本,用于配置IIS中的网站和Web应用程序设置.因此,我在WebAdministration管理单元中使用cmdlet.但此脚本需要在Windows 2008,Windows 7和Windows 2008 R2上运行.我需要它来运行用户的最小问题.
问题是Windows 7和Windows 2008 R2使用IIS 7.5作为模块安装WebAdministration.在Windows 2008上,我们安装了IIS 7 PowerShell提供程序,该提供程序将WebAdministration安装为快照.
因此,包括脚本中的导入模块WebAdministration在IIS 7上爆炸,但在IIS 7.5上工作正常,并且包括add-pssnapin WebAdministration在IIS 7.5上爆炸,但在IIS 7上工作正常.
因此,我们的解决方法是让管理员在运行脚本之前使用适当的环境命令手动加载WebAdministration.但这不是最佳的,因为很容易忘记哪个命令在哪个环境中起作用.我们可以创建两个不同的脚本,但这会产生开发的维护问题.
有人解决了这个问题吗?有谁知道如何检查环境,然后从PS脚本中调用适当的cmdlet?
---答案(根据我的情况)----
该解决方案是代码和预配置控制台的组合.IIS 7 PoSH Provider包含一个桌面快捷方式,用于启动加载了WebAdministration的PoSH控制台.结合以下功能使我的脚本在所有三个系统上都像魅力一样运行.
Function Load-WebAdmin {
$webAdminModule = get-module -ListAvailable
| ? { $_.Name -eq "webadministration" }
If ($webAdminModule -ne $null) {
import-module WebAdministration
}
}
Run Code Online (Sandbox Code Playgroud)