Você precisa encontrar todos os proprietários de sites no seu ambiente SharePoint para uma auditoria ou tarefa de limpeza. O PowerShell é a maneira mais rápida de obter esses dados, mas executar o comando errado ou esquecer um parâmetro pode resultar em resultados incompletos ou erros. Este artigo explica os erros comuns ao usar PowerShell para listar proprietários de sites do SharePoint e como escrever o script correto sempre.
Principais Conclusões: Evite Estes Erros de PowerShell para Relatórios de Proprietários do SharePoint
- Connect-SPOService -Url: Use a URL do centro de administração do SharePoint, não a URL de um conjunto de sites, para estabelecer a sessão correta.
- Get-SPOSite -Limit All: Sem o parâmetro Limit, o cmdlet retorna apenas os primeiros 200 sites, perdendo muitos proprietários.
- Propriedade $_.Owner vs. $_.SiteOwner: A propriedade Owner é o administrador principal do conjunto de sites; a propriedade SiteOwner é o proprietário do grupo para sites conectados a grupos.
Por Que as Listas de Proprietários do PowerShell Podem Estar Erradas
O SharePoint Online armazena informações de proprietários de sites em dois lugares separados. Um conjunto de sites tem um administrador principal armazenado na propriedade Owner. Um site de equipe conectado ao Microsoft 365 tem um proprietário de grupo adicional armazenado na propriedade SiteOwner. Quando você executa um script PowerShell sem entender essa divisão, pode listar apenas o administrador principal e perder os proprietários do grupo que têm controle total. Outra causa comum de listas incompletas é o limite de página padrão de 200 sites no cmdlet Get-SPOSite. Se seu locatário tiver mais de 200 sites, o script para antes e ignora o restante. Os erros descritos neste artigo decorrem de não ler a documentação do SharePoint Online Management Shell para esses parâmetros e propriedades específicos.
Script PowerShell Correto para Listar Todos os Proprietários de Sites
Antes de executar qualquer script, instale o SharePoint Online Management Shell e conecte-se ao seu locatário. Abra o Windows PowerShell como administrador e execute os seguintes comandos.
- Instalar o SharePoint Online Management Shell
ExecuteInstall-Module -Name Microsoft.Online.SharePoint.PowerShelle confirme a instalação. Este módulo contém todos os cmdlets necessários. - Conectar ao SharePoint Online
ExecuteConnect-SPOService -Url https://seulocatario-admin.sharepoint.com. Substitua a URL pela URL do centro de administração do seu locatário, não pela URL de um conjunto de sites. Será solicitado credenciais de administrador global ou do SharePoint. - Recuperar todos os sites com proprietários
Execute$sites = Get-SPOSite -Limit All -IncludeOwnerSiteOwner. O parâmetro-Limit Allremove o limite padrão de 200 sites. O parâmetro-IncludeOwnerSiteOwnergarante que o cmdlet retorne tanto o administrador principal quanto o proprietário do grupo para cada site. - Exportar os dados dos proprietários para um arquivo CSV
Execute o seguinte script para criar um relatório limpo:$report = @()
foreach ($site in $sites) {
$report += [PSCustomObject]@{
SiteUrl = $site.Url
PrimaryAdmin = $site.Owner.Email
GroupOwner = $site.SiteOwner.Email
LastContentModifiedDate = $site.LastContentModifiedDate
}
}
$report | Export-Csv -Path C:\Reports\SiteOwners.csv -NoTypeInformation
Após o script terminar, abra o arquivo CSV no Excel. Você verá todos os sites do seu locatário com o e-mail do administrador principal em uma coluna e o e-mail do proprietário do grupo em outra. Se um site não tiver proprietário de grupo, a célula GroupOwner ficará vazia. Isso é esperado para sites clássicos ou sites de comunicação.
Erros Comuns e Como Corrigi-los
Usar a URL de conexão errada
Um erro frequente é conectar-se a uma URL de conjunto de sites como https://seulocatario.sharepoint.com/sites/marketing em vez da URL do centro de administração https://seulocatario-admin.sharepoint.com. O cmdlet Connect-SPOService requer a URL do centro de administração. Usar uma URL de site retorna um erro de autenticação. Corrija isso sempre usando o sufixo -admin na URL.
Esquecer o parâmetro -Limit All
O cmdlet Get-SPOSite retorna apenas 200 sites por padrão. Se seu locatário tiver 500 sites, você verá apenas os primeiros 200 proprietários. Adicione -Limit All ao comando para recuperar todos os sites. Sem esse parâmetro, seu relatório fica incompleto e você pode perder sites órfãos sem proprietário.
Confundir Owner com SiteOwner
A propriedade Owner contém o administrador principal do conjunto de sites, geralmente um único usuário. A propriedade SiteOwner contém o proprietário do grupo Microsoft 365 subjacente para sites conectados a grupos. Se você exportar apenas $_.Owner, perderá o proprietário do grupo que tem controle total sobre o site através do grupo. Sempre inclua ambas as propriedades no seu relatório.
Executar o script sem a opção -IncludeOwnerSiteOwner
Por padrão, Get-SPOSite não retorna a propriedade SiteOwner. Se você omitir a opção -IncludeOwnerSiteOwner, o valor de $_.SiteOwner ficará vazio para todos os sites, mesmo que exista um proprietário de grupo. Adicione esta opção ao comando para preencher a propriedade corretamente.
Não tratar sites sem proprietário de grupo
Sites de comunicação e sites de equipe clássicos não têm um grupo Microsoft 365, então a propriedade SiteOwner é nula. Se seu script tentar chamar $_.SiteOwner.Email em um objeto nulo, ocorrerá um erro. Use uma verificação condicional no seu loop: if ($_.SiteOwner -ne $null) { $groupOwner = $_.SiteOwner.Email } else { $groupOwner = "N/A" }.
Scripts PowerShell Comparados: Básico vs. Completo
| Item | Script Básico | Script Completo |
|---|---|---|
| URL de Conexão | URL do conjunto de sites | URL do centro de administração com -admin |
| Limite de sites | Padrão de 200 sites | -Limit All |
| Propriedade de proprietário incluída | Apenas Owner | Owner e SiteOwner |
| Opção de proprietário de grupo | Não usada | -IncludeOwnerSiteOwner |
| Tratamento de nulo | Gera erro em nulo | Verificação condicional para nulo |
| Formato de saída | Apenas na tela | Exportação CSV com todas as colunas |
O script básico é rápido para uma verificação rápida de alguns sites, mas falha para qualquer locatário com mais de 200 sites ou sites conectados a grupos. O script completo funciona para qualquer tamanho de locatário e produz um relatório confiável que inclui tanto administradores principais quanto proprietários de grupo.
Agora você pode executar um script PowerShell que lista todos os proprietários de sites no seu locatário do SharePoint Online sem perder nenhum registro. Comece conectando-se à URL do centro de administração com as credenciais corretas e, em seguida, use Get-SPOSite -Limit All -IncludeOwnerSiteOwner para recuperar todos os sites. Para uma dica avançada, adicione o parâmetro -Filter para segmentar apenas sites que não foram modificados nos últimos 90 dias, o que ajuda a identificar sites obsoletos antes de remover seus proprietários.