Я писал сценарий конфигурации нашего экземпляра 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 (), и я не нашел другого способа ее изменить.
Кто-нибудь знает, как я могу установить запланированное время перезагрузки, используя синтаксис, совместимый с кодом, который я написал выше?
Я никогда не мог понять, как установить это на самом объекте, но после его создания работает следующее:
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
Так что не только
$webapppool.recycling.periodicrestart.schedule -Value "01:30:00"
затем? Или эквивалент ToString TimeSpan?
(Я не PowerShell; просто синтаксическая догадка, основанная на других ваших битах).