on Error Resume Next DIM OSType DIM ACTION DIM errorcode DIM complist DIM val DIM TempFilename, TempFolder, TempPath DIM RawComponents DIM RawList DIM bFoundcomponent DIM InstallCompList DIM InstallList DIM Result DIM MaxComponents if (wscript.Arguments.Count < 2) Then MsgBox ("Insuffient Arguements") Else OSType = Wscript.Arguments(0) ACTION = wscript.Arguments(1) End if InstallList = "" errorcode=1 if ((OSType = "vista") or (OSType = "win7")) Then if (OSType = "vista") Then InstallCompList = Array("WAS-ProcessModel;","IIS-StaticContent;","IIS-DefaultDocument;","IIS-DirectoryBrowsing;","IIS-HttpErrors;","IIS-HttpRedirect;","IIS-ASPNET;","IIS-ISAPIExtensions;","IIS-ISAPIFilter;","IIS-NetFxExtensibility;","IIS-ASP;","IIS-CGI;","IIS-ServerSideIncludes;","IIS-HttpLogging;","IIS-LoggingLibraries;","IIS-RequestMonitor;","IIS-HttpTracing;","IIS-CustomLogging;","IIS-ODBCLogging;","IIS-BasicAuthentication;","IIS-WindowsAuthentication;","IIS-DigestAuthentication;","IIS-ClientCertificateMappingAuthentication;","IIS-IISCertificateMappingAuthentication;","IIS-URLAuthorization;","IIS-RequestFiltering;","IIS-IPSecurity;","IIS-HttpCompressionStatic;","IIS-HttpCompressionDynamic;","IIS-ManagementConsole;","IIS-ManagementScriptingTools;","IIS-ManagementService;","IIS-Metabase;","IIS-WMICompatibility;","IIS-LegacyScripts;","IIS-LegacySnapIn;","IIS-FTPServer;","WAS-ConfigurationAPI;","WAS-NetFxEnvironment;") complist = Array("ProcessModel","StaticContent","DefaultDocument","DirectoryBrowse","HttpErrors","HttpRedirect","ASPNET","ISAPIExtensions","ISAPIFilter","NetFxExtensibility","ASP","CGI","ServerSideInclude","HttpLogging","LoggingLibraries","RequestMonitor","HttpTracing","CustomLogging","ODBCLogging","BasicAuthentication","WindowsAuthentication","DigestAuthentication","ClientCertificateMappingAuthentication","IISCertificateMappingAuthentication","Authorization","RequestFiltering","IPSecurity","HttpCompressionStatic","HttpCompressionDynamic","ManagementConsole","ManagementScriptingTools","AdminService","Metabase","WMICompatibility","LegacyScripts","LegacySnapIn","FTPServer","WASConfigurationAPI","NetFxEnvironment") MaxComponents=40 else InstallCompList = Array("IIS-ClientCertificateMappingAuthentication;","IIS-DefaultDocument;","IIS-HttpCompressionStatic;","IIS-HttpErrors;","IIS-HttpLogging;","IIS-HttpRedirect;","IIS-HttpTracing;","IIS-IISCertificateMappingAuthentication;","IIS-ISAPIExtensions;","IIS-ISAPIFilter;","IIS-LoggingLibraries;","IIS-Metabase;","IIS-RequestFiltering;","IIS-RequestMonitor;","IIS-ServerSideIncludes;","IIS-StaticContent;","IIS-WMICompatibility;","WAS-ProcessModel;","IIS-DirectoryBrowsing;","IIS-ASPNET;","IIS-NetFxExtensibility;","IIS-ASP;","IIS-CGI;","IIS-CustomLogging;","IIS-ODBCLogging;","IIS-BasicAuthentication;","IIS-WindowsAuthentication;","IIS-DigestAuthentication;","IIS-URLAuthorization;","IIS-IPSecurity;","IIS-HttpCompressionDynamic;","IIS-ManagementConsole;","IIS-ManagementScriptingTools;","IIS-LegacyScripts;","IIS-LegacySnapIn;","IIS-FTPSvc;","IIS-FTPExtensibility;","IIS-WebDAV;","IIS-HostableWebCore;","WAS-ConfigurationAPI;","WAS-NetFxEnvironment;") complist = Array("ClientCertificateMappingAuthentication","DefaultDocument","HttpCompressionStatic","HttpErrors","HttpLogging","HttpRedirect","HttpTracing","IISCertificateMappingAuthentication","ISAPIExtensions","ISAPIFilter","LoggingLibraries","Metabase","RequestFiltering","RequestMonitor","ServerSideInclude","StaticContent","WMICompatibility","ProcessModel","DirectoryBrowse","ASPNET","NetFxExtensibility","ASP","CGI","CustomLogging","ODBCLogging","BasicAuthentication","WindowsAuthentication","DigestAuthentication","Authorization","IPSecurity","HttpCompressionDynamic","ManagementConsole","ManagementScriptingTools","LegacyScripts","LegacySnapin","FTPSvc","FTPExtensibility","WebDAV","HostableWebCore","WASConfigurationAPI","NetFxEnvironment") MaxComponents=42 End if i = 0 set WshShell = WScript.CreateObject("WScript.Shell") For Each x in complist Result = 0 Result = WshShell.RegRead("HKLM\Software\Microsoft\InetStp\Components\" + x) errorcode = errorcode + Result if NOT(Result = 1) Then InstallList = InstallList & InstallCompList(i) End if i = i + 1 Next End if if ((OSType = "win2k8") Or (OSType = "win2k8r2") ) Then if (OSType = "win2k8") Then InstallCompList = Array("WAS-ProcessModel;","IIS-StaticContent;","IIS-DefaultDocument;","IIS-DirectoryBrowsing;","IIS-HttpErrors;","IIS-HttpRedirect;","IIS-ASPNET;","IIS-ISAPIExtensions;","IIS-ISAPIFilter;","IIS-NetFxExtensibility;","IIS-ASP;","IIS-CGI;","IIS-ServerSideIncludes;","IIS-HttpLogging;","IIS-LoggingLibraries;","IIS-RequestMonitor;","IIS-HttpTracing;","IIS-CustomLogging;","IIS-ODBCLogging;","IIS-BasicAuthentication;","IIS-WindowsAuthentication;","IIS-DigestAuthentication;","IIS-ClientCertificateMappingAuthentication;","IIS-IISCertificateMappingAuthentication;","IIS-URLAuthorization;","IIS-RequestFiltering;","IIS-IPSecurity;","IIS-HttpCompressionStatic;","IIS-HttpCompressionDynamic;","IIS-ManagementConsole;","IIS-ManagementScriptingTools;","IIS-ManagementService;","IIS-Metabase;","IIS-WMICompatibility;","IIS-LegacyScripts;","IIS-LegacySnapIn;","IIS-FTPServer;","WAS-ConfigurationAPI;","WAS-NetFxEnvironment;") complist = Array("[WAS-Process-Model]","[Web-Static-Content]","[Web-Default-Doc]","[Web-Dir-Browsing]","[Web-Http-Errors]","[Web-Http-Redirect]","[Web-Asp-Net]","[Web-ISAPI-Ext]","[Web-ISAPI-Filter]","[Web-Net-Ext]","[Web-ASP]","[Web-CGI]","[Web-Includes]","[Web-Http-Logging]","[Web-Log-Libraries]","[Web-Request-Monitor]","[Web-Http-Tracing]","[Web-Custom-Logging]","[Web-ODBC-Logging]","[Web-Basic-Auth]","[Web-Windows-Auth]","[Web-Digest-Auth]","[Web-Client-Auth]","[Web-Cert-Auth]","[Web-Url-Auth]","[Web-Filtering]","[Web-IP-Security]","[Web-Stat-Compression]","[Web-Dyn-Compression]","[Web-Mgmt-Console]","[Web-Scripting-Tools]","[Web-Mgmt-Service]","[Web-Metabase]","[Web-WMI]","[Web-Lgcy-Scripting]","[Web-Lgcy-Mgmt-Console]","[Web-Ftp-Server]","[WAS-Config-APIs]","[WAS-NET-Environment]") MaxComponents=40 else InstallCompList = Array("IIS-ApplicationDevelopment;","IIS-ClientCertificateMappingAuthentication;","IIS-CommonHttpFeatures;","IIS-DefaultDocument;","IIS-HealthAndDiagnostics;","IIS-HttpCompressionStatic;","IIS-HttpErrors;","IIS-HttpLogging;","IIS-HttpRedirect;","IIS-HttpTracing;","IIS-IIS6ManagementCompatibility;","IIS-IISCertificateMappingAuthentication;","IIS-ISAPIExtensions;","IIS-ISAPIFilter;","IIS-LoggingLibraries;","IIS-Metabase;","IIS-Performance;","IIS-RequestFiltering;","IIS-RequestMonitor;","IIS-Security;","IIS-ServerSideIncludes;","IIS-StaticContent;","IIS-WebServer;","IIS-WebServerManagementTools;","IIS-WebServerRole;","IIS-WMICompatibility;","WAS-ProcessModel;","WAS-WindowsActivationService;","IIS-DirectoryBrowsing;","IIS-WebDAV;","IIS-ASPNET;","IIS-NetFxExtensibility;","IIS-ASP;","IIS-CGI;","IIS-CustomLogging;","IIS-ODBCLogging;","IIS-BasicAuthentication;","IIS-WindowsAuthentication;","IIS-DigestAuthentication;","IIS-URLAuthorization;","IIS-IPSecurity;","IIS-HttpCompressionDynamic;","IIS-ManagementConsole;","IIS-ManagementScriptingTools;","IIS-ManagementService;","IIS-LegacyScripts;","IIS-LegacySnapIn;","IIS-FTPServer;","IIS-FTPSvc;","IIS-FTPExtensibility;","IIS-HostableWebCore;") complist = Array("[Web-App-Dev]","[Web-Client-Auth]","[Web-Common-Http]","[Web-Default-Doc]","[Web-Health]","[Web-Stat-Compression]","[Web-Http-Errors]","[Web-Http-Logging]","[Web-Http-Redirect]","[Web-Http-Tracing]","[Web-Mgmt-Compat]","[Web-Cert-Auth]","[Web-ISAPI-Ext]","[Web-ISAPI-Filter]","[Web-Log-Libraries]","[Web-Metabase]","[Web-Performance]","[Web-Filtering]","[Web-Request-Monitor]","[Web-Security]","[Web-Includes]","[Web-Static-Content]","[Web-WebServer]","[Web-Mgmt-Tools]","[Web-Server]","[Web-WMI]","[WAS-Process-Model]","[WAS]","[Web-Dir-Browsing]","[Web-DAV-Publishing]","[Web-Asp-Net]","[Web-Net-Ext]","[Web-ASP]","[Web-CGI]","[Web-Custom-Logging]","[Web-ODBC-Logging]","[Web-Basic-Auth]","[Web-Windows-Auth]","[Web-Digest-Auth]","[Web-Url-Auth]","[Web-IP-Security]","[Web-Dyn-Compression]","[Web-Mgmt-Console]","[Web-Scripting-Tools]","[Web-Mgmt-Service]","[Web-Lgcy-Scripting]","[Web-Lgcy-Mgmt-Console]","[Web-Ftp-Server]","[Web-Ftp-Service]","[Web-Ftp-Ext]","[Web-WHC]") MaxComponents=52 End if set oFileSys = WScript.CreateObject("Scripting.FileSystemObject") TempFolder = oFileSys.GetSpecialFolder(2) TempFilename = oFileSys.GetTempName TempPath = TempFolder & TempFilename set WshShell = WScript.CreateObject("WScript.Shell") cmdline = "cmd /c ServerManagerCmd.exe -q >>" & TempPath WshShell.Run cmdline, 0, true set oFile = oFileSys.OpenTextFile(TempPath, 1, false ) RawComponents = oFile.ReadAll oFile.Close RawList = Split(RawComponents,vbCrLf,-1,1) if (IsNull(RawList) = false) Then For Each x in RawList i = 0 bFoundcomponent = false Do while (i <= UBound(complist) ) if (0 < (InStr(x, complist(i))) ) Then bFoundcomponent = true Exit Do End if i=i+1 Loop if (bFoundcomponent = true) Then if (0 < (InStr(x,"[X]"))) Then errorcode = errorcode + 1 Else InstallList = InstallList & InstallCompList(i) End if End if Next End if End if if (ACTION = "install") Then if (errorcode < MaxComponents) Then if ((OSType = "win2k8") Or (OSType = "vista")) Then InstallList = InstallList & "IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-ApplicationDevelopment;IIS-HealthAndDiagnostics;IIS-Performance;IIS-WebServerManagementTools;IIS-Security;IIS-FTPPublishingService;IIS-FTPManagement;WAS-WindowsActivationService;IIS-IIS6ManagementCompatibility;" elseif (OSType = "win7") Then InstallList = InstallList & "IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-ApplicationDevelopment;IIS-HealthAndDiagnostics;IIS-Performance;IIS-Security;WAS-WindowsActivationService;IIS-IIS6ManagementCompatibility;IIS-ManagementService;IIS-FTPServer" else InstallList = InstallList & "WAS-ConfigurationAPI;WAS-NetFxEnvironment" End if cmdline = "cmd /c pkgmgr.exe /iu:" & InstallList errorcode = WshShell.Run(cmdline, 0, true) End if End if wscript.Quit((errorcode MOD MaxComponents))