【问题标题】:How to set IIS ApplicationPool "Private Memory Limit" value using PowerShell如何使用 PowerShell 设置 IIS 应用程序池“私有内存限制”值
【发布时间】:2012-06-25 10:11:08
【问题描述】:
我正在使用 PowerShell 自动部署网站,最近发现无法使用 PS 设置的 AppPool 设置。或者至少我不知道该怎么做。
$appPool = $serverManager.ApplicationPools.Add($sitename)...
我需要将“私有内存限制”设置为某个值,但在 ApplicationPool 或 ApplicationPoolRecycling 对象中似乎没有此类属性。
有人知道这个问题的解决方法吗?
【问题讨论】:
标签:
iis
powershell
web-administration
【解决方案1】:
此脚本使用Get-Webconfiguration 和Set-WebConfiguration 获取所有应用程序池的私有内存值。您可以单独设置每个或设置应用程序池默认值以使其继承。我已经注释掉了实际执行集合的行。
import-module webadministration
$applicationPoolsPath = "/system.applicationHost/applicationPools"
$applicationPools = Get-WebConfiguration $applicationPoolsPath
foreach ($appPool in $applicationPools.Collection)
{
$appPoolPath = "$applicationPoolsPath/add[@name='$($appPool.Name)']"
Get-WebConfiguration "$appPoolPath/recycling/periodicRestart/@privateMemory"
# Set-WebConfiguration "$appPoolPath/recycling/periodicRestart/@privateMemory" -Value 1000
}
【解决方案2】:
我正在添加一个答案,因为我在使用现有答案时遇到了问题。
import-module webadministration
$applicationPools = Get-ChildItem IIS:\AppPools
foreach ($appPool in $applicationPools){
Set-ItemProperty IIS:\AppPools\$appPool.name `
-Name recycling.periodicrestart.privateMemory -Value 7000000
}
【解决方案3】:
您的回复帮助我找到了解决我在使用 WSUS 服务器时遇到的问题的方法。我知道是 WsusPool 的应用程序池大小给我带来了问题,所以我制作了以下 PS 脚本并将其应用于我的 WSUS 服务器的根 OU(我有 3 个)我得到了连接错误和我对Reset Server Node 的选择没有帮助。事件查看器的事件 ID 为 12002、12012、12032、12022、12042、12052 和 12072。
Set-WebConfiguration "/system.applicationHost/applicationPools/add[@name='WsusPool']/recycling/periodicRestart/@privateMemory" -Value 0