AP853
- Alterando vários usuários através do Management Shell
| Autor: |
Anderson Patricio / Jose Rodas |
| Publicação: |
16/Dezembro/2006 |
Overview
Uma
funcionalidade não encontrada nas versões anteriores é capacidade de
alterarmos vários usuários ao mesmo tempo sem a utilização de scripts em
vbs e nada do gênero.
Artigos relacionados:
AP849
- Gerenciando Mail Users no Exchange Server 2007
AP814
- Criando um contato do tipo mail-enabled no
Exchange 2007
AP815
- Gerenciando uma mailbox no Exchange Server 2007
Solução
O Exchange
Management Shell permite a utilização de pipes, ou seja, podemos
trabalhar com a saída de um comando com outro cmdlet em memória, isto
facilita o trabalho do administrador. Neste artigo vamos ver alguns
casos que conseguimos alterar vários atributos de usuários utilizando
pesquisas no PowerShell.
Como alterar o envio máximo dos usuários para 5MB?
Isto fica muito
fácil no Exchange Management Console, primeiro temos dois cmdlets para
fazer este processo get-mailbox que vai listar todos os usuários
e Set-Mailbox onde passamos o parâmetro e valor para alterar
determinado usuário, mas como iremos fazer para uma série de usuários?
Utilizando pipes, então vamos a sintaxe dos comandos a serem utilizados.
Get-Mailbox | set-mailbox
-MaxSendSize 5MB
Onde toda saída do get-mailbox, ou seja, todas as mailboxes
terão o atributo MaxSendSize alterado para 5MB
Get-Mailbox | select
Name,MaxReceiveSize,MaxSendSize
Do resultado de get-mailbox estaremos selecionando somente os
atributos Name,MaxReceiveSize,MaxSendSize na tela.

Como alterar todos usuários com determinado atributo?
Um ponto
interessante no gerenciamento de usuários/mailboxes é que as informações
ficam em locais separados, todas informações relacionadas aos usuários
ficam no Active Directory e podemos recuperá-las através do comando
get-user e outras através do get-mailbox. Mas os dados
mostrados são diferentes, abaixo podemos ver o resultado do get-user
onde são listados todos os usuários e o tipo de recipientes que eles são
(usermailbox, user) quando rodamos o get-mailbox são apresentandos
somente os usuários do tipo UserMailbox.

E quando
precisamos alterar um determinado atributo de todos usuários que
pertencem a determinado estado? precisamos unificar as saídas de
get-user e get-mailbox para termos o nosso resultado. Isto ocorre porque
o get-mailbox não traz informações relacionados ao usuário (departamento,
telefone, webpage, estado e etc..).
Para isto
precisamos unficar ambos, para começar vamos rodar o get-user listando
somente os do tipo userMailbox, para tanto devemos rodar o seguinte
cmdlet:
Get-User | Where-Object {
$_RecipientType -eq "UserMailbox" }
Onde, o resultado de get-user será filtrado através de
RecipientType para listar somente os UserMailbox

Agora que já
conseguimos listar somente os usuários que possuem caixa, precisamos
adicionar um "E" lógico e verificar também os que possuem como Estado a
palavra "RS", então utilizamos:
Get-User | Where-Object {
$_RecipientType -eq "UserMailbox" -and $_.StateorProvince -eq "RS"}
Estamos dizendo que da saída do get-user queremos todos que sejam
UserMailbox e também do tipo RS no campo Estado ou Província.

Agora baseado
no script acima, precisamos definir o atributo1 da caixa com o texto "alterado
by script", então devemos:
Get-User | Where-Object {
$_RecipientType -eq "UserMailbox" -and $_.StateorProvince -eq "RS"}
| Set-Mailbox -CustomAttribute1:"Alterado by Script!"
Com o resultdo do cmdlet estamos alterando o atributo chamado
CustomAttribute1 para o valor que definimos.

Agora se rodar
o cmdlet get-mailbox <user> | format-list, teremos o
resultado abaixo podemos perceber que em CustomAttribute1 consta com o
valor que acabamos de alterar.

E támbém
podemos olhar o mesmo atributo via Exchange Management Shell mostrando
que foi inserido o texto via Managemetn Shell corretamente.

Conclusão
Com este tutorial
mostramos como alterar um grande número de usuários utilizando o Exhange
Management Shell.
|