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?

Chris Magnuson
la source
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
geographika
la source
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).

TristanK
la source