在Windows 2008服务器上导出已安装function的列表

我被要求指定安装在生产Web服务器上的function,以便创build副本testing环境。

我可以指出并点击我的解决scheme,但我很好奇如何通过脚本来完成。 Powershell或WMI会让人想起。 报告应显示与版本号一起安装的所有关键系统function。 理想情况下,它也会提供有关已安装的操作系统的一些信息

Win32_ServerFeature是你正在寻找的,如果你必须使用WMI编写脚本。 这仅适用于Windows 2008.下面是来自MSDN链接的示例VBScript代码。

strComputer = "FABRIKAM" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colFeatureList = objWMIService.ExecQuery _ ("SELECT Name FROM Win32_ServerFeature") For Each objFeature In colFeatureList WScript.Echo objFeature.Name Next 

在Server 2008 R2中,这非常简单:

 Import-Module ServerManager Get-WindowsFeature 

希望这可以帮助

MSDN中有关于如何在Windows 2008 Server上添加,删除和查询angular色的博客文章

从PowerShell命令提示符

 servermanagercmd.exe -query roles.xml 

请参阅完整的博客http://blogs.msdn.com/b/patricka/archive/2008/03/05/detecting-what-server-roles-are-installed-on-windows-server-2008.aspx

上面的答案适用于Server 2008R2(只要你运行的是Powershell 5或更高版本),但是如果你打算将其Add-WindowsFeatureAdd-WindowsFeature (或生成一个DSC脚本),你可能不会得到所需的效果,因为如果某些子function被故意禁用,上述列表有时会包含可能不适合您的应用程序的子function。

上述脚本的这个版本正是我想要的:

 Get-WindowsFeature | Where-Object { $_.Installed -eq $true -and $_.SubFeatures.Count -eq 0}