我正在尝试创建一个 powershell 脚本,用于使用 IIS 7 或 8 创建应用程序池和虚拟目录(不确定我拥有哪一个,我使用的是 Windows Server 2012 R2)
无论如何,这是我用来创建一个名为 .Net v2.0 的应用程序池的代码
Import-Module WebAdministration
New-Item –Path IIS:\AppPools\.Net v2.0
但是我收到一条错误消息
PS IIS:\Sites> 导入模块 WebAdministration 新项目 – 路径 IIS:\AppPools.Net v2.0 未定义的对象类型 .Net。参数名称: 节点名称 在行:2 字符:1 + 新项目 – 路径 IIS:\AppPools.Net v2.0 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], ArgumentException + FullQualifiedErrorId:NewItemDynamicParametersProviderException
我觉得可能是因为Net和v2.0之间存在空间
此外,这没有物理路径,所以我不确定如何为多个应用程序池创建一个脚本,有些使用 v2.0 和 v4.0,有些使用 Integrated 和 Classic 作为管道,有些使用正在使用物理路径,而有些则不使用。如果有人能指出我正确的方向吗?我不使用网站,只是使用应用程序池和虚拟目录。
谢谢!
编辑 我能够通过使用
解决这个问题[system.reflection.assembly]::Loadwithpartialname("Microsoft.Web.Administration")
$servermgr = New-Object Microsoft.web.administration.servermanager
$servermgr.ApplicationPools.Add(".NETExample")
$servermgr.CommitChanges()
首先运行
Import-Module WebAdministration
,这将允许您在 IIS 下创建路径:\
然后:
$iisAppPoolName = ".Net v2.0"
$iisAppPoolDotNetVersion = "v2.0"
$iisAppName = "Net 2"
$directoryPath = "E:\Net2"
cd IIS:\AppPools\
New-Item $iisAppPoolName
检查此站点:创建 IIS 应用程序池
这是使用 PowerShell 7+ 和
IISAdministration
的更现代方法:
Import-Module "IISAdministration"
function New-AppPool($appPoolName) {
$serverManager = Get-IISServerManager
$appPool = $serverManager.ApplicationPools[$appPoolName]
if ($null -eq $appPool) {
$appPool = $serverManager.ApplicationPools.Add($appPoolName)
}
$appPool.AutoStart = $true
$appPool.ManagedPipelineMode = "Integrated"
$appPool.ManagedRuntimeVersion = "v4.0"
$appPool.ProcessModel.IdentityType = [Microsoft.Web.Administration.ProcessModelIdentityType]::NetworkService
$appPool.ProcessModel.IdleTimeout = [TimeSpan]::Zero
$serverManager.CommitChanges()
return $appPool
}
New-AppPool -appPoolName $appPoolName