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).
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}}
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()
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
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.