Powershell/NRPE/Check_iis8_site.ps1
2023-07-04 12:59:44 +02:00

76 lines
1.6 KiB
PowerShell

<#
Ester Niclos Ferreras
Checks IIS Site state
OK - started
CRITICAL - STOPPED
UNKNOWN - not found
#>
#
# Shell arguments
#
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$website
)
$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")
$site = $servermanager.Sites["$website"]
$iis = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring
# Nagios output
$resultstring="IISSITE UNKNOWN $website not found"
$exit_code = $UNKNOWN
If ($site -ne $null) {
$status= $site.State
If ($status -eq "Started") {
$str = 'OK ' + $website + ' ' + $status + '-' + $iis.setupstring
}
Elseif ($status -eq $null) {
$strWarning = "UNKNOWN $website exists, but has no state. Check it is not a FTP site."
$bReturnWarning = $TRUE
}
Else {
$strCritical = 'CRITICAL '+ $website + ' ' + $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
}