Use PowerShell to Determine the Uptime of an EqualLogic SAN

Recently, I received notification from EqualLogic support that there could be issues with their storage area networks running firmware version 7.0.x at 248 consecutive days of uninterrupted operation and they recommend updating to firmware version 7.0.9 to correct (and prevent) the problem.

While I know that I have EqualLogic storage area networks running in some of the data-centers I support, I’m not sure what version of firmware they’re running or what the uptime on them is so I’ll use PowerShell (of course) to determine this information.

The EqlPSTools PowerShell module is part of the EqualLogic HIT (Host Integration Tools) Kit for Microsoft which can be downloaded from the EqualLogic support site. Note that the support site states that customers must have an active service plan to gain access to it.

I decided to write a reusable function to perform the necessary tasks since the EqlPSTools module is in a DLL file that has to be manually imported and you would normally have to connect to each SAN, query it and them disconnect from it moving on to the next one.

I didn’t want to have to figure all of that out each time I needed to determine this information so I decided to write a function that would do all of that for me. I could even add it to a script module that exists in my $env:PSModulePath so it would automatically be available any time I needed it without having to find and dot source a ps1 file.

The Get-EqlMember cmdlet which is part of the EqlPSTools PowerShell module returns an uptime property, but it’s in total seconds and I’m not sure about you but a number like 12801888 doesn’t mean much to me without performing some additional calculations on it and I wanted the function to do all of that for me (automate all things):

san-uptime1

The Get-EqlMember cmdlet only accepts a single IP address via parameter input and it can’t be provided via pipeline input so I would have had to query the SAN in each data-center manually, one at a time or write some code to put them into a ForEach-Object loop.

I wrote my reusable function so it would not only allow multiple IP addresses to be provided via parameter input, but also accept them via pipeline input in case I wanted to query the actual IP addresses from somewhere else like a text file or CSV and then provide that output as input for my function:

san-uptime2

Based on the previous results, the reported issue isn’t a crisis at the moment, but it’s something that needs to be taken care of in less than 100 days and I can see there are a couple more that need to have their firmware updated that are on older versions.

The Get-EqlSANUptime PowerShell function shown in this blog article can be downloaded from the TechNet Script Center Repository or from my PowerShell Repository on GitHub.

µ

2 Comments

  1. Jeffrey

    Thanks, the script helped a lot.

    Reply
  2. Joe

    I get message asking if it’s ok to run script and I click R to run once but get no output back. Just goes back to Powershell prompt. Where could this be failing?

    Reply

Leave a Reply

%d bloggers like this: