レプリカテスト環境を作成できるように、本番Webサーバーにインストールされる機能を指定するように求められました。
ソリューションへの道をポイントしてクリックすることはできますが、スクリプトを介してこれをどのように実行できるかについて興味があります。 PowershellまたはWMIが頭に浮かびます。レポートには、インストールされているすべての主要なシステム機能がバージョン番号とともに表示されます。理想的には、インストールされているオペレーティングシステムに関する情報も提供されます
Win32_ServerFeature は、WMIでスクリプトを作成する必要がある場合に探しているものです。これはWindows2008でのみ使用できます。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
お役に立てれば
Windows 2008 Serverでロールを追加、削除、およびクエリする方法について、MSDNからこのブログ投稿があります。
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
インストールされたWindows機能をエクスポートし、新しいサーバーにインポートするための this リンクをたどりました。
インストールされているすべての役割と機能を取得するには-
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 }
私はこれをWindowsServer 2012で試しましたが、他のバージョンでも機能するはずです。
上記の回答はServer2008R2で機能します(Powershell 5以降を実行している限り)が、これをAdd-WindowsFeature
にパイプする(またはDSCスクリプトを生成する)場合はおそらく機能しません。上記のリストには、一部のサブ機能が意図的に無効にされている場合、アプリケーションにとって望ましくない可能性のあるサブ機能が含まれることがあるため、目的の効果が得られます。
上記のスクリプトのこのバージョンは、私が望んでいたものを正確に提供しました。
Get-WindowsFeature | Where-Object { $_.Installed -eq $true -and $_.SubFeatures.Count -eq 0}