Vou mostrar neste post como trabalhar com termos hierarquizados dentro do servico de metadados do SharePoint 2013.Antes e necessario entender a estrutura basica dos objetos do servico Managed Metadata:TermStore: Instancia do service application.TermGroup: Grupo de TermSets, normalmente agrupando temas.TermSet: Contem um grupo de termos diretamente relacionados.Term: Termo propriamente dito. Ex.: Maca, Uva, Tomate, etc.A hierarquia surge da necessidade em se classificar termos, como por exemplo para armazenar dados de Localizacao. Com a hierarquia de termos e possivel cadastrar tanto uma localizacao abrangente (por Continente) ou mais especifica (por Pais).Ex.:EuropaAlemanhaItaliaAmerica do SulBrasilArgentinaSegue abaixo script PowerShell:Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue#Retorna um objeto SPTaxonomySession com a sessao de taxonomia utilizada# no site informado$session = Get-SPTaxonomySession -Site "http://<<site sharepoint>>"#Recupera TermStore$termStore = $session.TermStores[0]#Recupera TermGroup$termGroup = $termStore.Groups[0]#Recupera TermSet$termSet = $termGroup.TermSets[0]#Criacao do Termo no primeiro nivel da hierarquia$term1 = $termSet.CreateTerm("Termo nivel 1", 1033)#Criacao do Termo no segundo nivel da hierarquia$term2 = $term1.CreateTerm("Termo nivel 2", 1033)#Realiza o commit de todas as alteracoes realizadas para o servico de metadados$termStore.CommitAll()Apos a execucao do script, podera verificar a estrutura de termos criada conforme imagem abaixo:Qualquer duvida ou sugestao envie nos comentarios.Abraco ! Mostrarei aqui como realizar como realizar tanto a quebra de heranca nas permissoes quanto a utilizacao das permissoes do objeto pai.Para mais informacoes sobre o funcionamento de heranca de permissoes no SharePoint, segue abaixo um link que explica o que e heranca e como ela aplicada aos objetos do SharePoint:http://office.microsoft.com/pt-br/sharepoint-help/o-que-e-heranca-de-permissoes-HA102772762.aspxVamos ao codigo, abaixo temos um exemplo onde e realizada a quebra de heranca de permissoes para uma biblioteca especifica.//Acessa o site collectionusing(SPSite site = new SPSite("http://site")){ //Acessa o site (top-level site do site collection) using(SPWeb web = site.OpenWeb()) { //Busca a lista pelo nome var list = web.Lists.TryGetList("Nome Da Lista"); if(list != null) { //Realiza a quebra de heranca de permissoes //O parametro "true" informa que desejo copiar as permissoes atuais list.BreakRoleInheritance(true); } }}Abaixo temos um exemplo de herdar as permissoes do objeto pai, como mudaremos a heranca de permissoes em uma lista, isto implica que serao concedidas permissoes conforme o site desta lista (objeto pai).//Acessa o site collectionusing(SPSite site = new SPSite("http://site")){ //Acessa o site (top-level site do site collection) using(SPWeb web = site.OpenWeb()) { //Busca a lista pelo nome var list = web.Lists.TryGetList("Nome Da Lista"); if(list != null) { //Atualiza as permissoes para herdar do objeto pai, no caso, do site list.ResetRoleInheritance(); } }}Qualquer duvida ou sugestao informe nos comentarios.Abraco ! Vou mostrar neste post como utilizar o bloco Try Catch Finally no PowerShell.A sintaxe se assemelha a outras linguagens de programacao:try{ #trecho de codigo a ser executado}catch{ #trecho executado se ocorrida excecao no bloco acima}finally{ #trecho executado ao final}Abaixo temos um exemplo onde tentamos recuperar um objeto SPSite atraves do Get-SPSite dentro de Try, caso ocorra uma excecao na execucao, por exemplo se a URL do site estiver incorreta, e feita uma tratativa na excecao gerada dentro do Catch.Por ultimo e executado o trecho dentro do Finally realizando o Dispose do objeto.Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinuecls$siteUrl = "http://<<site url>>"try{ Write-Host "Recuperando site collection." -ForegroundColor Green $site = Get-SPSite -Identity $siteUrl}catch{ if($_.Exception.Message.Contains("Cannot find an SPSite object with Id or Url")) {