on 09-Mar-2015 11:36
Problem this snippet solves:
This PowerShell script will query the status of the pool members for a specified poolname.
How to use this snippet:
PowerShellPoolMemberAvailability.ps1 -BIGIP < bigip> -User < user> -Pass < pass> [-Pool < poolname> [-List]]
Code :
#---------------------------------------------------------------------------- # The contents of this file are subject to the "END USER LICENSE AGREEMENT # FOR F5 Software Development Kit for iControl"; you may not use this file # except in compliance with the License. The License is included in the # iControl Software Development Kit. # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Original Code is iControl Code and related documentation # distributed by F5. # # The Initial Developer of the Original Code is F5 Networks, # Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2010 # F5 Networks, Inc. All Rights Reserved. iControl (TM) is a registered # trademark of F5 Networks, Inc. # # Alternatively, the contents of this file may be used under the terms # of the GNU General Public License (the "GPL"), in which case the # provisions of GPL are applicable instead of those above. If you wish # to allow use of your version of this file only under the terms of the # GPL and not to allow others to use your version of this file under the # License, indicate your decision by deleting the provisions above and # replace them with the notice and other provisions required by the GPL. # If you do not delete the provisions above, a recipient may use your # version of this file under either the License or the GPL. #---------------------------------------------------------------------------- param( [string]$BIGIP = $null, [string]$User = $null, [string]$Pass = $null, [string]$Pool = $null, [switch]$List = $false ); Set-PSDebug -strict; #------------------------------------------------------------------------- function Write-Usage() # # Print Usage information for this script #------------------------------------------------------------------------- { Write-Host "Usage: $(Split-Path -Path $MyInvocation.ScriptName -Leaf) -BIGIP-User -Pass [-Pool [-List]]"; exit; } #------------------------------------------------------------------------- function Get-PoolList() #------------------------------------------------------------------------- { $pool_list = (Get-F5.iControl).LocalLBPool.get_list(); Write-Host "Available Pools:"; foreach ($pool in $pool_list) { Write-Host " $pool"; } } #------------------------------------------------------------------------- function Get-PoolMemberAvailability() #------------------------------------------------------------------------- { param([string]$Pool); $avail_count = 0; $total_count = 0; if ( $Pool.Length -ne 0 ) { $MemberObjectStatusAofA = (Get-F5.iControl).LocalLBPoolMember.get_object_status((, $Pool)); # Only one pool, so let's access the members for first entry of returned array. $MemberObjectStatusA = $MemberObjectStatusAofA[0]; foreach ($MemberObjectStatus in $MemberObjectStatusA) { $member = $MemberObjectStatus.member; $addr = $member.address; $port = $member.port; $Availability = $MemberObjectStatus.object_status.availability_status; $Enabled = $MemberObjectStatus.object_status.enabled_status; $Description = $MemberObjectStatus.object_status.status_description; $total_count++; if ( $Availability -eq "AVAILABILITY_STATUS_GREEN" ) { $avail_count++; } if ($List) { Write-Host "$Pool,${addr}:${port},$Availability,$Enabled,$Description"; } } if (!$List) { Write-Host "$avail_count/$total_count" } } } #------------------------------------------------------------------------- function Do-Initialize() #------------------------------------------------------------------------- { if ( (Get-PSSnapin | Where-Object { $_.Name -eq "iControlSnapIn"}) -eq $null ) { Add-PSSnapIn iControlSnapIn } $success = Initialize-F5.iControl -HostName $BIGIP -Username $User -Password $Pass; return $success; } #------------------------------------------------------------------------- # Main Application Logic #------------------------------------------------------------------------- if ( ($BIGIP.Length -eq 0) -or ($User.Length -eq 0) -or ($Pass.Length -eq 0) ) { Write-Usage; } if ( Do-Initialize ) { if ( $Pool.Length -eq 0 ) { Get-PoolList; } else { Get-PoolMemberAvailability -Pool $Pool; } }