Ola, galera!Hoje tive o prazer de participar de um hangout com meus antigos colegas de trabalho Leandro Magnani, Luiz Pais, Alexandre Costa (Magoo), Gabriel Vieira e Vinicius Tosta sobre coisas que todos os desenvolvedores devem saber.Confira no video abaixo.[]'s Hoje precisei acessar algumas informacoes do AD, e decidi usar o PowerShell para isso.Eu precisava encontrar alguns usuarios na rede, e vi que o comando Get-ADUser (https://technet.microsoft.com/en-us/library/ee617241.aspx) era exatamente o que eu precisava. Assim, abri um console do PowerShell, digitei o comando e erro!O comando Get-ADUser nao foi reconhecido. Bom, neste caso eu precisava fazer referencia ao pacote onde ele faz parte, mas vi que antes disso eu precisava baixa-lo. Pesquisando na internet vi que se tratava do Remote Server Administration Tools for Windows 7 with Service Pack 1 (SP1). O link para download e este: https://www.microsoft.com/en-us/download/details.aspx?id=7887Depois de baixar o pacote e instalar, e necessario ativa-lo como feature do Windows. Para isso, basta escolher a opcao "Modulo do Active Directory para Windows PowerShell" (ou "Active Directory Module For Windows PowerShell").Feito isso, basta importar o modulo activedirectory atraves do comand Import-Module activedirectory, e a partir dai usar os comandos. Abaixo esta uma imagem de exemplo.Obs. Sim, infelizmente o Windows esta em portugues nesta maquina. Nem tudo e perfeito na vida.[]'s O SharePoint tem um servico de termos que pode ser usado tanto como navegacao como classificacao de itens (colocando tags em documentos, por exemplo).Esse servico de termos, chamado Managed Metadata Service, pode ser acessado atraves de uma API que pode ser consumida atraves de JavaScript.Em uma funcionalidade na qual precisavamos acessar um conjunto de termos especifico para popular um controle na tela, comecamos a ter o erro abaixo quando a solucao foi implantada no ambiente de testes.Cannot read property 'toString' of nullO erro a principio e simples de identificar, existe uma chamada do metodo toString em uma string que nao recebeu nenhum valor. O problema e que esse erro da dentro da biblioteca JavaScript do proprio SharePoint.O codigo utilizado nessa chamada e o abaixo.var termSetName = "NOME_TERMO";var locale = 1046; //pt-BRvar clientContext = SP.ClientContext.get_current();var taxonomySession = SP.Taxonomy.TaxonomySession.getTaxonomySession(clientContext);var termStore = taxonomySession.getDefaultSiteCollectionTermStore();var termSets = termStore.getTermSetsByName(termSetName, locale);var termSet = termSets.getByName(termSetName);var terms = termSet.getAllTerms();clientContext.load(taxonomySession);clientContext.load(termStore);clientContext.load(termSet);clientContext.load(terms);clientContext.executeQueryAsync(function onSuccess() { var enumerator = terms.getEnumerator(); while (enumerator.moveNext()) { var spTerm = enumerator.get_current(); var name = spTerm.get_name(); var id = spTerm.get_id(); // ... }}, function onFailure(args) { console.log(args.get_message()); });Depois de analisar e comparar os ambientes, chegamos na raiz do problema: a obtencao do term store. Veja que no codigo estamos dizendo, na linha 5, para recuperar o term store padrao do site collection. Ha uma outra forma de obter o term store, atraves do seu nome, mas haviamos decidido usar o padrao pois foi um codigo de exemplo que encontramos e funcionou!A diferenca dos ambientes foi uma configuracao no servico de termos:Apos selecionar a opcao "This service is the default storage location for column specific term sets" nas propriedades do servico, a solucao comecou a funcionar no ambiente de testes! Dessa maneira, ha um term storage a ser usado no momento da chamada do metodo getDefaultSiteCollectionTermStore, cuja ausencia aparentemente era a causa do problema.Isso