Come posso impostare i tempi di riciclo del pool di applicazioni IIS senza ricorrere alla brutta sintassi di Add-WebConfiguration?


9

Ho scritto la configurazione della nostra istanza di IIS 7.5 e attraverso frammenti di script di altre persone ho escogitato una sintassi che mi piace:

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

Ho visto questo fatto in diversi modi che sono meno concisi e mi piace il modo in cui questa sintassi di impostazione delle proprietà degli oggetti appare paragonata a qualcosa di simile a quello che vedo su TechNet :

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

Una cosa che non sono stato in grado di capire è come impostare i programmi di riciclo usando questa sintassi.

Questo comando imposta ApplicationPoolDefaults ma è brutto:

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

L'ho fatto in passato tramite appcmd usando qualcosa come il seguente ma mi piacerebbe davvero fare tutto questo tramite PowerShell:

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

Ho provato:

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

Questo ha lo strano effetto di trasformare la proprietà .schedule in un periodo di tempo fino a quando non uso $ WebAppPool = get-item iis: \ AppPools \ AppPoolName per aggiornare la variabile.

C'è anche $WebappPool.recycling.periodicRestart.schedule.Collection ma non c'è alcuna funzione add () sulla raccolta e non ho trovato nessun altro modo per modificarlo.

Qualcuno sa come posso impostare i tempi di riciclo pianificati usando la sintassi coerente con il codice che ho scritto sopra?


L'hai mai capito?
JohannesH,

Risposte:


10

Non sono mai riuscito a capire come impostarlo sull'oggetto stesso, ma dopo averlo creato il seguente funziona:

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

Questo funziona per me.
jonnii,

0

Quindi non solo

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

poi? O un equivalente ToString del TimeSpan?

(Non PowerShell; solo un'ipotesi sintattica basata sugli altri bit).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.