Public/Get-PoolsForMember.ps1

Function Get-PoolsForMember {
<#
.SYNOPSIS
    Determine which pool(s) a server is in
#>

    [cmdletBinding()]
    param(
        $F5Session=$Script:F5Session,
        [Parameter(Mandatory=$true,ParameterSetName='InputObject',ValueFromPipeline=$true)]
        [Alias('PoolMember')]
        [PSObject]$InputObject,

        [Alias("ComputerName")]
        [Parameter(Mandatory=$false,ParameterSetName='Address')]
        [string]$Address='*'
    )
    begin {
        #Test that the F5 session is in a valid format
        Test-F5Session($F5Session)

        if ($PSCmdLet.ParameterSetName -eq 'Address') {
            if ($Address -ne '*') {
                $ip = [IPAddress]::Any
                if ([IpAddress]::TryParse($Address,[ref]$ip)) {
                    $Address = $ip.IpAddressToString
                } else {
                    $ip = [string]([System.Net.Dns]::GetHostAddresses($Address).IPAddressToString)
                    #If we don't get an IP address for the computer, try the value specified
                    If ($ip) {
                        $Address = $ip
                    }
                }
            }
        }
    }
    process {
        switch($PSCmdLet.ParameterSetName) {
            Address {
                $pools = Get-Pool -F5Session $F5Session
                foreach ($pool in $pools) {
                    $members = $pool | Get-PoolMember -F5session $F5Session | Where-Object { $_.address -like $Address }
                    if ($members) {
                        $pool
                    }    
                }
            }
            InputObject {
                foreach($member in $InputObject) {
                    Get-PoolsForMember -F5Session $F5Session -Address $member.address 
                }
            }
        }
    }
}