<#
Ester Niclos Ferreras

OK	UP
WARNING	
CRITICAL	Stopped
UNKNOWN	not found


#>


#
# Shell arguments
#
[CmdletBinding()]
Param(
  [Parameter(Mandatory=$True,Position=1)]
   [string]$ApplicationPool
   )

$bReturnOK       = $TRUE
$bReturnCritical = $FALSE
$bReturnWarning  = $FALSE

$returnStateOK       = 0
$returnStateWarning  = 1
$returnStateCritical = 2
$returnStateUnknown  = 3

$DataTexte   = ""
$strCritical = ""
$strWarning  = ""

[System.Reflection.Assembly]::LoadFrom( "C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll" )  >  $null

$servermanager = [Microsoft.Web.Administration.ServerManager]::OpenRemote("localhost")
$apppools      = $servermanager.ApplicationPools["$ApplicationPool"]
$iis           = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\  | select setupstring

# Nagios output
$resultstring='IISPOOL UNKNOWN ' + $ApplicationPool + ' ' + $status +' ; ' + $iis.SETUPSTRING + ' ' 
$exit_code = $UNKNOWN


If ($apppools -ne $null)  {
    $status = $apppools.state
    
    If ($status -eq 'Started') {
         $str = 'OK '+  $ApplicationPool + ' ' + $status +' ; ' + $iis.SETUPSTRING + ' ' 
	}
	Else {
        $strCritica = 'CRITICAL '+  $ApplicationPool + ' ' + $status +' ; ' + $iis.SETUPSTRING + ' ' 
        $bReturnCritical = $TRUE
	}
}

If ($bReturnCritical) {
    write-output $strCritica "|" $DataTexte
    exit $returnStateCritical
}
Elseif ($bReturnWarning) {
    write-output $strWarning "|" $DataTexte
    exit $returnStateWarning
}
Else {
    write-output $str "|" $DataTexte
    exit $returnStateOK
}
