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

martes, 25 de febrero de 2014

Sharepoint backup Avamar troubleshooting

1.       Re-registrar el writer de SharePoint:

stsadm -o unregisterwsswriter

stsadm -o registerwsswriter

Verificar que estén los writters: vssadmin list writers

2.       Comprobar los usuarios utilizados para cada uno de los servicios:

Backup Agent service's "Log on as"  is set to Local System account.

SharePoint Services VSS Writer's "Log on as" is set to Farm Administrator account.

SharePoint Services Administrator service's "Log on as " is set to Farm Administrator account.

SharePoint Services Time service's "Log on as" is set to Farm Administrator account.

SharePoint Services Search service's "Log on as" is set to Search or Farm Administrator account.

3.       Comprobar que el writer de SharePoint 2010 VSS Writer está registrado y verificado en el registro en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Diag, quizas necesitemos anadirlo si no existiera. 

También verifica que las cuentas de Farm y las de backup tengan permisos de full control sobre ese registro

4.       Ejecutar un browsing por línea de consola utilizando los comandos de Avamar y los de Sharepoint:

avmossvss.cmd --browse --username=<farmadminaccount> --password= --debugvss –debug

STSADM.EXE -o backup -showtree

5.       Forzar el flag in avmossvss.cmd en el backup y browsing:

--writerid= {da452614-4858-5e53-a512-38aab25c61ad} 

6.       Chequear que exite un alias pipe y TCP para el SQL server con cliconfg, sino existen crearlos.

7.       Reinstalar tanto backend como front end plugins de avamar.

 

Para mayor información:

http://technet.microsoft.com/en-us/library/cc734545(v=ws.10).aspx

http://clientedigital.com.br/wp-content/uploads/2013/08/Avamar-6.1-for-SharePoint-VSS-User-Guide.pdf

http://china.emc.com/collateral/software/white-papers/h8936-backup-recovery-ms-exchange-shrpoint-2010-wp.pdf

http://www.emc.com/collateral/software/white-papers/h4602-sharepoint-backup-wp.pdf

sábado, 20 de julio de 2013

Migrar Managed Metadata entre ambientes (Migrate Managed Metadata to diferrent enviroments) Sharepoint 2013

Antes de iniciar el proceso de migrado, repasaremos algunos conceptos.

La administración de los managed metadata se realiza con Term Store Management Tool, la cual es accesible desde el central Administration o desde el Site Collection.

Un término (Term) es una palabra o frase que puede asociarse a un elemento de SharePoint Server 2013. Un conjunto de términos (Term Set) es una colección de términos relacionados. Se puede especificar que una columna contenga un término de un determinado conjunto de términos. Los metadatos administrados (Managed Metadata) son un modo de indicar que los términos y los conjuntos de términos se pueden crear y administrar independientemente de las propias columnas.

Los conjuntos de términos locales (Local Term Sets) se crean en el contexto de una colección de sitios. Por ejemplo, si se agrega una columna a una lista en una biblioteca de documentos y se crea un nuevo conjunto de términos para enlazar la columna, el nuevo conjunto de términos es local para la colección de sitios que contiene la biblioteca de documentos.

Los conjuntos de términos globales (Global Term Set) se crean fuera del contexto de una colección de sitios. Por ejemplo, el administrador del almacén de términos puede crear un grupo de conjunto de términos denominado "Recursos humanos" y designar a una persona para que lo administre. El administrador del grupo podría crear conjuntos de términos relacionados con recursos humanos, como cargos y categorías salariales en el grupo de conjunto de términos Recursos humanos.

image

Los usuarios pueden ver solo los conjuntos de términos globales y los conjuntos de términos locales de la colección de sitios del usuario.

Groups

Los grupos representan límites en el governance de la taxonomía. Múltiples grupos pueden ser creados dentro de un Managed Metadata Service, cada grupo puede tener múltiples Terms Sets.

image

 

Term Sets

Uno o más Term Sets (hasta 1,000) son definidos dentro de un Group. Term Sets pueden ser creados manualmente o importados a través de la interface . Ej: Company

image

 

Terms

Palabras individuales o frases son agregadas a un Term Set. Un máximo de 30,000 términos pueden ser agregados a un simple Term Set.

image

A continuación explicaré los pasos para migrar la metadata de un ambiente (DEV) a otro (PRD).

