Làm cách nào tôi có thể đặt thời gian tái chế Nhóm ứng dụng IIS mà không cần dùng đến cú pháp xấu của Add-WebConfiguration?


9

Tôi đã được kịch bản cấu hình của phiên bản IIS 7.5 của chúng tôi và thông qua các bit và mẩu của các tập lệnh người khác mà tôi đã đưa ra một cú pháp mà tôi thích:

$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
}

Tôi đã thấy điều này đã thực hiện một số cách khác nhau ít ngắn gọn hơn và tôi thích cách cú pháp thiết lập các thuộc tính đối tượng này trông giống như những gì tôi thấy trên TechNet :

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

Một điều tôi chưa thể tìm ra là làm thế nào để thiết lập lịch trình tái chế bằng cú pháp này.

Lệnh này đặt ApplicationPoolDefaults nhưng xấu:

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

Tôi đã thực hiện điều này trong quá khứ thông qua appcmd bằng cách sử dụng một cái gì đó như sau nhưng tôi thực sự muốn làm tất cả những điều này thông qua powershell:

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

Tôi đã thử:

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

Điều này có tác dụng kỳ lạ khi biến thuộc tính .schedule thành thời gian cho đến khi tôi sử dụng $ WebAppPool = get-item iis: \ AppPools \ AppPoolName để làm mới biến.

Ngoài ra còn có $WebappPool.recycling.periodicRestart.schedule.Collection nhưng không có hàm add () trên bộ sưu tập và tôi không tìm thấy cách nào khác để sửa đổi nó.

Có ai biết cách tôi có thể đặt thời gian tái chế theo lịch trình bằng cú pháp phù hợp với mã tôi đã viết ở trên không?


Bạn đã bao giờ tìm ra nó?
JulianH

Câu trả lời:


10

Tôi không bao giờ có thể tìm ra làm thế nào để thiết lập điều này trên chính đối tượng, nhưng sau khi tạo ra nó, các công việc sau đây:

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

Điều này làm việc cho tôi.
jonnii

0

Vì vậy, không chỉ

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

sau đó? Hoặc một ToString tương đương với TimeSpan?

(Tôi không PowerShell; chỉ là phỏng đoán dựa trên các bit khác của bạn).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.