quinta-feira, 27 de fevereiro de 2014

Excluir uma Web Part de uma página via comandos PowerShell

Recentemente tive que tratar o erro abaixo:

[MissingWebPart] WebPart class [61923fcb-1870-2455-3253-8091c037c447] (class [SPClaseXYZ.View.VWP_ClaseXYZ.VWP_ClaseXYZ] from assembly [SPClaseXYZ, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e4181b56a024ab76]) is referenced [5] times in the database [WSS_Content], but is not installed on the current farm. Please install any feature/solution which contains this web part. One or more web parts are referenced in the database [WSS_Content], but are not installed on the current farm. Please install any feature or solution which contains these web parts

Esta mensagem aparece dentro do erro "Missing server side dependencies." no Health Analyzer.

O ideal é instalar corretamente a "feature/solution" que contém a web part, como o próprio erro recomenda. Se isso não for possível ou não desejado. Os passos apresentados abaixo podem ajudar.

No link abaixo há alguns scripts que você pode usar para descobrir em quais sites a referência existe. Nesse mesmo link há uma forma manual via web de excluí-lo:
http://get-spscripts.com/2011/08/diagnose-missingwebpart-and.html

Para acessar a página de manutenção da Web part basta adicionar "?contents=1" como no exemplo abaixo:
Página: http://shp2010/test-site/SitePages/Home.aspx
Página de Manutenção: http://shp2010/teste-danilo/SitePages/Home.aspx?contents=1

Abaixo eu construí um script que faz o mesmo procedimento de exclusão apresentado no artigo do link acima, porém através de script:

#Nome da Web part
$wpName = 'Shared Documents'
#URL do sub-site em questão
$spweb = get-spweb http://win-nimd9f42gkd/sub-site-de-teste
#URL completa da página onde está a Web Part
$WebPageUrl = 'http://win-nimd9f42gkd/sub-site-de-teste/SitePages/Home.aspx'
$spWpManager = $spweb.GetLimitedWebPartManager($WebPageUrl, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared);

#Obtem o ID da web part a partir do nome, esse ID varia a cada página, mesmo que a Web Part seja a mesma
foreach($spwebpart in $spWpManager.Webparts)
{
    if($spwebpart.Title -eq $wpName)
    {
        $webpartID = $spwebpart.ID
    }
}

#Efetua a exclusão a partir do ID coletado acima
$spWpManager.DeleteWebPart($spWpManager.Webparts[$webpartID])

quarta-feira, 26 de fevereiro de 2014

Lançado Service Pack 1 para o SharePoint 2013

O SP1 do Office 2013 e produtos do SharePoint 2013 finalmente foi lançado.
Detalhes sobre as correções e melhorias que ele traz podem ser encontradas na planilha no link abaixo

A tabela abaixo retirada do blog oficial é uma referência rápida para cada produto:
UpdateKB Article
Office 2013 SP1. Covers these applications:
  • Access
  • Excel
  • InfoPath
  • Lync
  • OneNote
  • Outlook
  • PowerPoint
  • Publisher
  • Word
2817430
Project 2013 SP12817433
Visio 2013 SP12817443
SharePoint Designer 2013 SP12817441
SharePoint Server 2013 SP12817429
Project Server 2013 SP12817434
Office Web Apps Server 2013 SP12817431
All other desktop products and language packs2850036 
All other server products and language packs2850035

Com o lançamento dele finalmente teremos o SharePoint 2013 suportado no Windows Server 2012 R2. Abaixo alguns links que anunciavam isso:

Have fun! ;)

segunda-feira, 24 de fevereiro de 2014

Dividir arquivos ULS Log em partes menores

Eventualmente precisamos analisar arquivos ULS logs gigantescos, de até mais de 1GB.
Esse tipo de arquivo faz o ULSViewer travar com frequência o que muitas vez nos leva a usar Excel por exemplo. Mas ai se passa de 1.048.576 linhas o Excel não carrega o arquivo todo inteiro. E ai fazemos o que?
Para contornar esse problema você pode utilizar um script para PowerShell que divide o arquivo pra você.

Você pode encontrar script em:
http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Split-large-log-6f2c4da0

Ele irá te mostrar as seguintes mensagens:
What is the full path and name of the log file to split? (e.g. D:\mylogfiles\mylog.txt)" - Para você colocar o arquivo de origem
What is the path where you want to extract the content? (e.g. d:\yourpath\)" - Para você colocar a pasta de destino
Please wait while the line count is calculated. This may take a while. No really, it could take a long time." - Então ele vai demorar um bom tempo pra contar quantas linhas o arquivo possui
Your current file size is $sourcelinecount lines long" - Ele diz o total de linhas
How many lines will be in each new split file?" - E você finalmente especifica quantas linhas deseja ter em cada sub-arquivo

sexta-feira, 21 de fevereiro de 2014

Backup e Restore no SharePoint 2010 / 2013

