E ai pessoal, tudo bem?

Vamos falar de um assunto bem interessante, algo que pode nos ajudar em nosso dia a dia. Eu já usava há algum tempo o Patterns & Practices e depois eu deixei de usar – acredito que foi por não ter mais algo atualizado. Usei muito o guia de desenvolvimento, em SharePoint, o qual me ajudou bastante, mas eles atualizaram até a versão 2010.

A comunidade Open da Microsoft percebeu que esse guia era bastante utilizado, principalmente na estrutura mais hard de suas soluções, e abriu essas informações para a comunidade que tem o desejo de contribuir com ferramentas e documentos das melhores práticas a serem aplicadas, ou seja, contribuir com esse guia.

Irei focar mais em SharePoint e PowerShell neste tema, pois é muito comum surgir diversas formas de resolver problemas, utilizando a plataforma SharePoint, e acabamos desviando um pouco do padrão e das boas práticas de manutenção e desenvolvimento de novas soluções. Então, em meados de 2015, foi lançado um novo Patterns & Practices e este com o foco voltado para os desenvolvedores da plataforma Office 365 que inclui o SharePoint OnLine. Este se encontra no repositório do GitHub, neste link Office 365 Dev PnP.

Abaixo segue uma imagem que nos faz perceber a importância que esse grupo está levando as boas práticas e ferramentas para solução de problemas, pois vão nos ajudar bastante em todo tipo de solução. Sabemos que o principal objetivo do Patterns & Practices é facilitar e esclarecer soluções com praticidade e rapidez, seguindo os melhores padrões e ferramentas disponíveis.

Sendo assim, de que forma que eles me ajudaram diretamente? Bom, primeiramente a documentação do Sharepoint Framework está sempre atualizada, devemos o mérito a comunidade Open que contribui para essas informações.

Outra experiência legal que irei colocar aqui foi uma  necessidade que a empresa apresentou em querer extrair dados de uma lista do nosso Sharepoint Online e converter isso em JSON. Bom, eu sei que isso é possível e é praticamente fácil de fazer, mas requer um bom tempo e algumas configurações de segurança, tanto configuração de contexto e toda uma necessidade por traz disso.

Abaixo vou mostrar um código que realiza o acesso ao SharePoint OnLine via CSOM (Client-Side Object Model) na forma mais pura, isso só para conectar ao SharePoint Online:


E agora vou mostrar a linha de código do PnP-PowerShell para realizar a conexão com SharePoint OnLine:

  • Connect‑PnPOnline – Connects to a SharePoint site and creates a context that is required for the other PnP Cmdlets

É somente uma linha de código que PnP-PowerShell disponibiliza para que possamos fazer acesso de forma mais fácil com o SharePoint OnLine, sem ser necessário ter que importar tantas DLLS, ter que referenciar objetos, em resumo, sendo uma ferramenta simples e melhor: ela tem uma documentação direta.

Pensando na solução que eu tive que fazer, de forma rápida eu fiquei muito insatisfeito em ter que escolher duas maneiras: uma era tentar buscar as informações via solicitação REST, utilizando as APIS do SharePoint diretamente com o PowerShell; e a outra era utilizando o CSOM. Porém isso ainda me incomodava porque era muitas linhas, muitos controles de acesso e load de contexto, para algo tão simples que é leitura e conversão ao JSON. Eis que pesquisei os CMDLets do PnP-PowerShell e então me trouxe a melhor solução.

Porém nem tudo são flores, sim meus caros é necessário instalar o módulo do PnP-PowerShell, mas é muito fácil e prático, pois para quem já possui o PowerShell na versão 5 ajuda a buscar e instalar os módulos através do PowerShellGet. Portanto, a linha de comando para instalar é bem fácil: Install-Module SharePointPnPPowerShellOnline. Com o módulo instalado podemos executar: Get-Command Module *PnP*, ele irá mostrar todos os cmdlets deste módulo.

Praticamente eu preciso conectar ao SharePoint, passar a lista, selecionar todos os itens, converter para uma saída JSON e transferir para um arquivo. Abaixo o código com a função que faz isso utilizando o PnP-PowerShell.

Retornando dados de uma lista do SharePoint OnLine.

Pronto pessoal, isso é só um exemplo sobre como é bom utilizar o PnP pois eles estão ai para nos ajudar.

Referência