quarta-feira, 17 de setembro de 2014

Project Server não salva configuração da página "Sincronização do Pool de Recursos do Active Directory" ou dá erro ao tentar acessar

Você tenta acessar o "Sincronização do Pool de Recursos do Active Directory" nas configurações do PWA e o erro "Algo deu errado" ocorre:


Se você pegar a correlação e procurar no log, encontra alguns erros contendo a seguinte mensagem:
"Pass this into PSClientError constructor to access all error information"
Em alguns casos você não tem o erro, a página abre, mas quando você clica em "Salvar e Sincronizar agora" nada acontece.

Isso acontece por que você está acessando o PWA através de uma URL que não é a da zona padrão, e para a zona em questão o aplicativo web não foi estendido. Isto é, provavelmente você só adicionou mais uma URL nos acessos alternativos e não estendeu o aplicativo web.

Você tem algumas opções:
Acessar usando a URL que está na zona padrão
Colocar a URL que você quer utilizar na zona padrão (e reiniciar o IIS)

Para resolver em definitivo:
Expandir o aplicativo web para a zona pretendida e colocar a URL desejada no cabeçalho do host (host reader). Lembrar de colocar a URL sem HTTP:// ou HTTPS://.

Feito isso você não deve ter mais o erro acima.

Esse comportamento foi identificado no Project Server 2013, aparentemente no Project Server 2010 esse erro não acontece, testei na versão numa farm com SP1 instalado e não aconteceu.

segunda-feira, 15 de setembro de 2014

Atualizações do SharePoint e Project - Como foram mudando com o passar do tempo, que cuidados tomar

A forma como a Microsoft disponibiliza as atualizações do SharePoint e Project, bem como os requisitos para instalar cada uma delas tem variado ao longo do tempo, e adicionado pequenos detalhes a cada release. Esse artigo tem por objetivo compilar o contexto geral e elencar quais os pontos de atenção ao instalar atualizações no SharePoint e Project.

Um resumo da opera
No SharePoint 2007 era obrigatório você instalar um pacote para cada um dos items abaixo:
Windows SharePoint Services 3.0 (WSS 3.0 - equivalente ao atual "foundation")
Microsoft Office SharePoint Server 2007
Project Server 2007
Language Packs

No SharePoint 2010 o mesmo esquema foi mantido até Abril de 2011, e então a Microsoft começou a mesclar os Foundation+Server, e então você poderia encontrar o seguinte texto na descrição do KB:
"This cumulative update package contains all the .msp files that we released as hotfixes or as public updates that target SharePoint Server 2010. This update package also targets SharePoint Foundation 2010. Therefore, you do not have to install that package separately."
Apesar desse avanço que em geral facilita a vida do administrador, conceituados blogs de engenheiros da Microsoft ditavam como melhor prática ainda instalar o foundation e depois o Server.
 http://blogs.technet.com/b/steve_chen/archive/2010/09/29/build-numbers-cube-sheet-for-sharepoint-2010.aspx
"We recommend installing the SharePoint Foundation 2010 packages followed by the SharePoint Server 2010 packages to ensure all binaries are properly updated as a best practice; however, Server packages will include the Foundation package so they could be installed independently."

Pouco tempo depois eles mesclaram também o Project Server, e então você poderia encontrar o seguinte texto na descrição do KB:
"This cumulative update package contains all the .msp files that we released as hotfixes or as public updates that target Project Server 2010. This update package also targets SharePoint Server 2010 and SharePoint Foundation 2010. Therefore, you do not have to install those packages separately"

Adicionalmente também próximo das evoluções acima a Microsoft tornou todos os hotfixes e atualizações do SharePoint "multilingual". O que exime a necessidade de procurar o pacote correto para a linguagem que você tem instalada e também de ter que procurar o pacote de atualização dos language packs que você tem instalado.
Super legal, certo!? Só tem um exceção, os Service Packs. Eles passaram a ser independente de linguagem, porém ainda se faz necessário instalar o SP dos language packs que você tem instalado.

