Получить время безотказной работы рабочего процесса (рекомендуется):
$poolName = <your pool name goes here eg. DefaultPool>
$poolProcess =(gwmi -NS 'root\WebAdministration' -class 'WorkerProcess' | select AppPoolName,ProcessId | Where-Object { $_.AppPoolName -eq $poolName } )
$lastStartTime=(Get-Process -Id $poolProcess.ProcessId).StartTime
write-output $lastStartTime
Чтобы это работало, убедитесь, что у вас включены «Сценарии и инструменты управления IIS».
Во-вторых, используется журнал событий, если он включен
Get-Eventlog -LogName system -Newest 1 -Source "WAS" -Message "*recycle of all worker processes in application pool '$poolName'*")
С Get-Eventlog
вы можете использовать аргумент -After/-Before
для дальнейшего ограничения результата.
Чтобы проверить, был ли пул приложений переработан за последние 'X' минут, можно использовать следующий фрагмент powershell:
function isRecycledInLastNMinutes($appPoolName, $lminutes){
$beforeDate = Get-Date -format 'u'
$afterDate = $beforeDate.addMinutes(-$lminutes)
$result = (Get-Eventlog -LogName system -Newest 1 -Source "WAS" -After $afterDate -Before $beforeDate -Message "*recycle of all worker processes in application pool '$appPoolName'*")
if( $result.length -eq 1){
return $true
}else{
retrun $false
}
}