ฉันจะตั้งค่า IIS Application Pool รีไซเคิลครั้งโดยไม่หันไปใช้รูปแบบที่น่าเกลียดของ 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)

สิ่งนี้มีผลกระทบแปลก ๆ ของการเปลี่ยนคุณสมบัติ. sschedule เป็น timespan จนกระทั่งฉันใช้ $ WebAppPool = get-item iis: \ AppPools \ AppPoolName เพื่อรีเฟรชตัวแปร

นอกจากนี้ยัง$WebappPool.recycling.periodicRestart.schedule.Collection มี แต่ไม่มีฟังก์ชั่นเพิ่ม () ในคอลเลกชันและฉันไม่พบวิธีอื่นในการแก้ไข

ไม่มีใครรู้วิธีที่ฉันสามารถตั้งเวลารีไซเคิลตามกำหนดโดยใช้ไวยากรณ์ที่สอดคล้องกับรหัสที่ฉันเขียนด้านบน


คุณเคยคิดออกไหม
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

มันใช้งานได้สำหรับฉัน
jonnii

0

ดังนั้นไม่ใช่แค่

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

แล้ว? หรือ ToString เทียบเท่ากับ TimeSpan

(ฉันไม่ PowerShell เพียงเดาวากยสัมพันธ์ตามบิตอื่น ๆ ของคุณ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.