如何通过代码安装 IIS 8
Posted
技术标签:
【中文标题】如何通过代码安装 IIS 8【英文标题】:How to Install IIS 8 through Code 【发布时间】:2022-01-22 21:28:24 【问题描述】:对于我的 Windows 2012 R2 学校作业,我需要在我的虚拟机上自动安装 IIS 8。我想最好的方法是使用脚本。我找到了许多 UI 解决方案,但不是 cmd。 有没有一种方法可以在每台带有 ui 的机器上自动安装它?或者是否有 b) 在 Windows 上安装 IIS 8 的脚本?
提前谢谢你。
【问题讨论】:
【参考方案1】:在 Server 2012 R2 上,您可以使用 Enable-WindowsOptionalFeature cmdlet,安装默认的 IIS 使用:
Enable-WindowsOptionalFeature -Online -FeatureName "IIS-WebServerRole"
要选择可选功能,请使用以下部分构建自定义脚本:
# helper function
Function InstallIISFeature([string]$name)
& Enable-WindowsOptionalFeature -Online -FeatureName $name
InstallIISFeature "IIS-WebServerRole"
# this installs:
#IIS-ApplicationDevelopment
#IIS-CommonHttpFeatures
#IIS-DefaultDocument
#IIS-DirectoryBrowsing
#IIS-HealthAndDiagnostics
#IIS-HttpCompressionStatic
#IIS-HttpErrors
#IIS-HttpLogging
#IIS-ManagementConsole
#IIS-Performance
#IIS-RequestFiltering
#IIS-RequestMonitor
#IIS-Security
#IIS-StaticContent
#IIS-WebServer
#IIS-WebServerManagementTools
#IIS-WebServerRole
# AspNetPrerequisites()
InstallIISFeature "IIS-ISAPIFilter"
InstallIISFeature "IIS-ISAPIExtensions"
# ASP.NET
InstallIISFeature "NetFx4Extended-ASPNET45"
InstallIISFeature "IIS-NetFxExtensibility45"
InstallIISFeature "IIS-ASPNET45"
InstallIISFeature "IIS-NetFxExtensibility"
InstallIISFeature "IIS-ASPNET"
# Classic ASP
InstallIISFeature "IIS-ASP"
# more optional features
InstallIISFeature "IIS-FTPServer"
InstallIISFeature "IIS-FTPSvc"
InstallIISFeature "IIS-ManagementScriptingTools"
InstallIISFeature "IIS-HttpCompressionDynamic"
InstallIISFeature "IIS-IISCertificateMappingAuthentication"
InstallIISFeature "IIS-HttpTracing"
InstallIISFeature "IIS-HttpRedirect"
InstallIISFeature "IIS-WindowsAuthentication"
InstallIISFeature "IIS-IPSecurity"
InstallIISFeature "IIS-WebSockets"
InstallIISFeature "IIS-LoggingLibraries"
InstallIISFeature "IIS-RequestMonitor"
InstallIISFeature "IIS-ManagementService"
# show installed features
Get-WindowsOptionalFeature –Online | Where $_.FeatureName -match "^IIS-" -and $_.State -eq "Enabled" | Sort FeatureName | Select FeatureName
【讨论】:
【参考方案2】:您可以使用以下链接https://technet.microsoft.com/en-us/magazine/dn236383.aspx 中列出的命令使用 Powershell 安装 IIS 8。
【讨论】:
我已经多次尝试这些命令,但总是出错。 你能把错误信息粘贴到这里吗?这些命令对我有用。【参考方案3】:您可以通过将所有必需的功能作为数组而不是字符串传递来加快启用功能所需的时间。
您也可以使用“全部”参数。它“启用指定功能的所有父功能。如果要在图像中启用指定功能需要父功能,则 All 将启用父功能及其所有默认依赖项。” source
# Also helpful reference: https://peter.hahndorf.eu/blog/WindowsFeatureViaCmd
# Start with some basics
[System.Collections.ArrayList]$features = "IIS-WebServerRole","IIS-ISAPIFilter","IIS-ISAPIExtensions"
# add roles for ASP.NET specifically
$features.Add("NetFx4Extended-ASPNET45")
$features.Add("IIS-NetFxExtensibility45")
$features.Add("IIS-ASPNET45")
$features.Add("NetFx3")
$features.Add("NetFx3ServerFeatures")
$features.Add("IIS-NetFxExtensibility")
$features.Add("IIS-ASPNET")
# classic ASP
$features.Add("IIS-ASP")
# more optional features
$features.Add("IIS-FTPServer")
$features.Add("IIS-FTPSvc")
$features.Add("IIS-ManagementScriptingTools")
$features.Add("IIS-HttpCompressionDynamic")
$features.Add("IIS-IISCertificateMappingAuthentication")
$features.Add("IIS-HttpTracing")
$features.Add("IIS-HttpRedirect")
$features.Add("IIS-WindowsAuthentication")
$features.Add("IIS-IPSecurity")
$features.Add("IIS-WebSockets")
$features.Add("IIS-LoggingLibraries")
$features.Add("IIS-RequestMonitor")
$features.Add("IIS-ManagementService")
# now we'll enable the features all in one shot (quite a bit faster than one at a time)
Enable-WindowsOptionalFeature -Online -FeatureName $features -All
# show installed features
# Get-WindowsOptionalFeature –Online | Where $_.FeatureName -match "^IIS-" -and $_.State -eq "Enabled" | Sort FeatureName | Select FeatureName
# show features NOT installed
# Get-WindowsOptionalFeature –Online | Where $_.FeatureName -match "^IIS-" -and $_.State -ne "Enabled" | Sort FeatureName | Select FeatureName
【讨论】:
【参考方案4】:请注意: *-WindowsOptionalFeature cmdlet 集可用于服务器或非服务器 Windows,它启用/禁用操作系统中已有的功能。就像 DISM 一样,您可以使用 -online 开关处理在线图像或使用离线图像
服务器使用 *-WindowsFeature cmdlet 添加或删除功能
【讨论】:
以上是关于如何通过代码安装 IIS 8的主要内容,如果未能解决你的问题,请参考以下文章