EMC PowerShell Cmdlets – Where to start

I managed to finally find time recently to install the EMC PowerShell Cmdlets and have a play, this was mainly evenings and lunchtimes but when else do we get spare time in our working days !

I thought it would be useful to share my experience and show what EMC are doing in the world of PowerShell.

Why you need PowerShell for Storage

As I have mentioned before I use PowerShell as kind of a glue to grab pieces of information from various sources and tie them in together until I have the results I need and then output them into a nice report, so wouldn’t it be great if we could use these Cmdlets to integrate our EMC storage and VMware vCenter environment (Much like the VSI for vCenter) to grab the information from both sources and give us a nice output with information from both sources expanding the datastore to give us LUN information so we know how it looks underneath (further post coming with the script).

Another way to use PowerShell may be to create multiple LUNs, what if I want to add 50 LUNs to my EMC Storage and then assign them to the hosts within my vCenter, then going back to vCenter and telling it about the LUNs and formatting these ready for use, well you get the point.

How do the EMC Cmdlets work ?

The EMC Cmdlets do not actually connect directly to an array and manage them from there, imagine if you had multiple arrays, further imagine if these arrays were of different types, what EMC does is actually connect to a SMI-Specification (SMI-S) host which intern attaches to the arrays which are being managed.  Think of this as kind of a translation service, a proxy, allowing all arrays to talk a standard language so that the PowerShell Cmdlets can act in a uniform way no matter what the array.

Or as the SMI-S manual would say:

EMC SMI-S Provider V4.1.2 supports the SNIA Storage Management Initiative (SMI), an ANSI standard for storage management. This initiative has developed a standard management interface that has culminated in a comprehensive specification (SMI-Specification or SMI-S). The SMI-S defines the open storage management interface that enables the interoperability of multiple vendor’s storage management technologies.

These technologies are used to monitor and control storage resources in multi vendor or SAN topologies.

The SNIA SMI strives to ensure consistent data and eliminate inconsistencies among management tools by providing a unified interface to the many store objects that must be managed in a storage environment.

This enables application developers to focus on a single, standard interface for the development of management tools.

EMC SMI-S Provider is paired with the EMC CIM Server to provide an SMI-compliant interface for EMC Symmetrix® and CLARiiON® arrays.

Multiple array customers may already have the SMI-S host already installed on a windows server in their environment but if you are only using a single array then you need to remember this key piece of information as you will need to install the SMI-S software either on your workstation or on a host, I show this in the install video below.

What’s Needed ?

To use the EMC PowerShell cmdlets you will need the following:

An EMC Array, CLARiiON or Symmetrix, currently there is no support for Celerra (see Nicks great cmdlets here for the Celerra) and I have not tested these with the VNX arrays.

You will also need:

  • Windows Powershell 2.0
  • Microsoft .Net Framework 3.5
  • Windows XP or later operating system, 32-bit or 64-bit or Windows 2008 R2 Server or later (64-bit).
  • SMI-S Installer V4.1.2 or above – Available from PowerLink
  • EMC PowerShell installer – Available here

* It is known that the 32-bit cmdlet set does not execute properly on Windows 7 and may not execute properly on Windows Vista.

What do we get ?

In the current release there are 26 Cmdlets, these are listed below:

Add-EssStorageSystem
Connect-EssSMISProvider
Disconnect-EssSMISProvider
Get-EssConnectedArrayAddress
Get-EssHosts
Get-EssProperty
Get-EssSnapshots
Get-EssStorageGroups
Get-EssStoragePools
Get-EssStorageSystem
Get-EssStorageVolumes
Join-EssSnapShotToHost
Join-EssVolumeToHost
New-EssSnapShot
New-EssStorageGroup
New-EssStoragePool
New-EssStorageVolume
Remove-EssHostFromStorageGroup
Remove-EssSnapshot
Remove-EssSnapshotFromStorageGroup
Remove-EssStorageGroup
Remove-EssStoragePool
Remove-EssStorageSystem
Remove-EssStorageVolume
Remove-EssStorageVolumeFromStorageGroup
Update-EssStorageSystem

* Unfortunately no help has been added to these cmdlets so interactive help at the PowerShell prompt is not available, however, with the PowerShell cmdlets a Word document is also installed which gives you basic usage information.

Getting started

Rather than listing the steps to install these I thought I would shoot a quick video showing the install and then running a few of these cmdlets, remember this install includes the install and adding the arrays to the SMI-S provider, you may not have to do this if you already have a SMI-S host installed on your system.

I have already started using these to provide custom output and will continue blogging some example scripts on this site so stay tuned !