O procedimento de backup e restauração do SharePoint em geral não é amplamente conhecido pelos profissionais que administram farms do produto. Ainda complica um pouco mais quando procuram informação e percebem que não está bem unificada, então se faz necessário pesquisar em vários artigos para encontrar o procedimento ou informação que deseja. Afim de facilitar procurei condensar tudo que você precisa saber e onde encontrar detalhes no que diz respeito ao backup/restore do SharePoint 2010. No entanto quase todas as informações também se aplicam ao SharePoint 2013.

Nesse artigo:
1. Documentação oficial
2. Restaurar um site collection em particular a partir de um backup Completo usando a central de administração
3. Como funciona o backup granular e exportação de site/listas
4. Comandos genéricos de backup completo, granular para site collection, para sites e exportação de listas
5. Restaurações de itens e arquivos individuais são possíveis através das Lixeiras do SharePoint
6. Usando o System Center Data Protection Manager para fazer backup do SharePoint

1.       Documentação oficial:
Documentação oficial que fornece informações de como proceder na realização de backup e restore para cada das partes que constitui a Farm do SharePoint Server 2010:

Artigos escritos engenheiro da Microsoft Russ Maxwell explica de forma bastante completa inclusive fornecendo exemplos práticos:

2.       Restaurar um site collection em particular a partir de um backup Completo usando a central de administração:
Central Administration > Backup and Restore > Restore from a backup > “selecionar o backup” e clicar em Next > Selecionar apenas a base de dados relacionada ao site collection
Também é possível através da restauração a partir de uma base não anexada ao banco de dados:

Para identificar qual base de dados pertence ao site collection em questão você pode acessar:
Central Administration > Application Management > View all site collections > “Selecionar o site collection” > “Na tabela a direita você verá o nome da base no campo “Database Name”












3.       Como funciona o backup granular e exportação de site/listas:
Documentação oficial: http://technet.microsoft.com/pt-br/library/ee663477(v=office.14).aspx (dentro dele procure (CTRL+F) por “Arquitetura de exportação e backup granular”

4.       Comandos genéricos de backup completo, granular para site collection, para sites e exportação de listas
Estes comandos podem ser utilizados para automatizar o backup através das tarefas agendadas do Windows.
Os comandos estão respectivamente listados abaixo, para maior referencia consultar http://technet.microsoft.com/en-us/library/ee428316(v=office.14).aspx :

Backup:
Completo: Backup-SPFarm -Directory <BackupFolder> -BackupMethod {Full | Differential} [-Verbose]
Site Collection: Backup-SPSite -Identity <Site collection name> -Path <backup file> [-Force] [-NoSiteLock] [-UseSqlSnapshot] [-Verbose]
Exportar Site, biblioteca ou Lista: Export-SPWeb -Identity <Site URL> -Path <Path and file name> [-ItemUrl <URL of site, list, or library>] [-IncludeUserSecurity]

Restore:
Completo: Restore-SPFarm -Directory <BackupFolder> -RestoreMethod Overwrite [-BackupId <GUID>]
Site Collection: Restore-SPSite -Identity <Site collection URL> -Path <Backup file> [-DatabaseServer <Database server name>] [-DatabaseName <Content database name>] [-HostHeader <Host header>] [-Force] [-GradualDelete] [-Verbose]
Exportar Site, Biblioteca ou Lista: Import-SPWeb -Identity <Site URL> -Path <Export file name> [-Force] [-NoFileCompression] [-Verbose]

Dica: No Power Shell você pode usar “Get-help <comando>” para obter as variações possíveis. Exemplo “Get-Help Export-SPWeb”, “Get-Help Export-SPWeb -Examples” pode ser bastante útil também.
Obs.: Não é possível restaurar Sub-sites, Bibliotecas e listas através da Central de Administração.

5.       Restaurações de items e arquivos individuais são possíveis através das Lixeiras do SharePoint


Nos links abaixo há mais detalhes sobre esse recurso:
-Configure Recycle Bin settings (SharePoint Foundation 2010) – Não há versão em português
-Exibir, restaurar ou excluir itens na Lixeira de um site do SharePoint
http://office.microsoft.com/pt-br/sharepoint-server-help/view-restore-or-delete-items-in-the-recycle-bin-of-a-site-HA010379003.aspx

Caso o item não esteja mais na lixeira, apenas o DPM tem a possibilidade de fazer backup e restaurar itens individuais.

6.         Usando o System Center Data Protection Manager (DPM) para fazer backup do SharePoint
Whitepapper: “How to protect SharePoint with DPM 2010 whitepaper”

Artigo de engenheiros da Microsoft mostrando como configurar o DPM para proteger o SharePoint:
https://blogs.technet.com/b/dpm/archive/2013/05/22/how-to-setup-dpm-2012-to-protect-sharepoint-2010.aspx (abrir no IE há vídeos que não abriram quando visualizei em outro navegador)