SharePoint 2013: Como crear un cmdlet personalizado (I)!

En SharePoint 2013 como en la versión predecesora, es posible crear comandos PowerShell personalizados para añadir nueva funcionalidad no existente en los comandos disponibles por defecto (+ de 750). Una primera aproximación para crear un cmdlet personalizado pasa por crear un ensamblado con el cmdlet e importarlo luego en la Consola de Administración de SharePoint 2013 mediante Import-Module. En este post veremos una de las opciones posibles para crear un comando personalizado:

  • En Visual Studio 2012, creamos un proyecto de tipo “Biblioteca de clases” eligiendo como versión de .NET Framework la 4.0.
  • Añadimos las siguientes referencias al proyecto:
    • System.Management.Automation.dll, ubicada en “C:Program Files (x86)Reference AssembliesMicrosoftWindowsPowerShellv3.0”.
    • System.Configuration.Install.dll, ubicada en “C:WindowsMicrosoft.NETFrameworkv2.0.50727”.
    • Microsoft.SharePoint.dll, ubicada en el “..15ISAPI”.
    • Microsoft.SharePoint.PowerShell.dll ubicada en “C:WindowsMicrosoft.NETassemblyGAC_MSILMicrosoft.SharePoint.PowerShellv4.0_15.0.0.0__71e9bce111e9429c”.
  • Añadimos directivas “using” a Microsoft.SharePoint, Microsoft.SharePoint.Administration, Microsoft.SharePoint.PowerShell y System.Management.Automation.
  • Codificamos el archivo de clase de acuerdo al siguiente código:
   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:   
   6:  //Espacios de nombres necesarios
   7:  using Microsoft.SharePoint;
   8:  using Microsoft.SharePoint.Administration;
   9:  using Microsoft.SharePoint.PowerShell;
  10:  using System.Management.Automation;
  11:   
  12:  namespace CIIN.SharePoint.PowerShell
  13:  {
  14:      [Cmdlet(VerbsCommon.Get,"SPSolutionsFromSolutionStore")]
  15:      public class SPCmdletCopySolutions : SPGetCmdletBase<string>
  16:      {
  17:          protected override IEnumerable<string> RetrieveDataObjects()
  18:          {
  19:              try
  20:              {
  21:                  Console.WriteLine("Iniciando el proceso de extracción de soluciones");
  22:                  int iNumeroSoluciones = 0;
  23:                  SPSolutionCollection spColeccionSoluciones =
  24:                      SPFarm.Local.Solutions;
  25:                  Console.WriteLine("Se han encontrado {0} soluciones a extraer",
  26:                      spColeccionSoluciones.Count);
  27:                  foreach (SPSolution spSolucion in spColeccionSoluciones)
  28:                  {
  29:                      SPPersistedFile spArchivoSolucion =
  30:                          spSolucion.SolutionFile;
  31:                      spArchivoSolucion.SaveAs(spArchivoSolucion.DisplayName);
  32:                      iNumeroSoluciones += 1;
  33:                  }
  34:                  return new string []
  35:                  {
  36:                      "Proceso de extración de soluciones concluido",
  37:                      "Nº Total de soluciones extraidas: " +
  38:                      iNumeroSoluciones.ToString()
  39:                  };
  40:              }
  41:              catch (Exception ex)
  42:              {
  43:                  return new string[]
  44:                  {
  45:                     ex.Message
  46:                  };                
  47:              } 
  48:          }
  49:      }
  50:  }
  • Compilamos el proyecto para comprobar que no hay errores.Ejecutamos la Consola de Administración de SharePoint 2013 y para registrar el comando en la sesión iniciada, ejecutamos la siguiente sentencia:

Import-Module “<Path_Ensamblado><NombreEnsamblado.dll

  • Ejecutamos a continuación el commando PowerShell que acabamos de registrar: Get-SPSolutionsFromSolutionStore.
  • Comprobamos que las soluciones se han extraido como se esperaba:
image image

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Un comentario en “SharePoint 2013: Como crear un cmdlet personalizado (I)!”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *