Administrando Listas de Distribuição do Office365 com PowerShell
Administrar listas de distribuição no Exchange Online do Office365 sempre é uma tarefa bastante solicitada para a equipe de Service Desk da empresa. Com o PowerShell podemos deixar essa administração mais fácil e com isto reduzir o tempo e esforço de trabalho.
Solução
Muitas equipes efetuam a manutenção de listas de distribuição pela interface gráfica do Office365. Com o PowerShell podemos tornar essa tarefa muito mais rápida e eficiente.
O script abaixo possui 08 opções que podem facilitar muito na administração das Listas de Distribuição do Office365. Importante ressaltar que o usuário que irá executar o script tenha as devidas permissões no Exchange Online do Offfice365 e que dependendo da opção selecionada e a quantidade de Listas de distribuição que o ambiente possui a execução poderá demorar, pois o script terá que percorrer todas as LDs.
OPÇÃO01: Mostra quais as listas de distribuição o usuário é manager.É solicitado o UserPrincipalName (UPN) do usuário.
OPÇÃO02: Mostra quais as listas de distribuição o usuário é membro. É solicitado o UserPrincipalName (UPN) do usuário.
OPÇÃO03: Mosta os membros de uma determinada lista de distribuição. É solicitado o Email da lista de distribuição.
OPÇÃO04: Adiciona um usuário a uma ou várias listas de distribuição. É solicitado o UserPrincipalName (UPN) do usuário e após a quantidade de LD a ser adicionado o usuário. Após definido a quantidade é solicitado o Email da LD conforme a quantidade definida.
OPÇÃO05: Adiciona vários usuários a uma única lista de distribuição. É solicitado o Email da LD e após a quantidade de usuários a ser adicionado. Após definido a quantidade é solicitado UserPrincipalName (UPN) dos usuários conforme a quantidade definida.
OPÇÃO06: Remove um usuários de uma única LD. É solicitado o Email da LD e o UserPrincipalName (UPN) do usuário.
OPÇÃO07: Remove um usuários das função de Manager das LD e adiciona um novo Manager. É solicitado o UserPrincipalName (UPN) do usuário e o UserPrincipalName (UPN) do novo Manager.
OPÇÃO08: Remove um usuários de todas as listas de distribuição que é membro. É solicitado o Email principal do usuário.
OPÇÃO09: Finaliza a execução do script.
Após a execução de cada opção, o script sempre retorna para o menu principal. Abaixo o Menu do script.
Para usar o script, basta copiar o conteúdo abaixo no Notepad e salvar no formato .ps1. Após, basta executar o script no PowerShell.
Administrando Listas de Distribuição do Office365 com PowerShell
June 7, 2016 - Dicas, Microsoft Cloud, Office365, PowerShell - Tagged: Exchange Online, PowerShell
Compartilhe:
0
24
0
17
0
Administrar listas de distribuição no Exchange Online do Office365 sempre é uma tarefa bastante solicitada para a equipe de Service Desk da empresa. Com o PowerShell podemos deixar essa administração mais fácil e com isto reduzir o tempo e esforço de trabalho.
Solução
Muitas equipes efetuam a manutenção de listas de distribuição pela interface gráfica do Office365. Com o PowerShell podemos tornar essa tarefa muito mais rápida e eficiente.
O script abaixo possui 08 opções que podem facilitar muito na administração das Listas de Distribuição do Office365. Importante ressaltar que o usuário que irá executar o script tenha as devidas permissões no Exchange Online do Offfice365 e que dependendo da opção selecionada e a quantidade de Listas de distribuição que o ambiente possui a execução poderá demorar, pois o script terá que percorrer todas as LDs.
OPÇÃO01: Mostra quais as listas de distribuição o usuário é manager.É solicitado o UserPrincipalName (UPN) do usuário.
OPÇÃO02: Mostra quais as listas de distribuição o usuário é membro. É solicitado o UserPrincipalName (UPN) do usuário.
OPÇÃO03: Mosta os membros de uma determinada lista de distribuição. É solicitado o Email da lista de distribuição.
OPÇÃO04: Adiciona um usuário a uma ou várias listas de distribuição. É solicitado o UserPrincipalName (UPN) do usuário e após a quantidade de LD a ser adicionado o usuário. Após definido a quantidade é solicitado o Email da LD conforme a quantidade definida.
OPÇÃO05: Adiciona vários usuários a uma única lista de distribuição. É solicitado o Email da LD e após a quantidade de usuários a ser adicionado. Após definido a quantidade é solicitado UserPrincipalName (UPN) dos usuários conforme a quantidade definida.
OPÇÃO06: Remove um usuários de uma única LD. É solicitado o Email da LD e o UserPrincipalName (UPN) do usuário.
OPÇÃO07: Remove um usuários das função de Manager das LD e adiciona um novo Manager. É solicitado o UserPrincipalName (UPN) do usuário e o UserPrincipalName (UPN) do novo Manager.
OPÇÃO08: Remove um usuários de todas as listas de distribuição que é membro. É solicitado o Email principal do usuário.
OPÇÃO09: Finaliza a execução do script.
Após a execução de cada opção, o script sempre retorna para o menu principal. Abaixo o Menu do script.
image
Para usar o script, basta copiar o conteúdo abaixo no Notepad e salvar no formato .ps1. Após, basta executar o script no PowerShell.
#######################################################################################################################################################################################################
Import-PSSession $(New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Authentication Basic -AllowRedirection -Credential $(Get-Credential))
cls
write-host -ForegroundColor Yellow “ADMINISTRACAO DE LISTAS DE DISTRIBUICAO – EXCHANGE ONLINE
OPCAO 1: Informa quais as Listas de Distribuicao o usuario e Manager.
OPCAO 2: Informa quais Listas de Distribuicao o usuario e Membro.
OPCAO 3: Lista os membros de uma Lista de Distribuicao especifica.
OPCAO 4: Adiciona um usuario a uma Lista ou várias listas de Distribuicao. É solicitado a quantidade de LD.
OPCAO 5: Adiciona vários usuários a uma única lista de distribuição. É solicitado a quantidade de usuários.
OPCAO 6: Remove um usuario de uma Lista de Distribuicao especifica.
OPCAO 7: Remove o usuario da função Manager das Listas de Distribuicao e e adiciona o novo Manager.
OPCAO 8: Remove o usuário de todas as Listas de Distribuicao em que é Membro.
OPCAO 9: Finaliza a execucao do Script
OBS.: Os usuários deve estar ativo no AD e com licenca no Office365.
Autor: Bolivar Andrade”
Function Menu{
#Escreve as opções na tela
Write-Host ”
Menu:
1 – Listas de Distribuicao que o usuario e Manager
2 – Listas de Distribuicao que o usuario e Membro
3 – Usuarios de uma Lista de Distribuicao especifica
4 – Adicionar um usuario a uma/várias Lista de Distribuicao especifica
5 – Adicionar vários usuario a uma única Lista de Distribuicao
6 – Remover um usuario de uma Lista de Distribuicao especifica
7 – Substituicao do manager de Listas de Distribuicao
8 – Remover usuario das Listas de distribuicao
9 – Sair
” -ForegroundColor Yellow
$mode = Read-Host “Escolha um modo de execução”
#Seleciona a opção escolhida na variavel mode
switch($mode){
#Opcao que exporta uma lista com os grupos e membros
1{
ListarManager
}
2{
ListarDasListas
}
3{
ListarUsuarios
}
4{
AdicionarUsuario
}
5{
AdicionarVariosUsuarios
}
6{
RemoverUsuario
}
7{
RemoveManager
}
8{
RemoveDasListas
}
9{
Fechar
}
}
}
Function ListarManager{
$Usuario = Read-Host “Digita o UPN do usuario”
#IDENTIFICA O USUARIO E O DISPLAY NAME DO USUARIO
$User = Get-User -Identity $Usuario
#VERIFICAR AS LD QUE O USUARIO E MANAGR
$ld = Get-DistributionGroup | where {$_.ManagedBy -ccontains $User} | select Identity
if ($ld -ne $null)
{
$ld
}
else
{
write-host -ForegroundColor red “O usuário não possui Lista de Distribuição sob sua gerência”
}
#Chama o Menu
Menu
}
Function ListarDasListas{
$user = Read-Host “Digita o E-MAIL principal do usuario”
$groups = Get-DistributionGroup | select identity
$DGs = $groups.identity | where-object { ( Get-DistributionGroupMember $_ | where-object { $_.PrimarySmtpAddress -contains $user}) }
$DGs
if ($DGs -eq $null)
{
Write-Host -ForegroundColor red “O usuário não pertence a nenhuma Lista de Distribuição”
}
#Chama o Menu
Menu
}
Function Listarusuarios{
$ld = Read-Host “Digite o E-MAIL da Lista de Distribuicao”
Get-DistributionGroupMember -Identity $ld
#Chama o Menu
Menu
}
Function AdicionarUsuario{
$user = Read-Host “Digite o E-MAIL principal do usuario”
$Nld = Read-Host “Digite a quantidade de listas a ser adicionado o usuário”
$val = 0
Do { $val++
$ld = Read-Host “Digite o E-MAIL da Lista de Distribuicao”
Add-DistributionGroupMember $ld -Member $user
} while($val -ne $Nld)
#Chama o Menu
Menu
}
Function AdicionarVariosUsuarios{
$ld = Read-Host “Digite o E-MAIL da Lista de Distribuicao”
$Nusers = Read-Host “Digite a quantidade de usuarios a ser adicionado a lista”
$val = 0
Do { $val++
$user = Read-Host “Digite o E-MAIL principal do usuario”
Add-DistributionGroupMember $ld -Member $user
} while($val -ne $Nusers)
#Chama o Menu
Menu
}
Function RemoverUsuario{
$ld = Read-Host “Digite o E-MAIL da Lista de Distribuicao”
$user = Read-Host “Digite o E-MAIL principal do usuario”
Remove-DistributionGroupMember $ld -Member $user -Confirm:$False
#Write-Host -ForegroundColor red “Usuario” $user “removido a Lista de Distribuicao” $ld
#Chama o Menu
Menu
}
Function RemoveManager{
$Usuario = Read-Host “Digita o UPN do usuario”
$Usuario_M = Read-Host “Digita o UPN do manager”
#IDENTIFICA O USUARIO E O DISPLAY NAME DO USUARIO
$User = Get-User -Identity $Usuario
$User_DN = Get-User -Identity $Usuario | select DisplayName
#COLETA O MANAGER DO USUARIO E O DISPLAY NAME DO MANAGER
#$manager = Get-User -Identity $Usuario_M
$manager_DN = Get-User -Identity $Usuario_M | select DisplayName
#VERIFICAR AS LD QUE O USUARIO E MANAGR
$ld = Get-DistributionGroup | where {$_.ManagedBy -ccontains $User} | select Identity
if ($ld -ne $null)
{
#TROCAR O MANAGER DAS LISTAS PARA O NOVO MANAGER
foreach ($lds in $ld)
{
Set-DistributionGroup $lds.Identity -ManagedBy @{Remove=$User_DN.DisplayName; Add=$manager_DN.DisplayName}
Write-Host -ForegroundColor red “Manager da Lista” $lds.Identity “alterado de” $User_DN.DisplayName “para” $manager_DN.DisplayName
}
}
else
{
write-host -ForegroundColor red “O usuário não possui Lista de Distribuição sob sua gerência”
}
#Chama o Menu
Menu
}
Function RemoveDasListas{
$user = Read-Host “Digite o E-MAIL principal do usuario”
$groups = Get-DistributionGroup | select identity
$DGs = $groups.identity | where-object { ( Get-DistributionGroupMember $_ | where-object { $_.PrimarySmtpAddress -contains $user}) }
if ($DGs -ne $null)
{
foreach( $dg in $DGs){
Remove-DistributionGroupMember $dg -Member $user -Confirm:$False
Write-Host -ForegroundColor red “Usuario” $user “removido da lista” $dg
}
}
else
{
Write-Host -ForegroundColor red “O usuário não pertence a nenhuma Lista de Distribuição ou está desabilitado no AD”
}
#Chama o Menu
Menu
}
Function Fechar{
Exit
}
0 comentários: