PowerShell RAM Cache

Problem this snippet solves:

This PowerShell example illustrates how to query for entries in the RAM Cache.

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 (
  $BIGIP = $null,
  $User = $null,
  $Pass = $null,
  $Profile = $null
);

Set-PSDebug -strict;

#-------------------------------------------------------------------------
# function Write-Usage
#-------------------------------------------------------------------------
function Write-Usage()
{
  Write-Host "Usage: RAMCache.ps1 -BIGIP hostname -User username -Pass password";
  exit;
}

function Get-RAMCacheEntry()
{
  param([string]$Profile = $null);
  $key = New-Object -TypeName iControl.LocalLBRAMCacheInformationRAMCacheKey;
  $key.profile_name = $Profile;
  $key.host_name = "";
  $key.uri = "";
  $key.maximum_responses = 100;
  
  $RAMCacheEntryAofA = (Get-F5.iControl).LocalLBRAMCacheInformation.get_ramcache_entry( (,$key) );
  $RAMCacheEntryA = $RAMCacheEntryAofA[0];
  foreach($RAMCacheEntry in $RAMCacheEntryA)
  {
    $profile_name = $RAMCacheEntry.profile_name;
    $host_name = $RAMCacheEntry.host_name;
    $uri = $RAMCacheEntry.uri;
    $vary_type = $RAMCacheEntry.vary_type;
    $vary_count = $RAMCacheEntry.vary_count;
    $hits = $RAMCacheEntry.hits;
    $received = $RAMCacheEntry.received;
    $last_sent = $RAMCacheEntry.last_sent;
    $expiration = $RAMCacheEntry.expiration;
    $size = $RAMCacheEntry.size;
    
    Write-Host "=========================================";
    Write-Host "Profile Name: $profile_name";
    Write-Host "Host Name   : $host_name";
    Write-Host "Uri         : $uri";
    Write-Host "Vary Type   : $vary_type";
    Write-Host "Vary Count  : $vary_count";
    Write-Host "Hits        : $hits";
    Write-Host "Received    : $received";
    Write-Host "Last Sent   : $last_sent";
    Write-Host "Expiration  : $expiration";
    Write-Host "Size        : $size";
  }
}


#-------------------------------------------------------------------------
# Do-Initialize
#-------------------------------------------------------------------------
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 -eq $null) -or ($User -eq $null) -or ($Pass -eq $null) -or ($Profile -eq $null) )
{
  Write-Usage;
}

if ( Do-Initialize )
{
  Get-RAMCacheEntry -Profile $Profile
}
else
{
  Write-Error "ERROR: iControl subsystem not initialized"
}
Published Mar 09, 2015
Version 1.0
No CommentsBe the first to comment