Как настроить время перезапуска пула приложений IIS, не прибегая к уродливому синтаксису Add-WebConfiguration?

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

Ответы:

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
geographika
источник
Это работает для меня.
Джонни
0

Так что не просто

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

тогда? Или ToString эквивалент TimeSpan?

(Я не PowerShell; просто синтаксическая догадка, основанная на ваших других битах).

TristanK
источник