如何在不使用Add-WebConfiguration丑陋语法的情况下设置IIS应用程序池的回收时间?


9

我一直在脚本通过我们的IIS 7.5的实例和配置和其他民族的脚本我想出了一个语法,我喜欢的作品:

$WebAppPoolUserName = "domain\user"
$WebAppPoolPassword = "password"

$WebAppPoolNames = @("Test","Test2")

ForEach ($WebAppPoolName in $WebAppPoolNames ) {
    $WebAppPool = New-WebAppPool -Name $WebAppPoolName  
    $WebAppPool.processModel.identityType = "SpecificUser"
    $WebAppPool.processModel.username = $WebAppPoolUserName
    $WebAppPool.processModel.password = $WebAppPoolPassword
    $WebAppPool.managedPipelineMode = "Classic"
    $WebAppPool.managedRuntimeVersion = "v4.0"
    $WebAppPool | set-item
}

我已经看到这样做的方式不那么简洁,而且我喜欢这种设置对象属性的语法与在TechNet上看到的东西相比的方式:

Set-ItemProperty 'IIS:\AppPools\DemoPool' -Name recycling.periodicRestart.requests -Value 100000

我还无法弄清的一件事是如何使用此语法设置回收计划。

这个命令设置了ApplicationPoolDefaults,但是很丑陋:

add-webconfiguration  system.applicationHost/applicationPools/applicationPoolDefaults/recycling/periodicRestart/schedule -value (New-TimeSpan -h 1 -m 30)

我过去通过appcmd使用以下代码完成了此操作,但我真的很想通过powershell进行所有操作:

%appcmd% set apppool "BusinessUserApps" /+recycling.periodicRestart.schedule.[value='01:00:00']

我努力了:

$WebAppPool.recycling.periodicRestart.schedule = (New-TimeSpan -h 1 -m 30)

这具有将.schedule属性转换为时间跨度的奇怪效果,直到我使用$ WebAppPool = get-item iis:\ AppPools \ AppPoolName刷新变量为止。

$WebappPool.recycling.periodicRestart.schedule.Collection 集合上也有但没有add()函数,而且我还没有找到其他修改它的方法。

有人知道我可以使用与上面编写的代码一致的语法来设置计划的回收时间吗?


你有没有想过?
JohannesH

Answers:


10

我永远无法弄清楚如何在对象本身上设置它,但是在创建它之后,可以进行以下工作:

clear-ItemProperty IIS:\AppPools\MyPoolName -Name Recycling.periodicRestart.schedule #clear values
set-ItemProperty IIS:\AppPools\MyAppPoolName -Name Recycling.periodicRestart.schedule -Value @{value="00:00:00"} #to set it to midnight

这对我有用。
jonnii 2013年

0

所以不只是

$webapppool.recycling.periodicrestart.schedule -Value "01:30:00" 

然后?还是相当于TimeSpan的ToString?

(我不使用PowerShell;仅根据您的其他观点进行语法猜测)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.