我希望能够在脚本中检测 Windows Server 2008 安装是否启用了特定的 Windows 功能,并在必要时安装它们。我不想简单地使用“尝试安装该功能,即使它已经安装”的方法,因为我需要能够在安装时执行其他步骤。
例如,我知道我可以使用命令行安装 SNMP 服务:
pkgmgr /iu:SNMP
我不知道如何检查此包是否已安装,最好从 VBScript/WMI 安装,但如果有必要,也可以从命令行工具安装。
理想情况下,我还想找到一个不涉及 Powershell 的解决方案,因为我不想降低 Windows 2008 安装中默认设置的 powershell 执行权限。
答案1
在我看来,您可以使用 powershell 脚本(以管理员身份运行)轻松完成此操作。
以下是在以下位置找到的一个 powershell 脚本示例互联网:
#Powershell Script To Install SNMP Services
Import-Module ServerManager
#Check If SNMP Services Are Already Installed
$check = Get-WindowsFeature | Where-Object {$_.Name -eq "SNMP-Services"}
If ($check.Installed -ne "True") {
#Install/Enable SNMP Services
Add-WindowsFeature SNMP-Services | Out-Null
}
您可以在以下位置找到有关查找特征名称的更多信息:
Windows Server 2008 R2:通过 PowerShell 添加功能
如果可以选择 WMIC,请参阅以下文章:
新服务器核心提示
使用新的 Windows Server 2008 Core OCList 和 OCSetup CLI 工具添加和删除服务器角色
如果可以选择编程,请参阅此 stackoverflow 文章:
如何以编程方式检查 Windows Server 2008 中是否安装了服务器功能?
答案2
建议的答案实际上可以稍微简化一下:
$check = get-windowsfeature -name SNMP-Services
if ($check.Installed -ne "True") {
#Install/Enable SNMP Services
Add-WindowsFeature SNMP-Services | Out-Null
}
答案3
这是一个运行良好的 powershell 命令。它安装 SNMP 服务(SNMP 服务 + SNMP WMI 提供程序)
Servermanagercmd –install SNMP-Services