Known problems and limitations

  • This release was tested on a CX4 and is currently available in a controlled release fashion for use, it is designed to work on all EMC arrays that are supported by Solutions Enabler for SMI-S Provider.
  • Deletion does not work with Symmetrix Array, and in general, limited support on Symmetrix for this pre release.
  • The 32-bit Connect-EssSMISProvider cmdlet causes an access violation due to a read or write of protected memory when executed on Windows 7 32-bit; it seems likely that this same issue would occur for Windows Vista 32-bit, although this has not been tested. Windows 7 64-bit OS has also not been tested with the 64-bit cmdlet set.
  • Version 1.0 of this PowerShell cmdlet set is able to work on only one Storage System at a time. If more than one Storage System is attached to the SMI-S Provider (which is expected to be the rule rather than the exception), this cmdlet set operates only on the first Storage System listed in the enumeration of Storage Systems attached to the Provider. If you wish to manage more than one array with the cmdlets then you should use a combination of the Remove-EssStorageSystem and Add-EssStorageSystem cmdlets to have the provider present the storage system you wish to manage.

15 thoughts on “EMC PowerShell Cmdlets – Where to start

  1. Pingback: Get-Scripting Podcast Episode 22 – Travis Jones (PowerShell Deep Dive Conference) | CrypticZero

  2. Steeve Roy

    Hi can you give me a starter on how you can call an retieve data from your EMC storage using .NET? which component you need in addition to the SMI-S provider? Etc…

    Thanks

  3. Steeve Rot

    Hi Chris, I want to code with .NET to interact with my clariion. Can you give me the short path you are using to do that? (which software component required (SMI-S Provider? anything else) then how you reference it in VS.NET, if you have some example. That could be awesome).

    Thanks!

  4. Istvan Sandor

    I’ve got a problem with Add-EssStorageSystem: Exception has been an external component. (SPA and SPB + creditentials fine.)
    Other get-ess… commands not worked.

  5. Dave McKeller

    EMC Powershell is defaulting to Powershell 1.0. I have also tried this command in PowerShell 2.0.
    I don’t know what parameters I should enter for “PropertyClassName” and “Property”. If I just enter Get-EssProperty, I’m asked for two parameters. Is there a list of what I can enter. Thanks!

    PS D:\Program Files\EMC\EMC PowerShell Cmdlets X86> Get-EssProperty

    cmdlet Get-EssProperty at command pipeline position 1
    Supply values for the following parameters:
    PropertyClassName:
    Property

  6. David Vekemans

    Hi Alan,

    I’m not getting errors. Because I did not try yet. I was just reading the doc of SMI-S provider and it says that it can not be installed on the same machine as Solution Enabler.
    So I was just wondering if I can run the Cmdlets with Solution Enabler V7.2.1, without the need to install a separate machine for SMI-S provider.

    Thanks !
    David

  7. Virtu-Al

    Dave,

    Personally I am not sure what that cmdlet is used for so I have asked for confirmation internally, in PowerShell I would do the same thing like this:

    Get-ESSStorageVolumes | Where { $_.ElementName -eq “LUN 0”} | Select ElementName, EMCWWN

  8. David Vekemans

    Hello Alan,
    I was planning to use the same host to install Solution Enabler (for the VSI plugin) and SMI-S provider (for the EMC cmdlets). It seems both products are not compatible.
    Is there a way to have the cmdlets work directly with solution enabler ? I would avoid to install a new VM with gatekeepers just for SMI-S
    Thanks

  9. Dave McKeller

    Here is the line that is causing the error:
    $list1=Get-EssProperty -PropertyClassName “CIM_StorageVolume” -FilterName “ElementName” -FilterValue “LUN 0” -Property “EMCWWN”

  10. Dave McKeller

    I like this demo. It helped me get passed my errors trying to get this running.

    Where can I get a list of all the parameters of a command? I am using Get-ESSProperty from an EMC script, and I’m getting errors. I would like to know a list of the options.

    Thanks!

    Get EMCWWN for a specific LUN
    Get-EssProperty : External component has thrown an exception.
    At D:\Untitled1.ps1:37 char:24
    + $list1=Get-EssProperty <<<< -PropertyClassName "CIM_StorageVolume" -FilterName "ElementName" -FilterValue "LUN 0
    " -Property "EMCWWN"
    + CategoryInfo : NotSpecified: (:) [Get-EssProperty], Exception
    + FullyQualifiedErrorId : System.Exception,EMC.PSToolkit.SMIS.GetEssPropertyCmdlet

  11. Pingback: Episode 141 – Richard Giles from Idera on PowerShell Plus « PowerScripting Podcast

  12. Pingback: Using the EMC Cmdlets with PowerCLI « « Virtu-AlVirtu-Al

  13. Virtu-Al

    Good Idea, i think that Celerra cmdlets could tie in nicely to the AD cmdlets or Quest cmdlets for security and allow this to be done quite easily, I will pass your comments on as a feature request !

  14. Chris Warwick

    Hi Alan,

    Do you know of an easy (supported!) programmable way of adding shares (and share permissions) on an EMC Celerra? It’s not easy from script as there’s no WMI support on the box.

    I know there’s an XML interfaces but: (1) it’s quite complex and (2) it seems to have limited authentication options.

    I’ve coded some C# to use the NetShareAdd API (in Netapi32.dll) to do this – called via add-type; but it’s a bit of a hack and I’d prefer a simple EMC supported cmdlet:-)

    Thanks,
    Chris

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.