O SharePoint 2007 seguiu a tendência na parte das atualizações serem independentes de linguagem. Porém não há menção em nenhuma nota oficial de que não seja necessária a instalação da atualização do WSS 3.0 antes da atualização do Server, bem como destes dois antes da do Project. Pelo contrário, a sequência de atualização encontrada em sites oficiais ainda menciona esse antiga ordem.
http://blogs.technet.com/b/steve_chen/archive/2009/11/11/build-numbers-cube-sheet-for-moss-wss.aspx#roadmap

O SharePoint 2013 já desde sua concepção tem suas atualizações mescladas, embora seja possível obtê-las separadamente. O mesmo engenheiro que recomendava instalar separadamente no 2010, no 2013 mudou sua perspectiva:
"The SharePoint Server 2013 Packs are containing the Foundation Packs and may need only the Server package to be installed!"
http://blogs.technet.com/b/steve_chen/archive/2013/03/26/3561010.aspx#Build


Informações dentro do KB
Sempre considere a informação acima, porém antes de instalar leia com atenção as informações contidas no KB de descreve a atualização:

Prerequisites
Houve um período era lei, você instalava o SharePoint e então qualquer qualquer atualização cumulativa até ser lançado o Service Pack, depois disso para cada atualização cumulativa, o Service Pack imediatamente anterior era o requisito. Isso já não é mais regra. A exemplo da atualização cumulativa de março de 2013 do SharePoint 2013, que era requisito para as posteriores até que foi lançado o SP1. Há atualizações posteriores ao SP1 do SharePoint 2013 que não precisam do SP1, apenas da de março de 2013. Nos KBs do SharePoint 2007 Server não consta no tópico de requisitos a instalação do pacote do WSS 3.0. Porém até onde sabemos é sim um requisito. Dessa forma exceto neste caso do 2007 que mencionei, para outras atualizações sempre verifique esse tópico de requisitos. Na maioria dos casos no momento da instalação o SharePoint não dá erro se algum requisito estiver faltando, mas você poderá ter problemas no futuro.

Restart requirement
Este tópico dos KBs em geral diz que não é necessário a reinicialização do servidor após a instalação. Em geral está correto, mas se isso for um ponto crucial para sua tomada de decisão, sempre considere que pode ser necessário um reboot (minhas recomendação pessoal). Ex.: Acabei de instalar o KB 2882990 e ele pediu pra reiniciar no final. Não deveria segundo artigo. =)
Os Service Packs quase em sua totalidade exigem uma reinicialização.

Hotfix replacement information
Em geral a informação que você encontra nesse tópico é que ele não substitui nenhum hotfix anterior. Porém há uma sessão anterior geralmente chamada "Resolution" que descreve as atualizações e hotfix que ele substitui. Então esse tópico de certa forma é inútil nos KBs do SharePoint, pois você precisa se atentar às outras sessões pra descobrir o que ele substitui.


Disponibilidade das atualizações
No SharePoint 2007 ainda existiam atualizações disponíveis através do Windows Update. Já no SharePoint 2010 e 2013, a Microsoft removeu essa disponibilidade justamente para não causar problemas, pois como vimos, as atualizações do SharePoint não são simples como as dos outros produtos da Microsoft. Elas estão disponível apenas através do link nos KBs e do Download Center.


Atualizações recentes
Recentemente algumas atualizações estão exigindo alguns passos a mais para serem efetuadas. Por exemplo a atualização de Julho de 2014, quando você clicar no botão de download você será direcionado para um página que tem 3 arquivos de mais de 1GB cada. Você precisará fazer o download de todos eles e deixa-los na mesma pasta para que a instalação funcione.
http://blogs.technet.com/b/projectsupport/archive/2014/07/15/microsoft-project-server-2013-july-2014-cu-announcement.aspx
Caso você você não tenha os 3 arquivos juntos, terá o seguinte erro quando tentar instalar:
Falha na instalação deste pacote.


Guia completo de atualizações do SharePoint
2007 - http://blogs.technet.com/b/steve_chen/archive/2009/11/11/build-numbers-cube-sheet-for-moss-wss.aspx
2010 - http://blogs.technet.com/b/steve_chen/archive/2010/09/29/build-numbers-cube-sheet-for-sharepoint-2010.aspx
2013 - http://blogs.technet.com/b/steve_chen/archive/2013/03/26/3561010.aspx