El servicio de Managed Metadata se llama “Managed Metadata Service”

image

Cuando se migra un site (site collection) de un ambiente a otro, la managed metadata no es migrada, requiere realizar algunos pasos para que quede consistente la migración.

Hay dos posibilidades para migrar un site collection entre ambientes Export (http://technet.microsoft.com/en-us/library/ee428301.aspx) o Backup (http://technet.microsoft.com/en-us/library/ee748617.aspx).

La operación mediante el Export/Import genera un nuevo GUID para cada objeto en el ambiente de PRD, en cambio Backup/Restore preserva los GUID.

La metadata puede ser exportada (en DEV) mediante powershell o vía UI, pero cuando se importa en el nuevo ambiente (PRD) Sharepoint genera nuevos GUID´s para los términos importados, y por lo cual queda inconsistente el ambiente (las columnas de metadata apuntan a un GUID que no existe).

Para mantener la consistencia haremos uso de dos comandos: Export-SPMetadataWebServicePartitionData, Import-SPMetadataWebServicePartitionData

1- Crear un Shared en el servidor de SQL Server de Sharepoint (eso se debe a que Sharepoint trata de importar los archivos .bak al servidor de SQL Server para poder importar los Term Set). A continuación exportar la partición de metadata. Ejecutar este script en el servidor del ambiente de DEV

Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue 
$proxyName = "Managed Metadata Service Proxy"
$serviceName = "Managed Metadata Service"
$filePath = "\\NombreServerSQLServer\TermStore\terms.bak"
$svc = Get-SPServiceApplication | ?{$_.TypeName -eq "Managed Metadata Service" -and $_.DisplayName -eq $serviceName}
Export
-SPMetadataWebServicePartitionData $svc.Id -ServiceProxy $proxyName -Path $filePath

2- Importar el archivo .bak en el servidor de PRD. Ejecuta este script en el servidor de PRD. Supongo que tienen el mismo nombre el servicio de Managed Metadata.


Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue 
$proxyName = "Managed Metadata Service Proxy"
$serviceName = "Managed Metadata Service"
$filePath = "\\NombreServerSQLServer\TermStore\terms.bak"
$svc = Get-SPServiceApplication | ?{$_.TypeName -eq "Managed Metadata Service" -and $_.DisplayName -eq $serviceName}
Import
-SPMetadataWebServicePartitionData $svc.Id -ServiceProxy $proxyName -Path $filePath -OverwriteExisting

En el caso que se haya utilizado Backup/Restore debería haber quedado correctamente configurado la managed metadata, ya que se mantuvo el GUID del sitio, y los GUID de la metadata.


En el caso que se haya utilizado Export/Import, tendrás que realizar un par de pasos más para que los ambientes queden consistentes.


Supongo que el sitio en DEV se llamaba http://DEVserver/sites/sitecollection, y en PRD se llama http://PRDserver/sites/sitecollection.


Para verificar que se hay importado correctamente la partición de metadata, con sus grupos asociados puedo usar el siguiente comando.



Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue 
$siteURL = "http://prdserver/sites/sitecollection"
$mmsServiceName = "Managed Metadata Service Proxy"
$taxonomySite = Get-SPSite $siteURL
$taxSession = Get-SPTaxonomySession -site $taxonomySite
$termStore = $taxSession.TermStores[$mmsServiceName]
$AllGroups = $taxSession.DefaultSiteCollectionTermStore.Groups
$AllGroups
$siteTermGroup = $taxSession.DefaultSiteCollectionTermStore.Groups | where-object {$_.Id -eq 'd0e7f5c9-3713-4fc5-9245-04b55a452147'}
$siteTermGroup


Este comando nos retornará una lista de Grupos que se habían creado en DEV y los que se crearon en PRD (tanto local terms set como global terms set).


Ej:


image


Lo que tenés que hacer a continuación es buscar el grupo que importaste de DEV, y revisar la propiedad SiteCollectionAccessIds, la misma indica los sites collection que tienen acceso al grupo.



Defino lo siguiente:


IDSiteCollectionErroneo: supongo que el ID que está en la propiedad no es el ID del site Collection de PRD: http://PRDserver/sites/sitecollection


IDGrupo: es el ID del grupo. En la imagen anterior es “af334650-….”


$NombreGrupo: es el nombre del grupo. IMPORTANTE: si no lo definis correctamente, ej: Collección de sitios – PRDserver-sites-sitecollection no lo verás como local term set. Suele definirse de la siguiente manera (en castellano, en inglés varía): webapplicationURL-managedpath-sitecollection. Mi recomendación es que crees un local term set temporal (mediante una nueva columna de metadata), ejecute de nuevo el script donde retorna los grupos de la partición, y registres el nombre del grupo. A continuación borra el local term group (tendrás conflictos sino con la propiedad IsSiteCollectionGroup).


A continuación ejecuto el siguiente script con los datos previamente definidos, el cual mapea el grupo con el site collection mediante la propiedad AddSiteCollectionAccess


Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue 
$siteURL = "http://PRDserver/sites/sitecollection"
$mmsServiceName = "Managed Metadata Service Proxy"
$taxonomySite = Get-SPSite $siteURL
$taxSession = Get-SPTaxonomySession -site $taxonomySite
$termStore = $taxSession.TermStores[$mmsServiceName]
$AllGroups = $taxSession.DefaultSiteCollectionTermStore.Groups
$AllGroups
$IDGrupo = 'es el ID del grupo que quiero attachar al site collectio de PRD como local term set'
$siteTermGroup = $taxSession.DefaultSiteCollectionTermStore.Groups | where-object {$_.Id -eq $IDGrupo}
$siteTermGroup
$siteTermGroup.AddSiteCollectionAccess($taxonomySite.Id)
$NombreGrupo = 'nombre del grupo DEFINIDO POR REGLAS DE SHAREPOINT, VER la sección de suposiciones';
$siteTermGroup.Name = $NombreGrupo
$IDSiteCollectionErroneo = 'ID erroneo que aparece en la propiedad SiteCollectionAccessIds'
$siteTermGroup.DeleteSiteCollectionAccess([System.Guid]($IDSiteCollectionErroneo))
$termStore.CommitAll();


Recuerda reemplazar las variables $IDGrupo, $NombreGrupo, $SiteURL


Una vez ejecutado este script ya podrás ver el Local term set que tenías en DEV, ahora en PRD, sin haber perdidos los GUID´s de los term set, y con una ambiente consistente.

sábado, 5 de enero de 2013

Links útiles #56–Sharepoint 2010

1-Back & Restore con campos de metadata: problemas al realizar el restore

http://sadomovalex.blogspot.com.ar/2012/12/problem-with-broken-managed-metadata.html

2-IRM y Sharepoint (Active Directory Rights Management Services)

http://programming4.us/enterprise/3556.aspx

http://lordakshaya.wordpress.com/2011/11/02/sharepoint-foundation-2010-and-rights-management/

3-Autenticación vía facebook en Sharepoint 2010

http://ovaismehboob.wordpress.com/2011/09/07/configuring-facebook-authentication-in-sharepoint-2010/

4-Phonetic/Nickname Search en Sharepoint 2010

http://chakkaradeep.com/index.php/configuring-phoneticnickname-search-in-sharepoint-2010

5-Content Deployment en Sharepoint 2010

http://www.sharepointboost.com/blog/using-content-deployment-to-copy-one-site-collection-to-another-in-sharepoint-2010/

http://www.benjaminathawes.com/blog/Lists/Posts/Post.aspx?ID=7

http://www.codeproject.com/Articles/275792/How-to-do-SharePoint-2010-Content-Deployment

http://blog.beckybertram.com/Lists/Posts/Post.aspx?ID=83

http://melick-rajee.blogspot.com.ar/2011/10/how-to-do-sharepoint-2010-content.html

http://sharepointdrive.blogspot.com.ar/2012/07/full-and-incremental-content-deployment.html

miércoles, 8 de agosto de 2012

Tips / Info #56 Sharepoint 2010

1-Cambiar el display de un username que no cambio después del cambio en el active directory

Set-SPUser -Identity "christianazcon\cazcon" –DisplayName "Christian Azcon" -Email "mail@mail.com" -Web http://sharepointsite

2-Query Component not responding

  • Revisar si el servicio de seach osearchv4 esté corriendo y la cuenta de servicio no esté bloqueada
  • Revisar si tiene suficiente espacio donde se encuentra el indice. Es decir en los wfe (\Projects\Portal_Content\indexer\)
  • Verifique que el grupo WSS_WPG tenga permisos de ull control sobre esa carpeta
  • Deshabilitar el loopback check
  • Verificar que la opcion “Client for Microsoft Networks” en File and Printer Sharing esté habilitada
  • Reinicie el search en todos los servidores: net stop osearch14, net start osearch14

    Reinicie el query component: http://sharepointreporter.wordpress.com/2010/11/02/how-to-restart-a-query-component-in-sharepoint-2010/

    Si todo esto no funciona, resetee el indice

    #Obtengo el search service application
    $sa = Get-SPEnterpriseSearchServiceApplication

    #reseteo el indice
    #Deshabilito alertas $true/$false

    try
    {
        Write-Host "Reseteando indice..por favor espere"
        $sa.Reset($false, $false)
        Write-Host "Indice reseteado satisfactoriamente" -ForegroundColor Blue
    }
    catch
    {
        Write-Host "Hubo un problema al resetear el indice:" $_ -ForegroundColor Red
    }

    Y a continuación haga un iisreset y genere un full craw. Si sigue sin funcionar, cree un nuevo query component.http://technet.microsoft.com/en-us/library/ee513123.aspx

    3-Diferencia entre STSADM Export/Import and Backup/Restore operations

    stsadm –o backup/restore

    Permite hacer backup de site collection o web application. El backup es cómo un dump de SQL de la base de contenido.

    Backup/Restore preserva el GUID de cada objeto excepto el GUID del Site: cuando haces el restore del backup, SharePoint genera un nuevo GUID para el site collection.

    La tabla Sites en la base de datos de configuración usa el SiteID como key primario.

    Pemite full y diferencial backup. Soporta path UNC. Permite hacer backup de la historia mediante el parámetro backuphistory-

    Esto permite el restore en la misma granja del que se hizo backup o en otra granja, pero siempre se debe hacer el restore en una content database diferente ya que el GUID de los otros objetos permanecen sin cambio.

    stsadm –o export/import

    Es una operación estandar que permite hacer backups de un sub site, site collection, un web application o una lista. Genera un nuevo GUID para cada objeto - sites, sub sites, lists y items. Usa Object Model para hacer las operaciones.-

    Otra diferencia es que puedes hacer un restore en un site existente; la conducta con data existente es definida con el parámetro “update versions” en la operación import.

    No preserva instancias de workflows instances, associations, history y tasks. Cada workflow association debe recrearse y no hay manera de hacer restore de instancias en ejecución del site original.

    No mantiene las versiones de archivos. Sólo toma la última disponible.

    Si el(los) sitio(s) a exportar son mayores de 25 MB, utilice el parámetro –cabsize 1024 o un valor apropiado.

    La operación es buena para hacer merges de contenido de sites. No se olvide de usar el parámetro “includeusersecurity” en las dos operaciones de export/import si desea preservar la información relativa a permisos y otras propiedades tales como autores de documentos.

    4-Limitaciones de listas externas BCS

    • No RSS feed para listas externas
    • No es posible usar attachments
    • No permite lookups (es decir crear una columna de tipo External Data Column), ni crear columnas nuevas
    • Sin la feature de rating
    • No permite exportar a excel, crear diagrama visio, abrir en excel, abrir en project
    • Sin la feature de datasheet ni inline editing
    • Sin historial de versión
    • No se permite consumir la lista via REST (listdata)
    • No permite configurar permisos a nivel de item
    • No puede crear information managment policies
    • Workflows no puede ser configurados con external list
    • No puede configurar alertas con external list
    • No puede usar la herramienta spmetal.exe para LINQ to Sharepoint
    • No puede escribir a BLOBS, se deberá escribir su propio código
    • Sin soporte de Navegación de metadata

    5-Enumerar todos los web parts instalados

    Stsadm.exe –o enumallwebs  -includewebparts  > webparts.txt

    sábado, 7 de julio de 2012

    Tips/Info #44 Sharepoint

    1-Resetear permisos de un site collection mediante powershell

    # URL del site collection
    $URL = "your_site_collection"
     
    # Cargo la consola de SharePoint PowerShell
    Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
     
    # Obtengo el site collection
    $siteCollection = Get-SPSite $URL
     
    # Enumero los site collection y reseteo permisos para todos los subsites y listas
    ForEach ($web in $siteCollection.AllWebs) {
        If ($web.Url -ne $URL) {
            $ws = Get-SPWeb $web.Url      
            $ws.ResetRoleInheritance()
            $ws.Update()
            $ws.Dispose()
        }
        # reseteo las listas del site
        $listas = $web.Lists
        ForEach ($list in $listas) {       
            $list.ResetRoleInheritance()
            $list.Update()
        }
    }

    2-No se abre los documentos al hacer click sobre los iconos

    El origen del problema surge del xslt que renderiza Sharepoint.

    1) Ir a donde se definen los XSLT, ubicada normalmente en C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\template\layouts\XSL

    2) Hacemos un backup del fldtypes_docicon.xsl

    3) Editamos el archivo fldtypes_docicon.xsl con notepad y substituimos el código XML por el que figura en este link: http://support.microsoft.com/default.aspx?scid=kb;en-US;2457975

    4) Forzamos un IISRESET  de nuestro servidor

    3-Backup&Restore de Listas en Sharepoint 2010 con powershell

    Export-SPWeb "http://www.sharepoint.com/" -itemurl "Lists/test" -path "c:\Temp\backup.cmp"
    Import-SPWeb "http://www.sharepoint.com/" -Path "c:\Temp\backup.cmp"

    4-Teasuros (Thesaurus)

    Se ubican en la siguiente ubicación: %ProgramFiles%Microsoft Office Servers14.0DataOffice ServerApplicationsGUID-query-0Config

    Ej:

    <XML ID="Microsoft Search Thesaurus">
    <thesaurus xmlns="x-schema:tsSchema.xml">
    <diacritics_sensitive>0</diacritics_sensitive>
    <expansion>
    <sub>Internet Explorer</sub>
    <sub>IE</sub>
    <sub>IE8</sub>
    </expansion>
    <replacement>
    <pat>NT5</pat>
    <pat>W2K</pat>
    <sub>Windows 2000</sub>
    </replacement>
    </thesaurus>
    </XML>



    Más info: http://technet.microsoft.com/en-us/library/dd361734.aspx


    5-Error:An attempt was made to load an assembly with an incorrect format xxxxx.dll


    Tienes que ir a Project Properties –> Build –> y cambiar la opción Generate serialization assembly a OFF.


    generate serialization assembly vs 2010

    sábado, 24 de marzo de 2012

    Links útiles #12 – Sharepoint 2010

    1-Search multilenguaje Sharepoint 2010

    http://blogs.msdn.com/b/opal/archive/2010/06/28/multilingual-search-in-sharepoint-server-2010-and-fast-search-server-2010.aspx

    2-Crear un slider de contenido con Sharepoint y Jquery

    https://www.nothingbutsharepoint.com/sites/eusp/pages/creating-your-own-content-slider-for-sharepoint.aspx

    3-Alias de SQL Server 2008 R2 con Sharepoint 2010

    http://www.sharepointassist.com/2010/02/02/configure-a-sql-server-alias-for-sharepoint-sql-server-2008/

    4-Filtrar una lista de Sharepoint con jquery y un combo

    http://request4it.wordpress.com/2012/03/13/filter-a-sharepoint-list-with-jquery/

    5-Puertos necesarios para un farm de Sharepoint 2010

    http://geeks.ms/blogs/ciin/archive/2012/03/21/sharepoint-2010-puertos-necesarios-para-un-despliegue-en-modo-granja.aspx

    6-Script para habilitar todas las features de IIS para usar Sharepoint 2010

    http://otak-otak-it.blogspot.com.ar/2012/03/automatic-iis-configuration-script-for.html

    7-Eligiendo la tecnología de reportes correcta

    http://devinknightsql.wordpress.com/2012/03/01/choosing-the-right-microsoft-reporting-technology-part-1-report-services/

    http://devinknightsql.wordpress.com/2012/03/06/choosing-the-right-microsoft-reporting-technology-part-2-excel/

    http://devinknightsql.wordpress.com/2012/03/15/choosing-the-right-microsoft-reporting-technology-part-3-powerpivot/

    http://devinknightsql.wordpress.com/2012/03/21/choosing-the-right-microsoft-reporting-technology-part-4-performancepoint/

    8-Reglas: Analizador/mantenimiento de base de datos de Sharepoint 2010

    http://www.mssqltips.com/sqlservertip/2648/sharepoint-2010-databases-maintenance-health-analyzer-rules/

    9-Configurando el Panel de refinamiento Sharepoint 2010

    http://geeks.ms/blogs/marchena/archive/2012/03/22/configuraci-243-n-del-panel-de-refinamiento-en-los-resultados-de-b-250-squeda.aspx

    10-Configurar el servicio de user profile

    http://www.anhero.org/how-to-configuration-the-user-profile-service-in-sharepoint-2010/

    11- Extendiendo la parte social de Sharepoint

    http://www.sharepointnutsandbolts.com/2012/03/extending-sharepoint-2010-social.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ChrisObrien+%28Chris+O%27Brien+%5BMVP+SharePoint%5D%29

    12-Crear una columna autoincremental con formato definido

    http://dlairman.wordpress.com/2011/01/10/add-a-unique-auto-incrementing-column-to-a-sharepoint-list/

    13-Desarrollando un BCS de Sharepoint 2010 con Visual Studio 2010

    http://www.sharepointbriefing.com/spcode/develop-a-business-data-connectivity-model-for-sps-2010-using-vs-2010.html

    14-Almacenar datos de configuración para los jobs

    http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/23/storing-configuration-settings-for-timer-jobs.aspx

    15-Acceder a Sharepoint 2010 vía tecnologías de cliente.

    http://platinumdogs.wordpress.com/2012/03/20/sharepoint-displaying-list-data-with-client-side-technology-spservices-jquery-jsrender/

    16-Cómo saber a que proceso atachar el debbuger en Visual Studio 2010 y Sharepoint 2010

    http://ybbest.wordpress.com/2012/03/22/how-to-find-which-w3wp-exe-to-attach-when-debugging-your-sharepiont2010-project/

    17-Servicios disponibles en las dos versiones de Sharepoint 2010 (Standart & Enterprise)

    http://www.etechplanet.com/blog/service-applications-available-out-of-the-box-with-sharepoint-2010-products.aspx

    18-Importar las managed property y crawled property

    http://gallery.technet.microsoft.com/Import-Search-CrawledManage-1fa3d94b

    19-Optimizando la performance de reporting services

    http://sqlcat.com/sqlcat/b/technicalnotes/archive/2009/01/14/reporting-services-performance-optimizations.aspx

    20-Mejores prácticas para backups & restore de Sharepoint 2010

    http://smallcitydesign.com/sharepoint-2010-backup-and-recovery-best-practices/

    sábado, 17 de marzo de 2012

    Tips #8–Sharepoint 2010

    1-El menú Site actions no aparece!!!

    Agregar la url del site como trusted site

    Ejecutar el IE como administrador.

    2-Script para mostrat todos los administradores de site collection

       1:  $sitioRoot = New-Object Microsoft.SharePoint.SPSite($sitioUrl)
       2:  $spWebApp = $sitioRoot.WebApplication
       3:   
       4:  foreach($site in $spWebApp.Sites)
       5:  {
       6:      foreach($siteAdmin in $site.RootWeb.SiteAdministrators)
       7:      {
       8:          Write-Host "$($siteAdmin.ParentWeb.Url) - $($siteAdmin.DisplayName)"
       9:      }
      10:      $site.Dispose()
      11:  }
      12:  $sitioRoot.Dispose()



    3-Recorrer todos los site collections y subsitios



       1:  function RecorrerSite() {
       2:      param([Microsoft.SharePoint.SPWeb]$SiteIdentity)
       3:   
       4:      Write-Output "Sitio: $($SiteIdentity.Url)"
       5:      
       6:      if($SiteIdentity.Webs.Count -gt 0)
       7:      {
       8:          foreach($subSitio in $SiteIdentity.Webs)
       9:          {
      10:              RecorrerSite -SiteIdentity $subSitio
      11:          }
      12:      }
      13:  }
      14:   
      15:  $servicioWebApplication = (Get-SPFarm).services |
      16:   ? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
      17:   
      18:  foreach($webApp in $servicioWebApplication.WebApplications)
      19:  {
      20:      Write-Output "Web Application: $($webApp.name)"
      21:      foreach($siteColl in $webApp.Sites)
      22:      {
      23:          Write-Output "Colleccion de sitio: $($siteColl.Url)"
      24:          RecorrerSite -SiteIdentity $($siteColl.RootWeb)
      25:      }
      26:  } 



    4-Clase ContentIterator para procesar una lista de gran tamaño



    SharePoint Server proporciona un API,ContentIterator, para ayudar con el acceso a más de 5.000 elementos en una lista larga y no chocar con el throttling de la lista (SPQueryThrottleException). ContentIterator permite segmentar la consulta para el procesamiento de manera única. Considere el uso de esta capacidad si es necesario para procesar un gran número de elementos que pueden exceder el throttling de una lista.


     


       1:  static int exceptions = 0;
       2:  static int items = 0;
       3:   
       4:  protected void OnTestContentIterator(object sender, EventArgs args)
       5:  {
       6:      items = 0;
       7:      exceptions = 0;
       8:      string query1 = @"<View>
       9:          <Query>
      10:              <Where>
      11:                  <And>
      12:                      <BeginsWith>
      13:                          <FieldRef Name='SKU' />
      14:                          <Value Type='Text'>S</Value>
      15:                      </BeginsWith>
      16:                  </And>
      17:              </Where>
      18:          </Query>
      19:      </View>";
      20:   
      21:      ContentIterator iterator = new ContentIterator();
      22:      SPQuery listQuery = new SPQuery();
      23:      listQuery.Query = query1;
      24:      SPList list = SPContext.Current.Web.Lists["Parts"];
      25:      iterator.ProcessListItems(list,
      26:          listQuery,
      27:          ProcessItem,
      28:          ProcessError
      29:      );
      30:  }
      31:   
      32:  public    bool ProcessError(SPListItem item, Exception e) 
      33:  { 
      34:      // process the error
      35:      exceptions++; 
      36:      return true; 
      37:  }
      38:  public void ProcessItem(SPListItem item)
      39:  {
      40:      items++;
      41:      //process the item.
      42:  }



    5-Constantes de los estados de workflows




    • Status: Value
    • Not Started: 0
    • Failed on Start: 1
    • In Progress: 2
    • Error Occurred: 3
    • Canceled: 4
    • Completed: 5
    • Failed on Start(Retrying): 6
    • Error Occurred (Retrying): 7
    • Canceled: 15
    • Approved: 16
    • Rejected: 17

    6-The SharePoint Health Analyzer detected a condition requiring your attention. Drivers are at risk of running out of free space



    Para evitar este error, deberás tener 5 veces más de RAM que espacio libre en el server.



    7-Falta “Destination Folder” cuando se sube un documento



    Se debe activar la feature Metadata Navigation and Filtering


    8-Durante el backup de un site se pone el site cómo sólo lectura, en el caso que haya una interrupción (ej:reiniciar el server), se dejará como sólo lectura. Para ello será necesario ejecutar lo siguiente:



    Set-SPSite -Identity http://mysite -LockState "Unlock"


    9-Cambiar la opción del indicador “New” en los documentos recientemente subidos


    El default para que aparezca el valor “Nuevo” es de dos días.
    Verificar la configuración actual:


    stsadm.exe -o getproperty -pn days-to-show-new-icon -url http://misitio


    Cambiar a 4 días


    stsadm.exe -o setproperty -pn days-to-show-new-icon -pv 4 -url http://misitio
    Si lo seteo a 0 (cero), directamente no aparece.


    10-Enviar un mail con powershell



       1:   function enviarMail{
       2:   
       3:       Write-Host "Enviando Email"
       4:   
       5:       #nombre del servidor SMTP
       6:       $smtpServer = "smtp.xxxx.com"
       7:   
       8:       #Creando un objeto mail
       9:       $msg = new-object Net.Mail.MailMessage
      10:   
      11:       #Creando un objeto SMTP server
      12:       $smtp = new-object Net.Mail.SmtpClient($smtpServer)
      13:   
      14:       #Email formato
      15:       $msg.From = "fromID@mail.com"
      16:       $msg.ReplyTo = "replyto@mail.com"
      17:       $msg.To.Add("toID@mail.com")
      18:       $msg.subject = "Mi asunto"
      19:       $msg.body = "Es es el cuerpo del mail."
      20:   
      21:       #Enviando el mail
      22:       $smtp.Send($msg)
      23:    
      24:  }
      25:   
      26:  #Llamo a la funcion
      27:  enviarMail