SharePoint: Como configurar el correo electrónico saliente con PowerShell!

En esta ocasión os dejo un nuevo tipo de PowerShell: Como configurar el correo electrónico saliente de SharePoint (válido tanto para SharePoint 2010 como para SharePoint 2013). Como siempre, espero que os sirva:

   1: ############################################################################################################################################

   2: # Script para configurar el correo electrónico saliente de SharePoint

   3: # Parámetros necesarios: 

   4: #    ->$sSMTPServer: Servidor SMTP.

   5: #    ->$sFromEMail: Dirección de origen.

   6: #    ->$sReplyEMail: Dirección de destino.

   7: #    ->$sChartSet: Juego de Carácteres.

   8: ############################################################################################################################################

   9:  

  10: If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) 

  11: { Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell }

  12:  

  13: #Hacemos un buen uso de PowerShell para no penalizar el rendimiento

  14: $host.Runspace.ThreadOptions = "ReuseThread"

  15:  

  16: #Definición de la función que configura el correo electrónico saliente

  17: function Configure-OutGoingEMail

  18: {

  19:     param ($sSMTPServer,$sFromEMail,$sReplyEmail,$sCharSet)

  20:     try

  21:     {        

  22:         

  23:         $CAWebApp = Get-SPWebApplication -IncludeCentralAdministration | Where { $_.IsAdministrationWebApplication }

  24:         $CAWebApp.UpdateMailSettings($sSMTPServer, $sFromEMail, $sReplyEmail, $sCharSet)

  25:         write-host -f Blue "Correo electrónico saliente configurado"

  26:                

  27:     }

  28:     catch [System.Exception]

  29:     {

  30:         write-host -f red $_.Exception.ToString()

  31:     }

  32: }

  33:  

  34: Start-SPAssignment –Global

  35:  

  36: #Objetos necesarios

  37: $sSMTPServer='<Servidor_SMTP>'

  38: $sFromEMail='<Correo_From>'

  39: $sReplyEmail='<Correo_To>'

  40: $sChartSet=65001

  41:  

  42: #Llamada a la función

  43: Configure-OutGoingEMail -sSMTPServer $sSMTPServer -sFromEMail $sFromEMail -sReplyEmail $sReplyEmail -sCharSet $sChartSet

  44:  

  45: Stop-SPAssignment –Global

El resultado que obtenemos es que tenemos perfectamente configurado el correo electrónico de SharePoint (2013 en este caso).

image

Referencia: http://mikefrobbins.com/2011/08/04/configure-sharepoint-2010-outgoing-email-settings-with-powershell/

SharePoint 2013: Como cambiar la cuenta de usuario en Designer!

SharePoint Designer 2013 (SPD 2013) permite, al igual que su versión predecesora, cambiar la cuenta de usuario qué se va a conectar a sitios de SharePoint 2013 On-Premise o de SharePoint Online en Office 365. En este post vamos a ver como realizar el proceso de cambio de cuenta para SPD 2013:

  • Iniciamos SPD 2013 y a través del backstage de Office, nos vamos a la sección “Cuenta”.
  • En esta sección podemos ver la información relativa a la cuenta actual que está haciendo uso de Office en general y de SPD 2013 en particular. También podremos ver las Urls de los distintos servicios a los que se está conectando dicha cuenta y que no solo incluyen sitios de SharePoint, sino también otros como Facebook, Youtube, OneDrive, etc.
image image
  • Si seleccionamos por ejemplo un sitio de SharePoint Online, podremos especificar las credenciales de acceso al mismo tras hacer clic en “Conectar” de modo que se abre la ventana de inicio de sesión.
  • Una vez introducidas esas credenciales, la cuenta habrá cambiado en SPD 2013.
image image

[SUGES]: Componentes gratuitos de KWizCom para la comunidad–Abril: Data View Plus Standar Edition!

Un mes más, y gracias al acuerdo de colaboración con la empresa especializada en plataforma SharePoint KWizCom ubicada en Canadá, desde SUGES os ofreceremos la posibilidad de acceder a un nuevo componente gratuito para SharePoint. Para En estea ocasión se trata del Data View Plus Standard Edition.  El detalle de las funcionalidades clave de este componente que podéis ver en la página de KWizCom es el siguiente:

  • Display any list views in your custom-tailored layout
  • Display aggregated data from various site collections and web applications in your requested custom layout (Professional edition)
  • Includes great-looking, ready-to-use display layouts such as image gallery, blog spotlight, tasks accordion and more
  • Create custom display layout, no external tools required.
  • Includes Site Collection repository of shared layouts