Páginas oficiais do TechNet para atualizações do SharePoint e Project
SharePoint: http://technet.microsoft.com/library/dn789211(v=office.14)
Project: http://technet.microsoft.com/library/dn789214(v=office.14)

quarta-feira, 2 de julho de 2014

Script para contar a quantidade de usuários por grupo em um site do SharePoint

O SharePoint tem limitações quanto à quantidade de usuário que você pode adicionar num grupo do SharePoint. Entre outros problemas, um bastante frequente se refere a busca:

"Durante o processo de indexação, o sistema armazena a ACE de cada usuário que tenha sido adicionado a um grupo do SharePoint, em vez da ACE do próprio grupo do SharePoint. Esse processo dá suporte a aproximadamente 1.000 usuários por ACL (lista de controle de acesso), após o que o erro ”Parâmetro incorreto" faz o rastreamento falhar."
Fonte: http://technet.microsoft.com/pt-br/library/cc850696(v=office.12).aspx

Explicação/Mais detalhes: http://blogs.msdn.com/b/mattlind/archive/2007/11/02/sharepoint-indexing-limited-by-64-kb-acl-limit.aspx

Visto que temos essa limitação seria conveniente poder contar quantos membros há em cada grupo pra um site que apresenta o problema. Você pode editar as views do grupos no site a adicionar um "count", porém isso pode ser bastante trabalhoso dependendo da quantidade de grupos que você possui.
Pensando nisso criei um script em PowerShell para coletar esse informação:

#Você precisa especificar qual o site collection que possui o site de interesse, para listar os site collections use o comando abaixo:
get-spsite

#Assim que tiver o seu site collection definido adicione ele no comando abaixo, isso vai listar os sub-sites deste site collection:
get-spweb http://lab-shp2013-01/

#Na lista você irá encontrar o site que deseja, no meu caso usei o "/" mas poderia ser "/test-site", ou qualquer coisa, então você irá adicionar esse site no comando abaixo:
$siteweb = get-spweb http://lab-shp2013-01/

#Agora a variável $siteweb contém o seu site, você precisa criar uma para conter os grupos desde site, o que faço abaixo:
$groups = $siteweb.groups

#Tendo as variável populadas, basta executar o foreach abaixo para listar o grupo e a quantidade respectiva de membros:
foreach ($group in $groups)
{
Write-Host "Grupo" $group.name $group.users.count "membros"
}

A saída será algo como a imagem abaixo:

Have fun!

quarta-feira, 11 de junho de 2014

Identificar métodos e propriedades de uma variável no PowerShell

Ao administrar o SharePoint usando o PowerShell, em alguns casos você quer manipular uma Service Application um Serviço ou qualquer coisa que possa ser colocado numa variável, porém não conhece os métodos que podem ser utilizados para controla-la.
Usando os comandos abaixo você poderá identifica-los.

Neste exemplo uso um Service Application mas poderia ser qualquer entidade dentro do SharePoint.
Você precisará do ID, para obtê-lo execute o comando abaixo:
Get-SPServiceApplication

A saída será algo como essa abaixo:











Execute o comando abaixo para atribuir à variável $s a Service Application "Secure Store Service" de ID "ca836dfa-20ac-4d0f-afd4-0788b4f21269":
$s = Get-SPServiceApplication ca836dfa-20ac-4d0f-afd4-0788b4f21269

Executando o comando abaixo você verá todos os métodos e propriedades relativos à variavel $s:
$s | Get-Member









Obs: A lista completa é bem maior do que a apresentada acima

Para melhor visualização você pode usar a um "pipe" adicional:
$s | Get-Member | Out-GridView












Obs.: O formatador out-gridview só funciona se a feature "Windows PowerShell Integrated Scripting Environment (ISE) estiver instalada no servidor

Alguns métodos com o Provision/Unprovision em geral funcionam sem parametros então você pode utiliza-los como no exemplo abaixo:
$s.Provision()
$s.UnProvision()

