2011-04-27 62 views

回答

0

這是我決定使用腳本:

$myApplicationPool = Get-WmiObject -Class IISApplicationPoolSetting -Namespace "root\microsoftiisv2" | Where-Object {$_.Name -eq 'W3SVC/APPPOOLS/DefaultAppPool'} 
$myApplicationPool.IdleTimeout=0 
$myApplicationPool.Put() 

如果其他人有更好的方法爲這個請讓我知道。

希望這可以幫助別人

問候。

+0

請注意,只有安裝了IIS 6 WMI兼容性功能,此方法纔可用。 – 2016-03-27 16:30:44

4
%windir%\system32\inetsrv\appcmd set config -section:applicationPools 
    -applicationPoolDefaults.processModel.idleTimeout:00:00:00 
+0

或者你可以在你的代碼http://msdn.microsoft.com/en-us/library/microsoft.web.administration.servermanager使用'ServerManager的Class' .aspx – 2011-04-27 22:37:10

+0

感謝您的回答,我會嘗試一下 – 2011-04-28 16:53:56

+0

我爲您提供的兩種解決方案做了一個快速的概念證明,但它們似乎無法在Window Server 2003上工作,因爲ServerManager僅適用於iis 7和appcmd存在於最新版本的IIS – 2011-05-03 17:20:49

1

我用下面的函數一般地抓住一個應用程序池對象:

$query = "Select * From IIsApplicationPoolSetting WHERE WAMUserName LIKE '%$uServer'" 
$query 
$pools = Get-WmiObject -Authentication 6 -ComputerName $server -Query $query -Namespace 'root/microsoftiisv2' 
if ($pools) 
{ 
    foreach ($pool in $pools) 
    { 
     Write-Host(" WAM Pool: " + $pool.Name + ", " + $pool.WAMUserName + " (" + $pool.WAMUserPass + ")") 
    } 
} 

而且從一個不相關的代碼,這裏就是我放在一個新的應用程序池的站點。這只是一個如何使用Set-WMIInstance的例子。

if ($site.AppPoolID -ne $poolID) 
{ 
    # Write-Host("Updating $($site.Name) from $($site.AppPoolID) to $($poolID)") 
    $wmiArgs = @{"AppPoolID"=$poolID} 

    [void](Set-WMIInstance -InputObject $site -Arguments $wmiArgs) 
} else { 
    # Write-Host("No update needed") 
} 

使用Get-Member來了解您的$ pool的屬性,然後使用Set-WMIInstance來修改它們。

+0

我真的很感激這個例子,謝謝! – 2011-04-28 16:54:20

+0

嗨,你有沒有機會收集代碼?謝謝:) – 2011-05-02 18:18:31

+0

請注意,只有安裝了IIS 6 WMI兼容性功能才能使用此方法。 – 2016-03-27 16:31:10

16

如果您使用的是PowerShell 2或更高版本,則應該有權訪問Set-ItemProperty。您還需要加載WebAdministration模塊。

然後你可以做(​​例如,從here拍攝)

Set-ItemProperty ("IIS:\AppPools\$name") -Name processModel.idleTimeout -value ([TimeSpan]::FromMinutes(0)) 

,並驗證該值與

Get-ItemProperty ("IIS:\AppPools\$name") -Name processModel.idleTimeout.value 
+1

這個答案對我不起作用。我添加了一個適用於我的版本:http://stackoverflow.com/a/41111237/260303 – 2016-12-12 23:13:40

0

改變使用PowerShell中使用下列內容:

$appPoolName = "xxxAppPool" 
&"$env:windir\system32\inetsrv\appcmd" set APPPOOL $appPoolName /processModel.idleTimeout:0.00:00:00 
4

@ R0MANARMY的answer(當前最流行)didn不爲我工作。它運行良好,但隨後的檢查顯示空閒超時未變。

根據this blog post,該答案修改了對象的內存中副本。我修改了代碼示例中R0MANARMY's answer爲:

Get-ChildItem IIS:\AppPools\$name | ForEach { $_.processModel.IdleTimeout = [TimeSpan]::FromMinutes(0); $_ | Set-Item; } 
+0

一個工作班輪。不要忘記從Import-Module WebAdministration開始。 – CodingBarfield 2018-01-12 12:39:07

相關問題