Bagaimana cara mengatur IIS Application Pool kali daur ulang tanpa menggunakan sintaks jelek dari Add-WebConfiguration?

9

Saya telah scripting konfigurasi kami misalnya IIS 7.5 dan melalui potongan -potongan masyarakat skrip lain saya harus datang dengan sintaks yang saya seperti:

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

Saya telah melihat ini melakukan sejumlah cara berbeda yang kurang singkat dan saya suka cara sintaks pengaturan properti objek ini terlihat dibandingkan dengan sesuatu seperti apa yang saya lihat di TechNet :

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

Satu hal yang saya belum bisa mengetahuinya adalah bagaimana mengatur jadwal daur ulang menggunakan sintaks ini.

Perintah ini menetapkan ApplicationPoolDefaults tetapi jelek:

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

Saya telah melakukan ini di masa lalu melalui appcmd menggunakan sesuatu seperti berikut tapi saya benar-benar ingin melakukan semua ini melalui PowerShell:

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

Saya telah mencoba:

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

Ini memiliki efek aneh mengubah properti .schedule menjadi rentang waktu sampai saya menggunakan $ WebAppPool = get-item iis: \ AppPools \ AppPoolName untuk menyegarkan variabel.

Ada juga $WebappPool.recycling.periodicRestart.schedule.Collection tetapi tidak ada fungsi add () pada koleksi dan saya belum menemukan cara lain untuk memodifikasinya.

Adakah yang tahu cara saya dapat mengatur waktu daur ulang terjadwal menggunakan sintaks yang konsisten dengan kode yang saya tulis di atas?

Chris Magnuson
sumber
Apakah Anda pernah mengetahuinya?
JohannesH

Jawaban:

10

Saya tidak pernah tahu bagaimana mengatur ini pada objek itu sendiri, tetapi setelah membuatnya bekerja sebagai berikut:

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
geografi
sumber
Ini bekerja untuk saya.
jonnii
0

Jadi tidak adil

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

kemudian? Atau setara ToString dari TimeSpan?

(Saya tidak menggunakan PowerShell; hanya tebakan sintaksis berdasarkan bit Anda yang lain).

TristanK
sumber