Explore os alguns métodos e propriedades, você pode encontrar algumas coisas úteis ao seu dia-a-dia ou a resolução de problemas.

terça-feira, 10 de junho de 2014

Alterar a senha das contas gerenciadas do SharePoint via PowerShell

Se alguém na sua organização mudar a senha das contas de serviço (chamadas contas gerenciadas) direto no Active Directory (AD). Você pode chegar numa situação que a Central de Administração irá parar de funcionar, bem como todos os sites e recursos que tenham essa conta configurada em seu respectivo application pool.

Nesta situação a melhor forma de se resolver é sem dúvida mudando a senha da conta gerenciada usando o PowerShell do SharePoint. Os comandos abaixo são um exemplo de como fazê-lo:
$conta = Get-SPManagedAccount -Identity “dominio\svc-spadm”
Set-SPManagedAccount -Identity $conta  -ExistingPassword (ConvertTo-SecureString "pass@word" -AsPlainText -force) -confirm

Obs1.: Nesse exemplo dominio\svc-spadm é a conta e pass@word é a senha.
Obs2.: Pode ser necessário executar isso em todos os servidores da sua farm.

A senha no exemplo anterior é a aquela que foi configurada no AD previamente, esse comando não muda a senha no AD. Se você desejar mudar a senha da farm usando o SharePoint, a senha atual necessariamente precisa estar correta, e então você deve usar o comando abaixo:
Set-SPManagedAccount -Identity $conta  -NewPassword (ConvertTo-SecureString "pass@word" -AsPlainText -force) -confirm

Se você for executar fora do PowerShell do SharePoint será necessário adicionar o Snap-in do SharePoint antes de executar os comando acima, para adicioná-lo use o comando abaixo:
Add-PSSnapin Microsoft.SharePoint.PowerShell -EA silentlycontinue


Mais informações sobre boas práticas a respeito de como alterar as contas e senhas dos serviços do SharePoint você pode encontrar nos artigos abaixo:

terça-feira, 27 de maio de 2014

Comandos PowerShell para trabalhar com os logs do SharePoint

Neste artigo você encontra uma referência sintetizada de comandos para operar os logs e suas configurações no SharePoint 2010 e 2013.
Para utilizar os comandos você precisa abrir o PowerShell do SharePoint ou num PowerShell comum executar o seguinte comando:
Add-PSSnapin -Name Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue

Os comandos a seguir se referem os ULS (Unified Logging System) logs. Estes por padrão no SharePoint ficam no diretório: %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\LOGS\
Obs.: O 14 se refere ao SharePoint 2010 se for uma farm 2013 você terá 15 no lugar do 14.

PARA CONFIGURAR O NÍVEL DO LOG
Coloca tudo em Verbose:
Set-SPLogLevel -EventSeverity Verbose -TraceSeverity Verbose
Voltar os logs ao modo default:
Clear-SPLogLevel

PARA OBTER OS LOGS DE UM MOMENTO ESPECÍFICO
Cria um novo arquivo de log:
New-SpLogFile
Cria um log fundindo os logs de todos os servidores num unico arquivo, e ainda filtrando um determinado período de tempo:
Merge-SPLogFile -Path "C:\temp\FarmMergedLog.log" -Overwrite -StartTime "09/23/2013 08:00" -EndTime "09/23/2013 17:35"
Obs.: A pasta precisa existir. O formato da data pode mudar de acordo com as configurações regionais

PARA CONTROLAR O TAMANHO DO LOG
Para limitar ou desativar o limite de tamanho para o log você pode usar os comandos abaixo:
Habilitar: 
Set-SPDiagnosticConfig -LogMaxDiskSpaceUsageEnabled:$True
Desabilitar:
Set-SPDiagnosticConfig -LogMaxDiskSpaceUsageEnabled:$False
Determinar o limite: (o comando abaixo limitaria em 10GB)
Set-SPDiagnosticConfig -LogDiskSpaceUsageGB 10

Uma forma mais complexa porém eficiente pois você pode mudar qualquer propriedade é utilizando o método abaixo:
Determina a variável
PS C:\Users\shpadm> $l = Get-SPDiagnosticConfig
Aqui apenas mostro o conteúdo da variável antes da alteração
PS C:\Users\shpadm> $l

