Encontre e remova licenças desnecessárias em caixas de correio compartilhadas

Infelizmente, se você está descompactando os usuários manualmente e você esqueceu de remover a licença do Office 365 do usuário, você continuará a ser cobrado por isso. Uma maneira de evitar isso é usar um script offboard. No entanto, também é uma boa idéia fazer uma auditoria dos usuários de seus clientes e suas licenças de vez em quando, pelo caso de alguns terem caído nas rachaduras.

O script abaixo verificará todos os inquilinos do Office 365 de seus clientes para caixas de correio compartilhadas com licença.

Se forem encontrados alguns, exportará um CSV deles. Se você está feliz em remover as licenças de todas elas ao mesmo tempo, você pode fazê-lo. Caso contrário, você pode ser solicitado a decidir por cada um.

Removendo uma licença de uma caixa postal compartilhada por engano?

O script também exportará um CSV com um resumo de todas as licenças atribuídas a caixas de correio compartilhadas, incluindo um cmdlet PowerShell que você pode usar para reatribuir licenças. Se você usar este script e remover uma licença por engano, basta copiar e colar o cmdlet relevante em uma sessão do PowerShell que esteja conectada ao Office 365 como um administrador.Comandos para re-adicionar licenças removidas em erro

Algumas coisas a ter em mente

  • Este script não suporta autenticação de 2 fator na conta de administrador delegada.
  • Este script é para parceiros da Microsoft gerenciando vários inquilinos através da administração delegada.

 

Como executar o script para encontrar caixas de correio compartilhadas com licença

  1. Para executar o script, copie e cole o código abaixo no Visual Studio Code.
  2. Salve-o como um arquivo PowerShell (.ps1). Verifique se você instalou a extensão do PowerShell no Visual Studio Code. Você deve ser solicitado para isso quando você o salvar se ele já não estiver instalado.
  3. Pressione F5 para executá-lo.
  4. Insira as credenciais de um administrador do Office 365 com acesso delegado aos inquilinos de clientes.
  5. Aguarde a conclusão. Este demora um pouco porque precisa se conectar ao Exchange Online para cada um de seus inquilinos e recuperar os detalhes da caixa de correio.Verificando caixas de correio compartilhadas com licença no Office 365 Inquilinos
  6. Quando ele for concluído, alguns CSVs serão exportados para c: \ temp. Um conterá uma lista de todas as caixas de correio compartilhadas com licença e seus detalhes. O outro conterá uma lista de cada licença anexada à caixa de correio compartilhada e um comando que você pode usar para voltar a adicioná-lo (veja a imagem acima).Lista de caixas de correio compartilhadas licenciadas no Office 365
  7. Você pode optar por remover todas as caixas de correio compartilhadas de uma só vez (não recomendado até que você tenha verificado o CSV exportado) ou ser solicitado por cada caixa de correio.Caixas de correio compartilhadas encontradas no cliente 365 inquilinosRemovendo licenças de caixas de correio compartilhadas
Anúncios

Coletando o Grupo de Distribuição onde o usuário é memberof

# Scripting for Office365
# Crendentials and Logon

Get-PSSession | Remove-PSSession

Get-Module tmp* | Remove-Module

$administrator = “email_admin@domini.com.br”

$password = Get-Content “C:\O365_script\password.txt” | ConvertTo-SecureString -AsPlainText -force

$credential = New-Object System.Management.Automation.PSCredential $administrator,$password

$Server= “https://outlook.office365.com/powershell-liveid/”

$session = New-PSSession -Authentication basic -Credential $credential –ConnectionUri $Server -Configuration Microsoft.Exchange -AllowRedirection

Import-PSSession $session
# Obter DL para o usuário que é membro da

$User = Read-Host “Digite o usuario:”

$user_dn = (Get-Mailbox $user).distinguishedname

Write-Host “Por favor, aguarde isso pode levar algum tempo para processar…..”

“Usuario” + $User + ” é um membro dos seguintes grupos:”

foreach ($group in Get-DistributionGroup -resultsize unlimited)
{

if ((get-distributiongroupmember $group.identity | select -expand distinguishedname) -contains $user_dn){$group.name}
}