Comment puis-je définir les temps de recyclage du pool d'applications IIS sans recourir à la syntaxe laide d'Add-WebConfiguration?


9

J'ai Scripting la configuration de notre instance IIS 7.5 et par des bits et des morceaux d'autres scripts peuples , je suis venu avec une syntaxe qui me plaît:

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

J'ai vu cela de différentes manières moins laconiques et j'aime la façon dont cette syntaxe de définition des propriétés des objets ressemble à quelque chose comme ce que je vois sur TechNet :

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

Une chose que je n'ai pas pu comprendre cependant est de savoir comment configurer les programmes de recyclage à l'aide de cette syntaxe.

Cette commande définit ApplicationPoolDefaults mais est laide:

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

J'ai fait cela dans le passé via appcmd en utilisant quelque chose comme ce qui suit, mais j'aimerais vraiment faire tout cela via PowerShell:

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

J'ai essayé:

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

Cela a pour effet étrange de transformer la propriété .schedule en intervalle de temps jusqu'à ce que j'utilise $ WebAppPool = get-item iis: \ AppPools \ AppPoolName pour actualiser la variable.

Il y en a aussi $WebappPool.recycling.periodicRestart.schedule.Collection mais il n'y a pas de fonction add () sur la collection et je n'ai pas trouvé d'autre moyen de la modifier.

Quelqu'un connaît-il un moyen de définir des temps de recyclage planifiés en utilisant une syntaxe cohérente avec le code que j'ai écrit ci-dessus?


L'avez-vous déjà compris?
JohannesH

Réponses:


10

Je n'ai jamais pu comprendre comment définir cela sur l'objet lui-même, mais après l'avoir créé, les œuvres suivantes:

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

Cela fonctionne pour moi.
jonnii

0

Donc pas seulement

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

puis? Ou un équivalent ToString du TimeSpan?

(Je ne PowerShell; juste une supposition syntaxique basée sur vos autres bits).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.