Skip to main content

How to check if an IIS Application Pool exists on a remote server using PowerShell.

function Test-RemoteIISAppPoolExists {
    param (
        [string]$ServerName,
        [string]$AppPoolName,
        [System.Management.Automation.PSCredential]$Credential
    )

    # Script block to check if the application pool exists
    $scriptBlock = {
        param ($AppPoolName)
        try {
            # Attempt to get the state of the application pool
            $appPoolState = Get-WebAppPoolState -Name $AppPoolName

            # If no exception is thrown, the app pool exists
            return $true
        } catch {
            # If an exception is thrown, the app pool does not exist
            return $false
        }
    }

    # Use PowerShell remoting to execute the script block on the remote server
    $exists = Invoke-Command -ComputerName $ServerName -Credential $Credential -ScriptBlock $scriptBlock -ArgumentList $AppPoolName

    return $exists
}

# Example usage
$cred = Get-Credential

$appPoolName = "YourAppPoolName"
$serverName = "RemoteServerName"

if (Test-RemoteIISAppPoolExists -ServerName $serverName -AppPoolName $appPoolName -Credential $cred) {
    Write-Output "The application pool '$appPoolName' exists on server '$serverName'."
} else {
    Write-Output "The application pool '$appPoolName' does not exist on server '$serverName'."
}