ฉันได้เขียนสคริปต์การกำหนดค่าของอินสแตนซ์ 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)
สิ่งนี้มีผลกระทบแปลก ๆ ของการเปลี่ยนคุณสมบัติ. sschedule เป็น timespan จนกระทั่งฉันใช้ $ WebAppPool = get-item iis: \ AppPools \ AppPoolName เพื่อรีเฟรชตัวแปร
นอกจากนี้ยัง$WebappPool.recycling.periodicRestart.schedule.Collection
มี แต่ไม่มีฟังก์ชั่นเพิ่ม () ในคอลเลกชันและฉันไม่พบวิธีอื่นในการแก้ไข
ไม่มีใครรู้วิธีที่ฉันสามารถตั้งเวลารีไซเคิลตามกำหนดโดยใช้ไวยากรณ์ที่สอดคล้องกับรหัสที่ฉันเขียนด้านบน