AllowLegacyTraceProviders                   : False
CustomerExperienceImprovementProgramEnabled : True
ErrorReportingEnabled                       : True
ErrorReportingAutomaticUploadEnabled        : True
DownloadErrorReportingUpdatesEnabled        : True
DaysToKeepLogs                              : 14
LogMaxDiskSpaceUsageEnabled                 : False
LogDiskSpaceUsageGB                         : 5
LogLocation                                 : %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\LOGS\
LogCutInterval                              : 30
EventLogFloodProtectionEnabled              : True
EventLogFloodProtectionThreshold            : 5
EventLogFloodProtectionTriggerPeriod        : 2
EventLogFloodProtectionQuietPeriod          : 2
EventLogFloodProtectionNotifyInterval       : 5
ScriptErrorReportingEnabled                 : True
ScriptErrorReportingRequireAuth             : True
ScriptErrorReportingDelay                   : 60

Mudo a propriedade da variável para "True"
PS C:\Users\shpadm> $l.LogMaxDiskSpaceUsageEnabled=$True
Passo a variável para o comando efetivar no SharePoint a mudança da propriedade
PS C:\Users\shpadm> $l | Set-SPDiagnosticConfig
Mostro o conteúdo da variável para exemplificar como ocorreu a alteração
PS C:\Users\shpadm> $l

AllowLegacyTraceProviders                   : False
CustomerExperienceImprovementProgramEnabled : True
ErrorReportingEnabled                       : True
ErrorReportingAutomaticUploadEnabled        : True
DownloadErrorReportingUpdatesEnabled        : True
DaysToKeepLogs                              : 14
LogMaxDiskSpaceUsageEnabled                 : True
LogDiskSpaceUsageGB                         : 5
LogLocation                                 : %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\LOGS\
LogCutInterval                              : 30
EventLogFloodProtectionEnabled              : True
EventLogFloodProtectionThreshold            : 5
EventLogFloodProtectionTriggerPeriod        : 2
EventLogFloodProtectionQuietPeriod          : 2
EventLogFloodProtectionNotifyInterval       : 5
ScriptErrorReportingEnabled                 : True
ScriptErrorReportingRequireAuth             : True
ScriptErrorReportingDelay                   : 60

FONTE
Esse conteúdo pode ser encontrado no site oficial:
http://technet.microsoft.com/en-us/library/ff607575(v=office.15).aspx
http://technet.microsoft.com/en-us/library/ff607887(v=office.15).aspx
Contanto me pareceu um pouco confuso a forma e os exemplos que a Microsoft disponibilizou nestes artigos.

quarta-feira, 12 de março de 2014

Fim do suporte oficial para SharePoint 2003

Fiquem atentos, e tomem as providências necessárias se sua organização ainda tem esses produtos em uso. O suporte termina em 8 de abril de 2014. A partir desta data nenhum tipo de suporte é prestado por parte da Microsoft, nem mesmo os contratos pagos que possuem suporte extendido, ou ainda os contratos Premier que possuem serviços mais avançados. Nada mais tornará sua empresa elegível a receber o suporte oficial da Microsoft a partir desta data.

Se você ainda tem o SharePoint 2003 - Hurry up! - Segue alguns links que podem lhe ser bastante úteis:
Upgrade SharePoint Portal Server 2003 to SharePoint 2010 - Steve Chen
Upgrading from SharePoint Portal Server 2003 to SharePoint 2010 Part 1 - Hisham Samara
Upgrading from SharePoint Portal Server 2003 to SharePoint 2010 Part 2 - Hisham Samara

Tal data se aplica a todos os produtos abaixo:
Windows XP, Office 2003, SharePoint 2003, Exchange 2003 e Internet Explorer 6 rodando sobre Windows XP.


Abaixo o link com as informações oficiais, e algumas dicas para iniciar a migração caso ainda tenha algum desses produtos.
http://www.microsoft.com/pt-br/windows/enterprise/endofsupport.aspx

Good luck! ;-)