Mostrando entradas con la etiqueta PowerShell. Mostrar todas las entradas
Mostrando entradas con la etiqueta PowerShell. Mostrar todas las entradas

domingo, 18 de enero de 2015

Remover Event Receiver mediante PowerShell

En este post expliqué cómo agregar Event Receivers mediante client object, ahora les voy a mostrar cómo sacarlos con PowerShell

Add-PSSnapin Microsoft.SharePoint.PowerShell –erroraction SilentlyContinue
$web=Get-SPWeb "http://url_WEBSITE"
$lista = $web.Lists["NombreListaOLibreria"]
$tipoEvent = "ItemAdding" #pueden ser ItemAdding, ItemUpdating, ItemDeleted, etc
$cantEventReceivers = $lista.EventReceivers.Count
if ($cantEventReceivers -gt 0)
{
   for( $index = $cantEventReceivers -1; $index -gt -1; $index–-)
   {
      $receiver = $lista.EventReceivers[$index] ;
      $name = $receiver.Name
      $typ = $receiver.type ;
 
      if ($typ -eq $tipoEvent) 
      {
         $receiver.Delete()
         Write-Host "se borro el event receiver " $name
      }
   }
}
else
{
   Write-Host "No hay EventReceivers de este tipo " $tipoEvent " registrados para la lista"
}
 
$web.Dispose()

domingo, 4 de enero de 2015

Obtener todos los websites de un web application mediante powershell

Add-PSSnapin Microsoft.SharePoint.PowerShell –erroraction SilentlyContinue
$webApplication = Get-SPWebApplication http://url_webApplication
$filePath = "C:\AllSites.txt"
$sites = $webApplication.Sites
foreach ($site in $sites)
{
    foreach ($web in $site.AllWebs)
    {      
        $web.Url | Out-File -FilePath $filePath -Append -Width 256        
    }   
}

domingo, 24 de agosto de 2014

Generar un inventario de nuestros sites collection (full url, created, LastContentModified, Size in MB)

Abrimos una consola de powershell y ejecutamos lo siguiente:

Add-PSSnapin Microsoft.SharePoint.Powershell
Get-SPSite -Limit ALL | select url, @{label="Created";Expression={$_.RootWeb.Created}} , LastContentModifiedDate, @{label="Tamaño en MB";Expression={$_.usage.storage/1MB}} | Sort-Object -Descending -Property url  | Export-Csv -Path c:\inventariositescollection.csv –notype

Nos retornará un archivo .csv con los siguientes campo: url, fecha de creación, última fecha de modificación de su contenido y el tamaño del site collection en MB.

Para utilizar otras propiedades, podemos ejecutar el siguiente script:

$sc = Get-SPSite http://url_sitecollection
$sc | Get-Member

jueves, 21 de agosto de 2014

Error al activar la feature “SharePoint Server Publishing”

Al activar la feature “SharePoint Server Publishing”

image

Me lanza el siguiente error: 

