martes, 17 de abril de 2012

Script para permitir a las bibliotecas abrir los archivos PDFS en SharePoint 2010

Esta opción esta bloqueada en SharePoint 2010 de forma predeterminada y a pesar que habilitemos a nivel de Aplicación Web el navegador de manejo de archivos a permisivo, esto solo funcionará para las bibliotecas del sitio primario de la colección de sitios, pero no para las bibliotecas de otros sub-sitios, ya que SharePoint 2010 tiene a nivel interno de cada biblioteca esta opción definida como estricta y no permisiva.

Al final hay que habilitar cada biblioteca en la colección de sitios la opción “browserfilehandling” como permisiva, para ello necesitamos ejecutar un script a nivel de línea de comando apoyados en powershell.

Un agradecimiento por su contribución a la comunidad de SharePoint a Kim Nguyen en:  http://www.freakingsharepoint.com/2010/08/sp2010-forces-users-to-save-pdfs.html

Lo que hice, fue modificar un poco el script para que funcione para cualquier colección de sitios y para que valide que la lista siempre sea un documento library.

Para ejecutar el script sugiero creen un archivo ps1 como por ejemplo:

ChangePermissiveOptionInLibs.ps1

La sintaxis es la siguiente:

.\ChangePermissiveOptionInLibs.ps1 –siteurl http://yoursitecollectionAddress

Y el script es el siguiente:

# Inicio del Script

param (
     [string]$siteUrl = "$(Read-Host 'Enter the Site Collection URL. [e.g. http://sp2010vm]')"
 
)
 
function main() {
 
# check to ensure Microsoft.SharePoint.PowerShell is loaded
  $snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'}
  if ($snapin -eq $null)
{
   Write-Host "Loading SharePoint Powershell Snapin"
   Add-PSSnapin "Microsoft.SharePoint.Powershell"
  }
 
$site = Get-SPSite($siteUrl)
write-host $siteurl

  foreach ($web in $site.AllWebs)
  { 
       write-host "web:" $web.Title
    foreach ($list in $web.Lists)
    {
        write-host "list:" $list.Title $list.BaseType
        if ($list.BaseType -eq "DocumentLibrary")
        {
 
            write-host "browserfilehandling:" $list.browserfilehandling
            if($list.browserfilehandling -eq "Strict")
            {
            $list.browserfilehandling = "Permissive";
            $list.update();
            write-host $site.url, $list.title, $list.browserfilehandling
            }
        }
    } 
  }


$site.Dispose()
 
}
 
main

# Fin del Script

 

En este artículo vimos como habilitar la opción para permitir el manejo de archivos en el navegador que esta bloqueada de forma predeterminada en SharePoint 2010.  Esto aunque representa un riesgo, es una funcionalidad habitual que los usuarios de SharePoint están acostumbrados a utilizar y que desean este disponible en el portal.

Enable4Fun!,

Juan Manuel Herrera Ocheita

2 comentarios:

Fernando Arturo Gómez Flores dijo...

Nice, muchísimas gracias, andaba buscando solucionar esto desde hace algunas lunas.

¡Saludos!

Fernando Arturo Gómez Flores dijo...

Nice, muchísimas gracias, llevaba intentando resolver este problema hace varias lunas. Algo frustrante, porque migramos de MOSS2007 a SP2010 y los clientes estaban furiosos porque "perdieron" funcionalidad... *sigh*

¡Saludos!