Si queréis tener la oportunidad de obtener este producto para usarlo de forma gratuita, tenéis que participar en el concurso que KWizCom ha ideado y que consiste en:

KWizCom_Master_Logo_Recortado

SharePoint: Como aplicar una página maestra a un sitio y sus subsitios con Power Shell!

En esta ocasión os dejo un script PowerShell que permite aplicar una página maestra a un sitio y todos sus subsitios de forma recursiva por medio de PowerShell. Espero que os sea de utilidad:

   1: If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) 

   2: { Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell }

   3:  

   4: #Hacemos un buen uso de PowerShell par ano penalizar el rendimiento

   5: $host.Runspace.ThreadOptions = "ReuseThread"

   6:  

   7: #Definición de la función para aplicar la página maestra a cada sitio de la colección

   8: function Aplicar-MasterPageSitios

   9: {    

  10:     $spSite = Get-SPSite $sSiteUrl    

  11:     $spsubWebs = $spSite.AllWebs    

  12:     foreach($spsubWeb in $spsubWebs)

  13:     {

  14:         Write-Host "Aplicando página maestra norbert.master a ($($spsubWeb.Url))" -foregroundcolor green

  15:         $spsubWeb.MasterUrl= $sMasterUrl

  16:         $spsubWeb.Update()

  17:     }     

  18:     $spSite.Dispose() 

  19: }

  20:  

  21: Start-SPAssignment –Global

  22: #Desaplicamos la página maestra

  23: $sSiteUrl="http://<Sitio_SharePoint>/"

  24: $sMasterUrl="/_catalogs/masterpage/<MyPaginaMaestra>.master"

  25: Aplicar-MasterPageSitios

  26:  

  27: Stop-SPAssignment –Global

SharePoint 2013: Integración con Yammer con el Service Pack 1 (II)!

Siguiendo con la serie de de posts sobre la integración de Yammer y SharePoint 2013 con el Service Pack (SP) 1, en este post os voy a mostrar lo que ya os anticipaba: de integración nada de nada, lo que tenemos es una simple redirección a Yammer desde la barra de navegación superior. Para configurar esta redirección lo que tenemos que hacer es lo siguiente:

  • Accedemos a la Administración Central de Office 365 y en la sección Office 365 hacemos clic en “Configure Yammer” (“Configurar Yammer” en el caso de una instalación en castellano).
  • En la página que se abre, simplemente pulsamos el botón “Activate Yammer”.
image image
  • A continuación el cambio visible que veremos es que el enlace “Newsfee” de la barra de navegación superior ha sido sustituido por Yammer.
  • Si hacemos clic en el mismo, seremos redirigidos a la página de aplicación “Yammer.aspx” qué hace una simple redirección hacía Yammer, lo que para mi es una decepción porque al final de integración nada de nada.
image image
 
  • Podréis comprobar como además, el feed de actividad de SharePoint 2013 sigue estando ahí y no el de Yammer como cabría esperar cuando se habla de una integración de Yammer y SharePoint 2013 On-Premise.

image

SharePoint:¿Qué elementos mínimos necesito para desarrollar soluciones para SharePoint?

A raíz de una consulta planteada en los foros de desarrollo de MSDN sobre SharePoint me he dado cuenta de qué a pesar de la gran cantidad de información sobre desarrollo para SharePoint que tenemos (diría que demasiada) en la red, en ocasiones siguen surgiendo dudas sobre qué se necesita para desarrollar para la plataforma. La respuesta inicial a esta duda es qué depende de la versión de SharePoint en la qué quieras desarrollar ya que los requisitos de desarrollo varían en función de la versión de la plataforma. En este post voy a resumir los elementos mínimos que necesitamos para poder desarrollar para SharePoint 2013 y SharePoint 2010.

SharePoint 2013

Podemos desarrollar dos tipos principales de artefactos para SharePoint: soluciones de SharePoint (o lo que yo llamo desarrollo clásico) y aplicaciones (que vienen como parte del nuevo modelo de desarrollo que aparece en esta versión del producto http://msdn.microsoft.com/es-es/library/jj163230.aspx). A partir de aquí, los elementos mínimos que necesitamos para desarrollar son los siguientes:

  • Si vamos a desarrollar aplicaciones, con tener instalado Visual Studio 2013 o 2012 es suficiente puesto que podemos crear Aplicaciones para SharePoint Online y por lo tanto no necesitas disponer de un entorno de desarrollo en el que tengamos instalado SharePoint 2013. Eso sí, necesitaremos disponer de una suscripción válida de Office 365 o de SharePoint Online contra la que podamos desarrollar:
    • En concreto, necesitaremos un sitio de tipo Sitio de Desarrollador en el que poder desplegar y probar nuestras Aplicaciones: http://msdn.microsoft.com/en-us/library/office/fp179924.aspx.
    • Este tipo de sitio lo podemos tener en planes de Office 365 de tipo empresarial que incluyen SharePoint Online, directamente si contamos con una suscripción de tipo Office 365 Developer (si tenemos una suscripción de MSDN de tipo Visual Studio Ultimate o Visual Studio Premium tenemos como beneficio este tipo de suscripción) o bien mediante una trial de Office 365. Todas estas opciones vienen claramente especificadas en el enlace anterior.

Nota: Como alternativa a Visual Studio, en el caso de desarrollo de aplicaciones para SharePoint Online tenemos la opción de usar NAPA: http://msdn.microsoft.com/en-us/library/office/jj220038.aspx

  • Si vamos a desarrollar soluciones (desarrollo clásico), entonces ahí si necesitaremos montar un entorno completo de SharePoint por lo que tienes que disponer de una máquina (física, virtual o en la nube) en la que dispongas de los siguientes elementos:
    • SharePoint 2013 (Foundation o Server instalado) que tiene que ser instalado sobre Windows Server 2008 R2 SP 1 o bien Windows Server 2012: http://technet.microsoft.com/es-es/library/cc262485.aspx.
    • Adicionalmente, dependiendo del tipo de instalación necesitaremos SQL Server 2008 R2 SP1 como mínimo (siempre recomiendo que se aplique el último Service Pack disponible) para disponer de todas las capacidades de BI necesitarás SQL Server 2012 SP1.
    • Visual Studio 2013 o 2012.
    • Opcionalmente, SharePoint Designer 2013.

SharePoint 2010

En este caso sólo podemos desarrollar soluciones para SharePoint por lo que necesitaremos montar un entorno completo de SharePoint 2010. Por lo tanto, necesitaremos disponer de una máquina (física, virtual o en la nube) en la que dispongamos de los siguientes elementos:

  • SharePoint 2010 (Foundation o Server instalado) que como tiene que ser instalado sobre Windows Server 2008 o bien Windows Server 2008 R2: http://technet.microsoft.com/en-us/library/cc262485(office.14).aspx. Aquí es importante también que sepas que puedes instalar SharePoint 2010 sobre Windows 7.
  • Adicionalmente, dependiendo del tipo de instalación necesitarás SQL Server 2008 SP1 CU 3 como mínimo…aunque te recomiendo SQL Server 2008 R2.
  • Visual Studio 2013, 2012 o 2010.
  • Opcionalmente, SharePoint Designer 2010.

Otras herramientas de desarrollo

Una vez que se coge soltura en cuanto a desarrollo de artefactos para SharePoint, podemos empezar a enriquecer nuestro entorno de desarrollo con herramientas que nos faciliten la vida, nos permitan depurar errores, etc. En este caso, os dejo un par de referencias al respecto:

SharePoint Online: Como autenticarse con el modelo de objetos en cliente (revisado)!

Como siempre digo, en los cursos de formación que imparto yo soy un alumno más que aprende a partir de las preguntas que realizan los alumnos que asisten a mis cursos. En esta ocasión, lo que hemos aprendido es lo fácil que resulta autenticarse contra SharePoint Online en Office 365 gracias a un nuevo método que incorpora el modelo de objetos en cliente: SharePointOnlineCredentials().

  • Básicamente, en el caso de la implementación .NET del modelo de objetos en cliente necesitamos añadir directivas using a Microsoft.SharePoint.Client y System.Security.
   1: //Espacios de nombres necesarios

   2: using MO_NET = Microsoft.SharePoint.Client;

   3: using System.Net;

   4: using System.Security;

  • Luego a la hora de conectaros a SharePoint Online a través de ClientContext podemos autenticarnos haciendo uso del método anterior al que únicamente le tenemos que pasar nuestro usuario y contraseña de Office 365 y listo.
   1: try

   2: {

   3:     DataTable dtColeccionListas =

   4:         new DataTable();

   5:     dtColeccionListas.Columns.Add("Title");

   6:     dtColeccionListas.Columns.Add("Id");

   7:     using (MO_NET.ClientContext ctx =

   8:         new MO_NET.ClientContext(txtSitio.Text))

   9:     {

  10:  

  11:         //SharePoint Online

  12:         var login = "<user>@<dominioOffice365>.onmicrosoft.com";

  13:         var password = "<Password>";

  14:         var securePassword = new SecureString();

  15:         foreach (char c in password)

  16:         {

  17:             securePassword.AppendChar(c);

  18:         }

  19:  

  20:         var onlineCredentials = new MO_NET.SharePointOnlineCredentials(login, securePassword);

  21:         ctx.Credentials = onlineCredentials;

  22:         MO_NET.Web wSitio = ctx.Web;

  23:         ctx.Load(wSitio, oSitio => oSitio.Title);

  24:  

  25:         MO_NET.ListCollection lcLists = wSitio.Lists;

  26:         IEnumerable<MO_NET.List> lcListsCollection =

  27:             ctx.LoadQuery(lcLists);

  28:         ctx.ExecuteQuery();

  29:  

  30:         lblMensaje.Text =

  31:             "El número de listas contenidas en el Sitio " +

  32:             wSitio.Title + " es " +

  33:             lcListsCollection.Count().ToString();

  34:  

  35:         foreach (MO_NET.List l in lcListsCollection)

  36:         {

  37:             DataRow dtRow = dtColeccionListas.NewRow();

  38:             dtRow["Title"] = l.Title;

  39:             dtRow["Id"] = l.Id;

  40:             dtColeccionListas.Rows.Add(dtRow);

  41:         }

  42:         grdListas.DataSource = dtColeccionListas;

  43:     }

  44: }

  45: catch (MO_NET.InvalidQueryExpressionException ex)

  46: {

  47:     MessageBox.Show(ex.Message, "¡Error!",

  48:         MessageBoxButtons.OK,

  49:         MessageBoxIcon.Error);

  50: }

  51: catch (MO_NET.ClientRequestException ex)

  52: {

  53:     MessageBox.Show(ex.Message, "¡Error!",

  54:         MessageBoxButtons.OK,

  55:         MessageBoxIcon.Error);

  56: }

  57: catch (MO_NET.PropertyOrFieldNotInitializedException ex)

  58: {

  59:     MessageBox.Show(ex.Message, "¡Error!",

  60:         MessageBoxButtons.OK,

  61:         MessageBoxIcon.Error);

  62: }

  63: catch (MO_NET.ServerUnauthorizedAccessException ex)

  64: {

  65:     MessageBox.Show(ex.Message, "¡Error!",

  66:         MessageBoxButtons.OK,

  67:         MessageBoxIcon.Error);

  68: }

  69: catch (MO_NET.ServerException ex)

  70: {

  71:     MessageBox.Show(ex.Message, "¡Error!",

  72:         MessageBoxButtons.OK,

  73:         MessageBoxIcon.Error);

  74: }

  75: catch (Exception ex)

  76: {

  77:     MessageBox.Show(ex.Message, "¡Error!",

  78:         MessageBoxButtons.OK,

  79:         MessageBoxIcon.Error);

  80: }

  81:  

  82:         }

  • El resultado es que accedemos a la información del sitio de SharePoint Online sin problemas y sin más que utilizar dos líneas de código para autenticarnos contra el mismo. Sin duda, un gran avance a la hora de interactuar con sitios de SharePoint Online desde aplicaciones remotas.

image

Fuente: http://tomaszrabinski.pl/wordpress/2013/03/18/connecting-to-office-365-using-client-side-object-model-and-web-services/