Crear una clase PowerShell 5.0 | PowerShell

A partir de la versión 2 .0 de PowerShell, comenzamos a contar con la posibilidad de crear realmente nuestras propias clases de las cuales podemos instanciar objetos que nos sean de real utilidad a la hora de realizar nuestros scripts.

Lo que hacíamos a partir de la versión 2.0, es generar nuestra clase a partir de la ventaja de compilar una clase proveniente de diferentes lenguajes como pueden ser:

  • CSharp (C#)
  • <CSharp versión 2
  • CSharp versión 3
  • JScript
  • Visual Basic

Por ejemplo, voy a generar una clase que realice sándwiches que si bien mucho sentido no tiene, aplica para un simple ejemplo.

$Clase = @'
public class GestorSandwich 
{


    private string _pan; 
    public string Pan 
    { 
        get { return _pan;}
        
    }


    private string _ingrediente1; 
    public string Ingrediente1 
    { 
        get { return _ingrediente1;}
        
    }


    private string _ingrediente2; 
    public string Ingrediente2 
    { 
        get { return _ingrediente2;}
        
    }

    public string CrearSandwich(string ElIngrediente1,string ElIngrediente2,string TipoPan)
    {

    _ingrediente2 = ElIngrediente2;
    _ingrediente1 = ElIngrediente1;
    _pan = TipoPan;

    return "Sandwich de pan " + _pan + " " + "con " + _ingrediente1 + " " +  "y " + _ingrediente2; 


    }

}
'@
Add-type -TypeDefinition $Clase -Language CSharp

Como ven la clase GestorSandiwch fue generada en C# y agregue el tipo (o clase) mediante el cmdlet Add-Type a Powershell

Ahora creo un nuevo objeto del tipo GestorSandwich, mediante el cmdLent New-Object:

$Sandwich = New-Object GestorSandwich

Luego, podemos utilizar el objeto generado con el comportamiento que tiene la clase:

$Sandwich.Crear("Jamon","Queso","Frances")

Imagen1

PowerShell 5.0

A partir de PowerShell 5.0, una de las cosas más interesantes es la capacidad para crear clases sin tener que conocer o utilizar otro lenguaje de programación.

Introduce la nueva palabra reservadas o Keyword “Class” para la generación de las mismas.

Ahora vamos a realizar el mismo ejemplo anterior, pero utilizando la nueva capacidad de PoweShell:

Class GestorSandwich
{

    [String]$pan

    [String]$Ingrediente1

    [String]$Ingrediente2

    [String] CrearSandwich([String]$ElIngrediente1,[String]$ElIngrediente2,[String]$TipoPan)
    {
 
        $this.pan = $TipoPan
        $this.Ingrediente1 = $ElIngrediente1
        $this.Ingrediente2 = $ElIngrediente2

        return "Sandwich de pan " + $this.pan + " " + "con " + $this.Ingrediente1 + " " +  "y " + $this.Ingrediente2

    }

}

Ahora creo un nuevo objeto del tipo GestorSandwich, mediante el cmdLent New-Object

$Var= New-Object GestorSandwich

Luego, podemos utilizar el objeto generado con el comportamiento que tiene la clase:

$Var.Crear("Jamon","Queso","Frances")

Imagen2

Como ven, no hace falta agregar el tipo con el comando Add-Type, ya que la clase fue generada directamente en el entorno de Powershell.

Conclusión

Crear clases con PowerShell 5.0 puede facilitarnos la generación de nuestros scripts, permitiendo reutilizar código e instanciar objetos para potenciar la nuestro código, sin la necesidad de conocer otros lenguajes de programación o estar agregando tipos en forma constante.

¡Saludos!

Advertisements

One thought on “Crear una clase PowerShell 5.0 | PowerShell

Add yours

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

%d bloggers like this: