Magic Quadrant™ para gerenciamento de acesso privilegiado 2025: Netwrix reconhecida pelo quarto ano consecutivo. Baixe o relatório.

Plataforma
Centro de recursosBlog
Comandos PowerShell mais úteis para SharePoint

Comandos PowerShell mais úteis para SharePoint

Nov 12, 2018

Os comandos mais úteis do SharePoint PowerShell permitem que os administradores gerenciem sites, objetos e permissões de forma mais eficiente do que as ferramentas nativas. Cmdlets como Get-SPSite e Get-SPWeb fornecem informações detalhadas sobre sites e arquivos, enquanto New-SPSite, Remove-SPSite, e Set-SPUser simplificam a criação, exclusão e controle de acesso de sites. Ao automatizar relatórios, gerenciamento de permissões e auditorias, os scripts do SharePoint PowerShell melhoram a produtividade, reduzem erros e fortalecem a segurança em diferentes ambientes.

SharePoint Server é uma plataforma colaborativa baseada na web que se integra ao Microsoft Office. Para configurar as configurações do site SharePoint, os administradores de sistema frequentemente usam o SharePoint Management Shell que é instalado com o produto SharePoint. Executar o SharePoint Management Shell chama o ambiente de tempo de execução do Windows PowerShell e executa um arquivo de script chamado sharepoint.ps1, que carrega o snap-in do Windows PowerShell para SharePoint e executa alguns comandos. Esses comandos não são muito importantes; eles incluem escolher C:UsersUsername como o local inicial para execução de comandos e executar a versão mais recente do PowerShell console.

Uma opção melhor é usar o PowerShell ISE. Não só inclui muitos cmdlets criados especialmente para gerenciar SharePoint, como também oferece código com destaque de cores, um motor de depuração e um motor de busca de cmdlets.

Para carregar o snap-in do SharePoint, precisamos executar o seguinte comando:

      Add-PSSnapin Microsoft.SharePoint.PowerShell
      

Depois disso, é prudente atualizar a ajuda do PowerShell para obter as informações mais recentes sobre os cmdlets do Microsoft SharePoint PowerShell:

      Update-Help
      

Então, quais cmdlets estão disponíveis no snap-in do SharePoint? Aqui está o comando que listará todos eles para você:

      Get-Command -Module "Microsoft.SharePoint.PowerShell"
      

Agora, vamos dar uma olhada mais de perto nos cmdlets SharePoint mais úteis.

Conteúdo relacionado selecionado:

Obtendo informações do site SharePoint

Get-SPSite cmdlet é o principal cmdlet para obter informações sobre suas coleções de sites SharePoint. Ele lista as URLs dos seus sites SharePoint e seus níveis de compatibilidade (versões do SharePoint).

Image

Usando o parâmetro Select-Object com este cmdlet, podemos obter propriedades específicas sobre um site, como o proprietário do site, uso de armazenamento, nível máximo de cota e data da última modificação do conteúdo:

      Get-SPSite "http://sharepoint/sites/ent" | Select-Object url, owner, @{Expression={$_.Usage.Storage}}, @{Expression={$_.Audit.AuditFlags}}, readonly, LastContentModifiedDate, @{Express={$_.QuotaStorageMaximumLevel}}
      

Image

Além disso, podemos exportar informações sobre todos os sites em nossa SharePoint farm para um arquivo csv:

      Get-SPWebApplication http://sharepoint/ | Get-SPSite -Limit All | Get-SPWeb -Limit All | Select Title, URL, ID, ParentWebID | Export-CSV C:rootsharepointinventory.csv -NoTypeInformation
      

Também podemos usar o cmdlet Get-SPSite para criar um script do PowerShell do SharePoint que lista todos os grupos e seus membros para um site específico do SharePoint:

      $site = Get-SPSite http://sharepoint/sites/ent/

$groups = $site.RootWeb.sitegroups

foreach ($grp in $groups) {"Group: " + $grp.name; foreach ($user in $grp.users) {"  User: " + $user.name} }

$site.Dispose()
      

Image

Se você precisa de um relatório completo de permissões para um site SharePoint, execute o seguinte código, especificando a URL do site SharePoint ($SPSiteURL) e o caminho para exportar os dados para um arquivo csv ($ExportFile):

      [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$SPSiteUrl = "http://sharepoint/sites/ent"
$SPSite = New-Object Microsoft.SharePoint.SPSite($SPSiteUrl);
$ExportFile = "C:rootPermissions.csv"

"Web Title,Web URL,List Title,User or Group,Role,Inherited" | out-file $ExportFile

foreach ($WebPath in $SPSite.AllWebs)
{
   if ($WebPath.HasUniqueRoleAssignments)
        {
          $SPRoles = $WebPath.RoleAssignments;
          foreach ($SPRole in $SPRoles)
          {
            foreach ($SPRoleDefinition in $SPRole.RoleDefinitionBindings)
            {
                $WebPath.Title + "," + $WebPath.Url + "," + "N/A" + "," + $SPRole.Member.Name + "," + $SPRoleDefinition.Name + "," + $WebPath.HasUniqueRoleAssignments | out-file $ExportFile -append
            }
          }
        }
        
        foreach ($List in $WebPath.Lists)
        {
           if ($List.HasUniqueRoleAssignments)
           {
             $SPRoles = $List.RoleAssignments;
             foreach ($SPRole in $SPRoles)
             {
               foreach ($SPRoleDefinition in $SPRole.RoleDefinitionBindings)
               {
                    $WebPath.Title + "," + $WebPath.Url + "," + $List.Title + "," + $SPRole.Member.Name + "," + $SPRoleDefinition.Name | out-file $ExportFile -append
               }
             }
           }
        }
}
$SPSite.Dispose();
      

Para encontrar um determinado arquivo em um site do SharePoint, precisamos usar o cmdlet Get-SPWeb. Aqui está um script que procura por um arquivo cujo nome contém a palavra “readme” no site “http://sharepoint/sites/ent”:

      Get-SPWeb http://sharepoint/sites/ent |
   Select -ExpandProperty Lists |
   Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
           -not $_.Hidden } |
   Select -ExpandProperty Items |
   Where { $_.Name -like "*readme*" } |
   Select Name, {$_.File.Length}, url
      

