Меня попросили указать функции, которые установлены на производственном веб-сервере, чтобы можно было создать тестовую среду реплики.
Я мог бы указать и щелкнуть свой путь к решению, но мне любопытно, как это можно сделать с помощью сценария. На ум приходят Powershell или WMI. В отчете должны быть показаны все установленные ключевые системные функции и номера версий. В идеале это также даст некоторую информацию об установленной операционной системе.
В Server 2008 R2 это очень просто:
Import-Module ServerManager
Get-WindowsFeature
Надеюсь это поможет
Win32_ServerFeature это то, что вы ищете, если вам нужно создать сценарий с WMI. Это только для Windows 2008. Пример кода VBScript из ссылки MSDN следует.
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
Это сообщение в блоге от MSDN о том, как добавлять, удалять и запрашивать роли на Windows 2008 Server.
Из командной строки 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-WindowsFeature
(или сгенерировав сценарий DSC) вы, вероятно, не получите желаемого эффекта, поскольку приведенные выше списки иногда будут включать вспомогательные функции, которые могут быть нежелательными для вашего приложения, если некоторые из этих функций намеренно отключены.
Эта версия приведенного выше скрипта дала именно то, что я хотел:
Get-WindowsFeature | Where-Object { $_.Installed -eq $true -and $_.SubFeatures.Count -eq 0}
Я последовал за этот ссылка для экспорта установленных функций Windows и импорта их на новый сервер.
Чтобы просто получить все установленные роли и функции -
Get-WindowsFeature | where{$_.Installed -eq $True} | select displayname,name
Экспортируйте все роли в файл .csv, чтобы потом использовать его на другом сервере -
Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:\scripts\Roles.csv -NoTypeInformation -Verbose
Теперь вы можете использовать этот файл .csv на новом сервере с точно такими же ролями и функциями -
Import-Csv C:\scripts\Roles.csv | foreach{Add-WindowsFeature $_.name }
Я пробовал это на Windows Server 2012, и я думаю, что он должен работать и для других версий.