Event log message was: 'Failed to initialize some site properties for Web
at Url: 'http://url_siteCollection''. Exception was: 'System.InvalidOperationException: Failed to compare two elements in the array. ---> System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.  Parameter name: index   
at System.ThrowHelper.ThrowArgumentOutOfRangeException()   
at System.Collections.Generic.List`1.get_Item(Int32 index)   
at Microsoft.SharePoint.SPFieldMultiColumnValue.get_Item(Int32 index)   
at Microsoft.SharePoint.Publishing.PageLayout.get_AssociatedContentTypeId()   
at Microsoft.SharePoint.Publishing.PageLayout.get_AssociatedContentType()   
at Microsoft.SharePoint.Publishing.PageLayout.get_UIDisplayName()   
at Microsoft.SharePoint.Publishing.PageLayoutComparerByUIDisplayName.Compare(PageLayout x, PageLayout y)   
at System.Collections.Generic.ArraySortHelper`1.SwapIfGreaterWithItems(T[] keys, IComparer`1 comparer, Int32 a, Int32 b)   
at System.Collections.Generic.ArraySortHelper`1.QuickSort(T[] keys, Int32 left, Int32 right, IComparer`1 comparer)   
at System.Collections.Generic.ArraySortHelper`1.Sort(T[] keys, Int32 index, Int32 length, IComparer`1 comparer)     -
-- End of inner exception stack trace ---   
at System.Collections.Generic.ArraySortHelper`1.Sort(T[] keys, Int32 index, Int32 length, IComparer`1 comparer)   
at System.Array.Sort[T](T[] array, Int32 index, Int32 length, IComparer`1 comparer)   
at System.Array.Sort[T](T[] array, IComparer`1 comparer)   
at Microsoft.SharePoint.Publishing.PublishingWeb.GetAvailablePageLayouts()   
at Microsoft.SharePoint.Publishing.Internal.AreaProvisioner.InitializePublishingWebDefaults()'
 

image

Solución: ejecutar los siguientes comandos.

stsadm -o activatefeature -filename publishing\feature.xml -url http://url_siteCollection -force
stsadm -o activatefeature -filename publishingweb\feature.xml -url http://url_siteCollection -force

domingo, 29 de junio de 2014

Simple tip para exportar los usuarios de un grupo a un archivo csv (exporting users in a group to a csv file)

Simplemente ejecutar

Get-SPUser -Group "Support Owners" -Web url_WEBSITTE | Export-Csv c:\test1.csv -NoTypeInformation –force

recuerda reemplazar los parámetros Support Owners y WebSite, el cual el primero define el grupo y el segundo el web site donde se realizará la consulta.

Tip adicional:

La user information list (/_catalogs/users/simple.aspx) es una lista oculta la cual almacena información de los usuarios del site collection y algo de metadata (Picture, Email, DisplayName, LoginName, etc). Cuando agregas un permiso para el usuario a un website, list, library, etc, y el usuario ingresa por primera vez, automáticamente Sharepoint lo agrega a esta lista. En el caso de un grupo de AD, Sharepoint lo hace automáticamente cuando seteas los permisos.

Hay dos jobs que actualizan los datos del usuario con la base de perfiles:

User Profile Service Application – User Profile to SharePoint Full Synchronization(Hourly)

User Profile Service Application – User Profile to SharePoint Quick Synchronization(Every 5 Minutes).

Si lo quieres hacer manual, puedes ver este link: http://blog.falchionconsulting.com/index.php/2011/12/updating-sharepoint-2010-user-information/

Pero el post trata de exportar los usuarios de un grupo, cómo podemos exportar la lista de usuarios de la lista “User Information List”. Hay un montón de post que utilices una url específica, copiando el ID de la lista, etc.

Pero hay otra manera mucho más simple.

Sólo edita la página, edita el web part. Después cambia el tipo de toolbar type a “Show Toolbar”

image

image

image

Y ya podrás exportar la lista de usuarios.

image

sábado, 28 de junio de 2014

Ocultar el mensaje “Experience all that Sharepoint 2013 has to offer. Start Now or Remind me later”

image

Esta barra se muestra después de haber hecho un upgrade un site collection de 2010 a 2013. Al ocultarlo (remind me latter) se mostrará a los 30 días de nuevo.

Cómo podemos ocultar esta barra? Tan simple ejecutando el siguiente comando

Get-SPSite -Limit All -CompatibilityLevel 14 | % { $_.AllowSelfServiceUpgrade = $false }

martes, 10 de junio de 2014

Iniciar un servicio en un application server específico

Suponemos que tenemos 2 application server, llamados CONTOSO-APP1 y CONTOSO-APP2, y queremos iniciar el servicio de Excel Calculation Services en el application server App2, lo podemos hacer con PowerShell

Get-SpServiceInstance | where {$_.typename eq “Excel Calculation Services” –and $_.Parent –like “*CONTOSO_APP2”} | Start-SPServiceInstance

domingo, 30 de marzo de 2014

Obtener todos los sites collections de un web application mediante PowerShell

Get-SPWebApplication http://webapplicationURL  | Get-SPSite -Limit All | Get-SPWeb -Limit All | Select Title, URL |  export-csv –notypeinformation c:\temp\sitescollection.csv -encoding "utf8"

martes, 18 de febrero de 2014

Mover un site collection a otra content database (Move a Site collection to a different content database)

Se recomienda tener content database`s  de 200 GB tanto por la performance pero principalmente por la administración (backup & restore). Si una base de contenido pasa este tamaño recomendado, tendremos que mover un site collection a otra content database.

  • Verificar el tamaño del site collection

$used = (Get-SPSiteAdministration –Identity <http://sitecollectionurl>).DiskUsed
$used

  • Crear la base de contenidos (en el mismo server de base de datos, si queremos mover el site collection a otra base de contenido que no está en el server de SQL original, el procedimiento cambia)
  • Limpiar los datos de auditoria

$date = Get-Date
$date = $date.AddMilliseconds(1)

(Get-SPSite -Identity <http://sitecollectionurl>).Audit.TrimAuditLog($date)

  • Verifica que haya espacio suficiente en el volumen donde está la base de contenido de destino
  • Mover el site collection

Move-SPSite <http://sitecollectionurl> -DestinationDatabase <DestinationContentDb>

Para finalizar has un iisreset en todos los servers, y limpia la cache de Sharepoint (http://blogs.msdn.com/b/jamesway/archive/2011/05/23/sharepoint-2010-clearing-the-configuration-cache.aspx)

En el caso que quieras mover un site collection a otra base de contenido que NO está en el mismo server que el original, se recomienda crear un base de contenido vacia en el server local, mover ese site collection a esa base, y después mover la base de contenido completa al nuevo server, y attacharla al web application. Es mucho más eficiente que hacer un backup & restore del site.

martes, 19 de marzo de 2013

Links útiles #26 Sharepoint 2013

1-Welcome dialog al crear MySites en Sharepoint 2013

image

http://www.ilovesharepoint.com/2013/03/get-rid-of-mysite-lets-get-social-dialog.html

2-Suite bar con el breadcrumb del site en Sharepoint 2013

Breadcrumb Sub-Sub-Site

http://sharepoint-community.net/profiles/blogs/transform-the-sharepoint-suite-bar-text-into-a-breadcrumb-with

3-Sharepoint 2013 y Live ID authentication

Guía para configurar claims authentication Live ID con Sharepoint 2013

http://projectserverblogs.com/?p=8064

4-Documentum y Sharepoint 2013

Esta guía describe como configurar el conector de Documentum en Sharepoint 2013 para indexar contenido del WebTop Documentum.

http://technet.microsoft.com/en-us/library/ff721975.aspx

5-Fuentes de resultados para el search en Sharepoint 2013

Esta guia describe las fuentes de resultados de las búsquedas de Sharepoint 2013.

http://technet.microsoft.com/en-us/library/dn186229.aspx

6-Upgrade Managed metadata de Sharepoint 2010 a 2013

Este artículo informa cómo realizar un upgrade del servicio de Metadata a 2013, y explica como consumir el servicio desde otra granja de Sharepoint 2010 existente.

http://blogs.msdn.com/b/alimaz/archive/2012/08/07/service-application-federation-between-sharepoint-2013-and-sharepoint-2010.aspx

7-Twitter Bootstrap en Sharepoint 2013

Esta guía describe la utilización del framework Booststrap con las aplicaciones de Sharepoint 2013

http://ranaictiu-technicalblog.blogspot.com.ar/2013/03/sharepoint-2013-use-twitter-bootstrap.html

8-Mapear los comandos de stsadm a comandos de powershell de Sharepoint 2013

Esta guía describe el mapeo entre los comandos de stsadm y los comandos de powershell de Sharepoint 2013

http://technet.microsoft.com/en-us/library/ff621084.aspx

9-CallOut en Sharepoint 2013

Información para utilizar la feature callout de Sharepoint, la misma permite mostrar información relevante al contexto y acciones acerca un ítem en particular.

Custom Callouts in SharePoint 2013 Preview (from Andrey Markeev's blog)

http://gluckdavid.wordpress.com/2013/03/05/create-callout-in-sharepoint-2013-basics/

http://chuvash.eu/2012/10/11/callouts-in-sharepoint-2013-preview/

http://blog.alexboev.com/2012/07/custom-callouts-in-sharepoint-2013.html

10-Extension FastDeploy para VS2012 y SP2013

Extensión para deployar archivos de recursos (scripts, css, etc) a Sharpeoint On-Premise App Model.

http://sharepointfieldnotes.blogspot.com.ar/2013/03/making-it-easy-to-develop-and-debug.html

http://visualstudiogallery.msdn.microsoft.com/9e03d0f5-f931-4125-a5d1-7c1529554fbd

sábado, 19 de enero de 2013

Tips Info #93 Sharepoint 2010

1-Obtener el path de instalación de Sharepoint 2010 vía código (Get the installation path via code Sharepoint 2010)

Se puede usar la función SPUtility.GetGenericSetupPath

SPUtility.GetGenericSetupPath(string.Empty)
La línea de arriba retorna: C:\Program Files\Common Files\Microsoft Shared\web server extensions\14\

SPUtility.GetGenericSetupPath("Template\\Images")
La línea de arriba retorna: C:\Program Files\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\Images

2-Search Query Component no responde en Sharepoint 2010 (Does not respond Search Query Component)

El status del componente dice “Not Responding”.

Para reiniciar el componente puede ejecutar el siguiente comando de powershell:

$SearchApp = Get-SPEnterpriseSearchServiceApplication -identity "Search Service Application"
$SearchApp | Get-SPEnterpriseSearchQueryTopology | Get-SPEnterpriseSearchQueryComponent | Where-Object {$_.ServerName -eq 'server name'} | Restart-SPEnterpriseSearchQueryComponent

3-Actualizar un item de lista con PowerShell (Updating a list item with PowerShell)

$web = Get-SPWeb http://site/website
$list = $web.list["ListaNombre"]
$item = $list.GetItemByID(14)
$item.File.Update();    

4-Sharepoint Scopes

Al desarrollar para Sharepoint tenemos dos scopes que hacen referencia a donde se deployará los assemblies, y a que nivel de la granja se activará nuestra feature a implementar.

Solution Deployment Scope (ubicación de los assemblies)

  • GlobalAssemblyCache
  • WebApplication
  • Sandbox

Esta opción nos dice donde se deployarán los WSP de la solución y sus asemblies. Puede ser a nivel de farm (c:\windows\assemblies), sobre un Web Application (directorio \bin) o en la galería de soluciones, a traves de una Sandboxed solution.

image

Feature Scope (donde se habilitará la feature)

  • Farm
  • Web Application
  • Site
  • Web

Feature Scope se usa para activar una feature en una ubicación específica.

Farm – la feature estará disponible para toda la granja. Se activa desde: Central Administration > Operations > Manage Farm Features.
WebApplication – la feature estará disponible para todos los web applications. Se activa desde Central Administration > Application Management > Manage Web Application Features
Web – La feature estará disponible para todos los webs. Se activa en Site Settings > Site Features
Site – La feature estará disponible para todos los sites site collections.Se activa desde Site Settings > Site Collection Features

Hay dos tipos de recursos en Features para soportar archivos:

  • Local resources stored : se guarda en un subdirectorio dentro de la carpeta de la feature en \Template\Features directory.
  • Shared application Feature y site definition resources  son almacenados dentro de %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\Resources

5-Deshabilitar datasheet en Sharepoint 2010 (Disabled Datasheet)

DocShare1.gif

DocShare9.gif

Vía C#

using (SPSite site = new SPSite("http://sharepoint/sites/web1"))
{
    using (SPWeb web = site.RootWeb)
    {
        SPList docLibreria =web.Lists["Libreria"];

        // Change the advanced settings
        // Update the changes
        docLibreria.DisableGridEditing = true;
        docLibreria.Update();
    }
}

Vía PowerShell

$site=Get-SPSite "http://sharepoint/sites/web1"
$web=$site.RootWeb
$docLibreria =$web.Lists["Libreria"]
$docLibreria.DisableGridEditing  = $true
$docLibreria.Update()

martes, 15 de enero de 2013

Tips Info #91 Sharepoint 2010

1-Agregar un nuevo favicon.ico en Sharepoint 2010

Abre el archivo v4.master con el Sharepoint Designer, y busca el control SPShortcutIcon

<SharePoint:SPShortcutIcon runat="server" IconUrl="/_layouts/images/favicon.ico"/>

Para cambiar el icono, vaya al siguiente path:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES

2-Error: "List does not exist. The page you selected contains a list that does not exist. It may have been deleted by another user". O no se puede crear/editar una View

http://support.microsoft.com/kb/2732632

3-Services Pack 1 – Recuperar Site Collections

Get-SPDeletedSite – este comando obtiene una lista de site collections borrados en la granja

Restore-SPDeletedSite – este comando se usa para hacer el restore de un site collection

Remove-SPDeletedSite – este comando es para hacer un clean out de los sites collection (Emty Recycle Bin)

4-Handler mappins requeridos para que funcione Sharepoint 2010

5-Saber el index location del search de Sharepoint

Hay dos manera de revisar la carpeta donde se mantiene el index location del search. Vía Central Administration:

Central Admin -> Application Management -> Manage service applications
   -> Search Service Application ->Search Application Topology (Modify)
      -> IndexPartition/Query Component (Edit Properties).

Vía PowerShell:

  $(Get-SPEnterpriseSearchServiceInstance).CrawlComponents.Item(0).IndexLocation

sábado, 15 de diciembre de 2012

Tips Info #85 Sharepoint 2010

1-Script para obtener el tamaño, cantidad de usuarios y url de todos los sites collections mediante powershell

Get-SPSiteAdministration -Limit All | select Url, @{label = "Size";Ex = {$_.DiskUsed/1MB}}, UsersCount | Sort-Object -Descending -Property "Size" | ConvertTo-Html -title "Site Collections" | Set-Content sitecollectionsinfo.html

2-Obtener las versiones de los documentos vía querystring – powershell – client object

Via querystring

Se puede usar el parámetro IncludeVersions=TRUE , por ejemplo:

http://sitecollection/sites/demo/docs/Forms/AllItems.aspx?IncludeVersions=TRUE

Vía powershell

$SPWeb = Get-SPWeb http://nombredelsite
foreach($List in $SPWeb.Lists)
{
   $ItemsColl = $List.Items
   foreach ($item in $ItemsColl)
    {
      foreach($version in $item.Versions)
        {
Write-Host $version.VersionLabel
        }
    }
}
$SPWeb.Dispose()

Vía client object

public void GetVersions()
{
    ClientContext clientContext = new ClientContext("http://website_url");
    Web site = clientContext.Web;
    clientContext.Load(site);
    clientContext.ExecuteQuery();

    File file = site.GetFileByServerRelativeUrl("/Libreria/documento.pdf");
    clientContext.Load(file);
    clientContext.ExecuteQuery();

    ListItem currentItem = file.ListItemAllFields;
    clientContext.Load(currentItem);
    clientContext.ExecuteQuery();

    FileVersionCollection versions = file.Versions;
    clientContext.Load(versions);
    clientContext.ExecuteQuery();

    if (versions != null)
    {
        foreach(FileVersion _version in versions)
        {
            Console.WriteLine("Version : {0}",_version.VersionLabel);
        }
    }
}

3-Script de SQL para saber el “Database growth rate” de las bases de contenido

Creo el store sobre la base de datos master

USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[sp_track_db_growth](@dbnameParam sysname = NULL)
AS
BEGIN
DECLARE @dbname sysname
-- Set the current DB, if dbname is not given input
SET @dbname = COALESCE(@dbnameParam, DB_NAME())
 
SELECT    CONVERT(char, backup_start_date, 111) AS [Date], --yyyy/mm/dd format
    CONVERT(char, backup_start_date, 108) AS [Time],
    @dbname AS [Database Name], [filegroup_name] AS [Filegroup Name], logical_name AS [Logical Filename],
    physical_name AS [Physical Filename], CONVERT(numeric(20,4),file_size/1048576) AS [File Size (MB)],
    Growth AS [Growth Percentage (%)]
FROM
(
    SELECT    b.backup_start_date, a.backup_set_id, a.file_size, a.logical_name, a.[filegroup_name], a.physical_name,
        (
            SELECT    CONVERT(numeric(20,4),((a.file_size * 100.00)/i1.file_size)-100)
            FROM    msdb.dbo.backupfile i1
            WHERE     i1.backup_set_id =
                        (
                            SELECT    MAX(i2.backup_set_id)
                            FROM    msdb.dbo.backupfile i2 JOIN msdb.dbo.backupset i3
                                ON i2.backup_set_id = i3.backup_set_id
                            WHERE    i2.backup_set_id < a.backup_set_id AND
                                i2.file_type='D' AND
                                i3.database_name = @dbname AND
                                i2.logical_name = a.logical_name AND
                                i2.logical_name = i1.logical_name AND
                                i3.type = 'D'
                        ) AND
                i1.file_type = 'D'
        ) AS Growth
    FROM    msdb.dbo.backupfile a JOIN msdb.dbo.backupset b
        ON a.backup_set_id = b.backup_set_id
    WHERE    b.database_name = @dbname AND
        a.file_type = 'D' AND
        b.type = 'D'
       
) as Derived
WHERE (Growth <> 0.0) OR (Growth IS NULL)
ORDER BY 'File Size (MB)' desc
END

Ejecuto el store

exec sp_track_db_growth 'WSS_Content_XXXXX'

4-Custom 404 page en Sharepoint 2010 (not found page)

  • Crear una página llamada 404.html con tu editor html favorito
  • Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\LangID  donde LangID es lenguaje actual que estás usando. ej: 1033 para el inglés.
  • Copiar la página previamente creada a la carpeta. MI recomendación es subir el archivo en cada LangID que tengas definido.
  • Abrir una consola de powershell y ejecuta lo siguiente:

$webapp =Get-SPWebApplication http://<serverUrl>:<port>
$webapp.FileNotFoundPage = "404.html"
$webapp.update()

Para verificar ejecuta la siguiente consulta: (Get-SPWebApplication http://<serverUrl>:<port>).FileNotFoundPage

Y a continuación ejecuta una consulta vía navegador que genere un 404.

Posibles problemas:

  • No se muestra la página de error custom: hacer un recycle del app pool, o incluso mejor hacer un iisreset.

Otra posibilidad es setear la custom page vía el IIS:

http://www.ngpixel.com/2010/12/23/sharepoint-2010-custom-error-pages/

5-No se puede visualizar el icono de pdf en Sharepoint 2010

image

Para agregar el icono de pdf se deberá hacer lo siguiente:

Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14”) and then to TEMPLATE\IMAGES, y subir el icono de pdf.

6a012875706f1b970c0134873475df970c-800wi

Después se deberá editar el archivo DOCICON.XML dentro de la carpeta TEMPLATE\XML

6a012875706f1b970c013487347657970c-800wi

6a012875706f1b970c0133f4140cb7970b-800wi

A continuación has un iisreset en todos los frontends.

5-Links para hacer un signout de Sharepoint

/_layouts/closeConnection.aspx?loginasanotheruser=true

ó

/_layouts/signout.aspx

martes, 11 de diciembre de 2012

Tips Info #84 Sharepoint 2010

1-Setear la default page de un site mediante powershell

$site = Get-SPSite http://webapplication/sites/site
$web = $site.RootWeb #or $web = $site.OpenWeb("yoursubsite")
$folder = $web.RootFolder
$folder.WelcomePage = "SitePages/homapage.aspx" #or  $folder.WelcomePage = "default.aspx") (or  $folder.WelcomePage = "Shared%20Documents/otra_pagina.aspx")
$folder.update()
$web.Dispose()
$site.Dispose()

2-XSL custom para un XsltListViewWebPart y DataFormWebPart (itemstyle.xsl)

Se puede usar la propiedad XslLink

<Xsl>
<xsl:stylesheet><!-- Se borraron los namespaces para una mejor lectura-->
<xsl:include href="/SiteAssets/Custom.xsl"/>
</xsl:stylesheet>
</Xsl>

3-Configurar major version para todas las librerías y hacer una limpieza de versiones viejas

$SPsiteCollection = Get-SPSite "http://url_sitecollection"
$versionsToKeep = 5;
foreach($SPweb in $SPsiteCollection.AllWebs)

    foreach ($SPlist in $SPweb.Lists)
    { 
        if($SPlist.EnableVersioning=$true)
        {
            $SPlist.MajorVersionLimit = 5;   
            $SPlist.Update();
        }
       
        foreach ($SPListItem in $SPlist.Items)
         {
           $currentVersionsCount= $SPListItem.Versions.count
        
           if($currentVersionsCount -gt $versionstoKeep)
             {
                $SPListItem.SystemUpdate()
             }
         }
    } 
}

4-Session timeout para forms authentication en Sharepoint 2010

Se puede configurar la opción de timeout de la sessión para la autenticación vía forms mediante el siguiente script de powershell

$sts = Get-SPSecurityTokenServiceConfig
$sts.UseSessionCookies = $true
$sts.FormsTokenLifetime = (New-Timespan –Minutes 30)
$sts.LogonTokenCacheExpirationWindow = (New-Timespan –Minutes 30)
$sts.Update()
iisreset

5-Encontrar el número de usuarios en un site collection mediante powershell

Get-SPSiteAdministration -Identity http://sitecollection_url | Select-Object Url, UsersCount

jueves, 6 de diciembre de 2012

Tips Info #83 Sharepoint 2010

1-Agrupar por content type en Sharepoint 2010

Edita el web part, agregando lo siguiente:

screen_2

2-Verificar si se necesita ejecutar un upgrade con psconfig

Ejecutar el siguiente comando de powershell: (get-spserver $env:computername).NeedsUpgrade

3-Obtener la lista de todos los usuarios de un web application

Get-SPWebApplication http://webapplication:puerto | Get-SPSite | Get-SPWeb | Get-SPUser

4-Obtener el tamaño de las bases de Sharepoint 2010 en MB

Get-SPDatabase | Sort-Object disksizerequired -desc | Format-Table Name, @{Label ="Size in MB"; Expression = {$_.disksizerequired/1024/1024}}

5-Algunos tips para considerar al unir un server a la granja de Sharepoint

  • La key de la licencia debe ser la misma para todos los servers de la granja
  • La cuenta que ejecuta Farm Configuration Wizard debe ser la Farm Account.
  • Si usas alias para los sql server, recuerda que cada server debe tener el mismo alias (sino tendrás problemas de conexión a base de datos)
  • Verifica si los nuevos servers se pueden  comunicar con los demás servers

jueves, 29 de noviembre de 2012

Tips Info #81 Sharepoint 2010

1-Error en Visual Studio en ambiente local de Sharepoint: The web application at http://server could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.

Revisa que estés compilando en x64, ya que Sharepoint es una plataforma de 64 bits.

image

2-Error: The method “GetItems” of the Type “List” with id “{ID}” is blocked by the administrator  on the server

Este error se debe a que se quiso consumir información de Sharepoint mediante client object.

Ejecuto el siguiente comando de powershell para saber si el método se encuentra como tipo restringido.

$wa = Get-SPWebApplication -Identity http://webapplication_url
$wa.ClientCallableSettings.AnonymousRestrictedTypes

image

Como pueden ver en la imagen superior, el método GetItems está restringido.

Para solucionar este error ejecutar el siguiente comando:

$wa = Get-SPWebApplication -Identity "http://webapplication_url"
$wa.ClientCallableSettings.AnonymousRestrictedTypes.Remove([Microsoft.SharePoint.SPList], "GetItems")
$wa.Update()
$wa.ClientCallableSettings.AnonymousRestrictedTypes

image

3-Tips de SQL tunning para Sharepoint

  • maxdop = 1 (Max degree of parallelism)

6443.BlogMaxdopPhoto%231

Cuando se ejecuta una consulta en paralelo, sin duda, encontrará
que uno de los hilos (thread) termina antes que el otro y tiene que esperar a otra
hilo para hacer su trabajo. En aplicaciones con transacciones cortas y rápidas, esto
está muy bien. En las aplicaciones con gran cantidad de transacciones, con un montón de
consultas ejecutadas en paralelo (es decir, como es el caso de SharePoint), esto puede conducir a una
reducción en el rendimiento, ya que los threads que tienen que hacer el trabajo real, tienen que
esperar a que otros hilos terminen.

  • No hacer shrink de los datafiles (MDF, NDF, LDF)

Puede ocasionar desfragmentación de indices y pérdida de performance

  • Configuración de la TempDB

Crear la base de datos tempdb en el almacenamiento más rápido disponible (SSD es una gran opción). Pre-asignación de espacio para tus archivos de tempdb estableciendo el tamaño del archivo inicial a un valor más grande para que pueda adaptarse a la carga de trabajo típica en el entorno, se puede ir en una regla de oro que el tamaño debe ser de 25% de la base de datos más grande de contenido.Crea varios archivos de datos para maximizar el ancho de banda del disco y reduce la contención archivo TEMPDB. Hacer cada archivo del mismo tamaño, lo que permite una óptima proporción de llenado rendimiento.

  • No habilitar la opción de “Auto Update Statistics” y “Auto Update Statistics Asyncronously”

auto-create-statistics-on-a-sql-server_thumb

 

4-Ocultar la ribbon para usuarios anónimos

Buscar en la master page el div con el id s4-ribbonrow, y agregar la clase hide-ribbon

<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle hide-ribbon">

Una vez agregado la clase, se deberá agregar el siguiente control en la master page

<SharePoint:SPSecurityTrimmedControl ID="VerRibbon" PermissionString="ManageLists" runat="server">
  <style type="text/css">
    body .hide-ribbon {
      display: none;
    }
  </style>
</SharePoint:SPSecurityTrimmedControl>

También se puede agregar todo el div s4-ribbonrow, pero puede ocasionar problemas con el elemento #s4-workspace y los scrollbars.

5-Cambiar el logo de todos los sites collections y sites de un web application mediante powershell

Get-SPWebApplication http://url_webapplication | get-spsite -Limit All | get-spweb -Limit All | foreach {$_.SiteLogoUrl = "/_layouts/images/custom/logo.gif"; $_.Update()}

Links útiles #54–Sharepoint 2010

1-Workflows custom en Sharepoint 2010

http://www.techbubbles.com/workflowfoundation/creating-a-custom-sequential-workflow-in-sharepoint-2010

http://www.techbubbles.com/microsoft/creating-parallel-workflow-in-sharepoint-2010/

2-Librería para queries en formato CAML

http://camlex.codeplex.com/

3-Windows Powershell for Sharepoint Command Builder

http://www.microsoft.com/resources/TechNet/en-us/Office/media/WindowsPowerShell/WindowsPowerShellCommandBuilder.html

4-Problema con forms authentication en Sharepoint 2010 al mover la base de membership (debido al machine config)

http://blog.bugrapostaci.com/2012/11/24/sharepoint-2010-form-based-authentication-problem-event-id1315-and-event-id8306/

5-Sharepoint Emulators

http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/26/introducing-sharepoint-emulators.aspx

6-Migración de LOTUS a Sharepoint 2010

http://sprider.org/2012/11/29/lotus-notes-to-sharepoint-2010-migration/

miércoles, 14 de noviembre de 2012

Tips Info # 77 Sharepoint 2010

1-Los usuarios no pueden renombrar documentos con permisos de Colaborador sin la opción de borrar – Error de acceso denegado

Cuando un archivo (documento) es renombrado, lo que hace Sharepoint es borrarlo, y lo agrega con otro nombre. Al querer borrarlo, lanza el error de acceso denegado.

En resumen: RENOMBRAR = BORRAR + AGREGAR

2-Cuando los documentos no tienen iconos en las vistas de Sharepoint, algunos archivos se abren cómo sólo lectura.

Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML\DOCICON.xml. Cambia el archivo docicon.xml agregando la siguiente línea <Mapping Key=”pdf” Value=”iconoFile.gif”/> . Después has un iisreset. Recuerda hacer un backup previo del file.

Más información: http://msdn.microsoft.com/en-us/library/ms463701.aspx

3-No se puede examinar una biblioteca de documentos en vista del explorador

\\server\webfolder\folder is not accessible. You might not have permission to use this network resource.
Contact the administrator of this server to find out if you have access permissions.
A device attached to the system is not functioning.

El problema ocurre porque el tamaño de todos los atributos de archivo que devuelve el servidor WebDAV es mucho mayor que lo que se espera. De forma predeterminada, este tamaño es limitado a 1 MB. Este límite es por razones de seguridad.

Para solucionar cambiar la siguiente clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\

Valor: FileAttributesLimitInBytes
Tipo de datos: DWORD
Valor predeterminado: 100000000 decimal (100 MB)
Descripción: Esta subclave del registro determina el tamaño máximo de colectivo de todos los atributos de archivo en una carpeta que está permitido por el redirector WebDAV. Este límite de atributo cubre todas las respuestas PROPFIND y PROPPATCH.

4-Obtener los usuarios de un site collection mediante powershell 

$site = Get-SPSite http://webapplication/sitecollection/
$groups = $site.RootWeb.sitegroups
foreach ($grp in $groups)
{
"Grupo: " + $grp.name;
foreach ($user in $grp.users) {"  Usuario: " + $user.name}
}
$site.Dispose()

5-Agregar porcentaje al panel de refinamiento

image13

Editar el web part

image12

Y agregar lo siguiente (ver sección en amarillo):

<Category
Title="string"
Description="string"
Type="TypeName"
MappedProperty="PropertyName"
MetadataThreshhold="value"
NumberOfFiltersToDisplay="value"
MaxNumberOfFilters="value"
SortBy="Frequency|NumericValue|Name|Custom"
SortDirection="Descending|Ascending"
SortByForMoreFilters="Frequency|NumericValue|Name|Custom"
SortDirectionForMoreFilters="Descending|Ascending"
ShowMoreLink="True|False"
MoreLinkText="string"
LessLinkText="string"
ShowCounts="Percentage">
… </Category>

lunes, 22 de octubre de 2012

Tips/Info #75 Sharepoint 2010

1-Custom errors pages en Sharepoint 2010

Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\1033\

El 1033 hace referencia al idioma de instalación, si tiene más lenguajes packs instalados, deberá agregar cada custom page en cada idioma (14\LAYOUTS\Locale_ID)

Agrega los files correspondientes relacionados a los custom error:

Custom_Error.html

Custom_NotFound.html

Custom_AccessDenied.html

Y ejecuta en una consola de powershell lo siguiente:

$webApp = Get-SPWebApplication http://sharepoint_site
$webApp.FileNotFoundPage = “Custom_NotFound.html” 
$webApp.Update() 
Mediante server object: http://sharepointfordeveloper.blogspot.com.ar/2011/11/sharepoint2010-replace-accessdeniedaspx.html
2-Instalar parches en Sharepoint 2010
Primero actualiza los binarios con los KB, SP1, o cumulative updates, y a continuación ejecuta el psconfig.exe en cada server para actualizar base de datos. Para ello has lo siguiente:

Abre una línea de comando como administrador .Cambie el directorio a C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN
Ejecuta lo siguiente: PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures


3-Restore de un site collection


Con la salida del SP1 de Sharepoint 2010 se puede utilizar el comando   Get-SPDeletedSite (http://technet.microsoft.com/en-us/library/hh286316.aspx)


Al ingresar en la consola de powershell, Get-SPDeleteSite, nos devolverá la lista de site collections eliminados, junto al ID correspondiente del mismo. A continuación se deberá ejecutar lo siguiente:


Get-SPDeletedSite | where{$_.SiteId -eq "[SiteId]"} | Restore-SPDeletedSite


Reemplace [SiteID] con el ID de la colleción de sites.


4-Error: “Cannot connect to the configuration database.”


Algunas cosas para verificar:



  • Se aplicó un Hot fix o SP al SQL Server, y no se reinició el mismo.
  • El servicio de SQL Server no está corriendo.
  • Verifica los firewalls de ambos servers.
  • Verifica que los usuarios de servicios tengan los permisos correspondientes y no se hayan bloqueado las cuentas.
  • La red se cayó entre los dos servers.
  • Se movió el sql server y no se registró el alias correspondiente. Otra posibilidad de mover el sql a otra IP, es que en el registro de windows esté configurado vía IP el conexión string (HKLM > SOFTWARE > Microsoft > Shared Tools > Web Server Extensions > 14.0 > Secure > ConfigDB). Se deberá configurar con el alias.
  • Verificar los host del servidor y dns configurados en el server de wfe.

5-Cambiar el nombre de usuario que aparece en Sharepoint 2010


Ej: Este tip aplica en el siguienet caso: si usted quiere que aparezca “Administrator” en vez de su nombre de dominio.


RemoveDomainName.05


Abre SharePoint 2010 Management Shell y ejecute lo siguiente:


Set-SPUser -Identity '[domain name]\[username]' -DisplayName '[full name]' -Web [url]


Ej: Set-SPUser -Identity 'MIDOMINIO\christianazcon' -DisplayName 'Administrator' -Web http://sharpeoint.intranet.com

lunes, 17 de septiembre de 2012

Tips/Info #70 Sharepoint 2010

1-Reportar el progreso de un timer job

public  override  void  Execute(Guid  contentDbId){
    this.UpdateProgress(<numero entre 0 y 100>);
}

timerjob_progress2

Más info: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spjobdefinition.updateprogress(v=office.12).aspx

2-Objecto flotantes al editar un item quedan fuera de lugar al mover la scrollbar

Ej: los divs con clase .s4-ctx

Agregar lo siguiente en el coreV4.css

* fix scrolling en páginas */

#s4-bodyContainer
{
            position: relative;
}

3-SharePoint 2010 Keyboard Shortcuts

SP2010 soporta shortcuts de teclas, implementandolo con el tag "accesskey".
Ej:

<a href="javascript:;" onclick="javascript:this.href=’#mainContent’;" class="ms-SkiptoMainContent" accesskey="X">Skip to main content</a>
   
Se debe usar de la siguiente manera:
ALT+X para seleccionar el item específico y a continuación presionar ENTER.

Home Link    Alt + 1 -> ENTER
Skip to Main Content    Alt + X -> ENTER
Help    Alt + 6 -> ENTER
Search Box    Alt + S
Site Actions    Alt + / -> ENTER
View All Site Content    Alt + 3 -> ENTER
Shared Documents    Alt + W -> ENTER
Next Web Part    Alt + W
Skip ribbon commands    Alt + Y –> ENTER

Más información: http://keremozen.com/2012/02/07/sharepoint-2010-keyboard-shortcuts/

4-Deshabilitar la actualización y cambio automático de la password

$account = Get-SPManagedAccount -identity dominio\sp_admin
$account.AutomaticChange = $False
$account.Update()
Get-SPManagedAccount | Select-Object UserName, AutomaticChange

5-Algunas de las features en Sharepoint

Scope de una feature

·         Web
·         Site Collection
·         Web Application
·         Farm

Eventos de una feature

·         Installing
·         Uninstalling
·         Activating
·         Deactivating

Elementos de una feature:

·         Menu Commands
·         Toolbar Buttons
·         Web Parts
·         Workflows
·         Event Handlers
·         Page Definitions
·         List Definitions
·         Templates