Agora vamos criar um relatório que exibirá todos os arquivos criados por um determinado usuário. Este script pode ser útil, por exemplo, quando um funcionário deixa a empresa e você precisa transferir os dados dele para outras pessoas.

      Get-SPWeb http://sharepoint/sites/ent |
   Select -ExpandProperty Lists |
   Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
          -not $_.Hidden } |
   Select -ExpandProperty Items |
   Where { $_["Created By"] -like "*system*" } |
   Select Name, url, {$_["Created By"]}
      

O nosso último script usando o Get-SPWeb cmdlet reporta todos os arquivos com uma extensão especificada:

      Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
   Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
           -not $_.Hidden } |
   Select -ExpandProperty Items |
   Where { $_.Name -Like "*.rtf" } |
   Select Name,
         @{Name="URL";
          Expression={$_.ParentList.ParentWeb.Url + "/" + $_.Url}}
      

Usando PowerShell para Gerenciar Sites e Objetos do SharePoint

Novos sites do SharePoint são geralmente criados usando um modelo. Para obter uma lista de todos os modelos de site, execute o cmdlet Get-SPWebTemplate sem parâmetros.

Usamos o cmdlet Get-SPWebTemplate com o cmdlet New-SPSite para criar um novo site SharePoint baseado em um template. Aqui está um exemplo de um script para criar um site usando o template “Team Site” (STS#0):

      $template = Get-SPWebTemplate "STS#0"
New-SPSite -Url "http://sharepoint/sites/Netwrixteamsite" -OwnerAlias "enterpriset.simpson" -Template $template
      

Para deletar um site, usamos o cmdlet Remove-SPSite:

      Remove-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -GradualDelete
      

Às vezes, você pode precisar alterar o administrador da coleção de sites. Execute o seguinte script para adicionar direitos de administrador ao usuário especificado:

      Set-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -SecondaryOwnerAlias " i:0#.w|enterprisei.scur"
      

Agora, vamos ver como gerenciar permissões para nossas coleções de sites. Primeiro, vamos adicionar certos direitos de acesso a uma conta de usuário específica do Active Directory. Neste caso, o usuário “enterpriset.simpson” receberá direitos de “Contribuidor” para o site “http://sharepoint/sites/ent”. Observe que antes de um nome de conta de usuário regular como “enterpriset.simpson”, você precisa usar o prefixo “i:0#.w|”. Caso contrário, a execução falhará e o script gerará um erro.

      Set-SPUser -Identity "i:0#.w|enterpriset.simpson" -Web http://sharepoint/sites/ent -AddPermissionLevel "Contributor"
      

Para adicionar permissões a um determinado grupo de AD security, use o mesmo script, mas digite o nome do grupo em vez do nome da conta de usuário.

Para adicionar um usuário a um grupo, use este comando:

      Set-SPUser -Identity "i:0#.w|enterprisej.carter" -Web http://sharepoint/sites/ent -Group "Enterprise Owners"
      

Conclusão

Como você pode ver, gerenciar e relatar sobre sites do SharePoint usando scripts do SharePoint PowerShell não é tão difícil quanto pode parecer inicialmente. Na verdade, em alguns casos, é muito mais rápido executar um script do que gerar um relatório a partir do registro de auditoria do administrador.

Para manter seu ambiente Microsoft SharePoint seguro e altamente disponível, você também precisa acompanhar cuidadosamente as alterações lá. Netwrix Auditor for SharePoint pode gerar facilmente relatórios sobre as mudanças no SharePoint, oferecendo total visibilidade sobre quem alterou o quê, quando e em qual fazenda SharePoint. Você também pode receber notificações sobre mudanças críticas automaticamente. Além disso, Netwrix Auditor for SharePoint fornecerá informações completas sobre as permissões atuais e como elas foram concedidas, bem como mostrar qualquer herança quebrada no seu ambiente SharePoint.

Compartilhar em

Saiba Mais

Sobre o autor

Asset Not Found

Jeff Melnick

Diretor de Engenharia de Sistemas

Jeff é um ex-Diretor de Engenharia de Soluções Globais na Netwrix. Ele é um blogueiro, palestrante e apresentador da Netwrix há muito tempo. No blog da Netwrix, Jeff compartilha lifehacks, dicas e truques que podem melhorar drasticamente sua experiência em administração de sistemas.