Verificando databases de caixa de correio no Exchange 2007 e 2010

Olá pessoal, WindowsPowerShellQuem acompanha o meu trabalho sabe que este blog é um grande bloco de notas onde além de postar sobre eventos, novidades, notícias e assuntos atuais, eu também procuro abordar o que chamado mundo real, demonstrando situações e cenários legados, com produtos e soluções antigas e ambiente legados.

Pois bem, neste final de semana acessei ambiente de correio eletrônico com Microsoft Exchange 2007 com uma série de contas de e-mail com cotas no limite. Vou deixar listados alguns comandos Power Shell simples e úteis para navegação em contas de e-mail em diferentes databases do Exchange.

Para visualizar todos os databases da organização do Exchange:

Get-MailboxDatabase

Para visualizar toda as contas de e-mail em um determinado database:

GetMailboxDatabase “Database_Exemplo” | GetMailbox

Para visualizar todas as contas de e-mail de um database com informações sobre o limite e ultimo logon:

GetMailboxDatabase “Database_Exemplo” | GetMailboxStatistics

Para obter o mesmo resultado acima porém com maiores detalhes, como tamanho total ocupado:

GetMailboxDatabase “Database_Exemplo” | GetMailboxStatistics | Sort totalitemsize desc | ft displayname, totalitemsize, itemcount

Lembrando que ainda existem muitas empresas com ambientes legados e a TI não vive apenas de inovação, mas também deve manter o que já existe.

Identificando a localização dos databases do Exchange via PowerShell

Olá pessoal,

Deixo uma dica rápida para quem administra servidores Exchange Server. Estive em um cliente com Exchange 2010 e não havia documentação a respeito da localização dos databases. Como identificar o path via Power Shell?

Execute o Exchange Management Shell e em seguida o comando abaixo.

Get-MailboxDatabase -Status | select edbfilepath

exchangepsdatabases2

Exportar informações das impressoras no Windows utilizando PowerShell

Olá pessoal,

Eu tive uma necessidade em um cliente de obter as informações referentes às impressoras configuradas nas estações de trabalho com Windows. Utilizando o PowerShell, podemos obter essa informação de uma forma simples e ainda gerar um arquivo *.csv para documentação utilizando a sintaxe abaixo:

Get-Printer | select Name, DriverName, PortName

powershellprinters

Para gerar o arquivo *.csv para documentar as impressoras execute:

Get-Printer | select Name, DriverName, PortName | Export-Csv Impressoras.csv -NoTypeInformation

Para facilitar, salve a sintaxe em um arquivo (ex: impressoras.ps1) e guarde o script.

Exchange 2007- Visualização dos membros de uma Address List através do Exchange Management Shell

Olá pessoal,

exchangeps-logoapós um incidente em uma lista de endereços (Address List) no Exchange 2007 de um cliente, a mesma foi recriada e me foi solicitada uma lista com os membros pertencentes cujo procedimento eu descrevo abaixo.

Execute o Exchange Management Shell (All Programs – Microsoft Exchange Server 2007 – Exchange Management Shell)  e confirme o path da Address List através do comando, substituindo “INVENT-RJ” pelo nome correto.

Get-AddressList -Identity “INVENT-RJ” | fl DistinguishedName

Após a confirmação do path, para obter a lista com os membros desta AddressList execute o comando abaixo, usando como exemplo a lista “INVENT-RJ” e o domínio “invent.corp”

Get-Recipient -Filter {AddressListMembership -eq ‘CN=INVENT-RJ,CN=All Address Lists,CN=Address Lists Container,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=INVENT,DC=corp’}

Substitua com as informações da sua Address Lista e domínio corretos.

Até a próxima dica.

 

Exchange 2007/2010 – Verificando e limitando a cota para criação de regras no Outlook

Fui acionado nesta semana por um cliente que não estava conseguindo criar novas regras no Outlook 2010 sendo exibida a mensagem abaixo:

Outlook_Erro_Regras

Por padrão, no Exchange 2007/2010, estão disponíveis 64 KB por usuário para criação de regras, que pode ser expandido para até 256 KB.

Para verificar a cota atual para criação de regras em uma caixa postal, abra o Exchange Management Shell e execute:

Get-Mailbox paulo.santanna@inventit.com.br | FL displayname, rulesquota

Para definir 256 KB de cota para criação de regras para o e-mail paulo.santanna@inventit.com.br

set-mailbox paulo.santanna@inventit.com.br -rulesquota 256KB

Para obter uma lista com as cotas de todos os usuários para criação de regras, execute:

get-mailbox|fl rulesquota, alias

Caso o usuário tenha atingido o limite de cota (256 KB), a Microsoft recomenda alguns métodos, que envolve configurações no Outlook da máquina do usuário e que estão descritos no KB 886616.

Várias formas para listar os Compartilhamentos de rede de uma máquina Windows

Ola pessoal,

vou demonstrar abaixo 3 formas para listagem de compartilhamentos de rede em Máquinas Windows. Essa informação é bem relevante para saber onde um compartilhamento está armazenado ou para documentação do seu Servidor de Arquivos.

A primeira forma, mais simples, vai ser utilizando o comando NET SHARE

net share

Utilizando PowerShell, temos duas formas:

Via WMI, através do comando Get-WmiObject Win32_Share

Win32share

Para listar os compartilhamentos em um computador remoto utilize: Get-WmiObject Win32_Share -ComputerName Nome_do_Computador

Win32share2

Podemos obter a listagem também via cmdlet Get-SmbShare, para isso, antes execute Import-Module SmbShare para importar o módulo que contém esse cmdlet.

smbshare

Fica a dica com relação à listagem de compartilhamentos.

VMware PowerCli – Listando todas as informações de rede dos Hosts ESXi

Para documentar e obter as informações detalhadas de cada interface de rede dos hosts que compõem a infra VMware que você administra, podemos utilizar o PowerCli, utilizando o cmdlet “Get-VMHostNetworkAdaptor” facilitando assim a vida do Administrador de rede.

Abra o PowerCli e execute:

Get-VMHostNetworkAdapter | select VMhost, Name, IP, SubnetMask, Mac, PortGroupName, vMotionEnabled, mtu, FullDuplex, BitRatePerSec

Para exportar a saída do comando para um arquivo *.csv e prepara um relatório sobre, execute:

Get-VMHostNetworkAdapter | select VMhost, Name, IP, SubnetMask, Mac, PortGroupName, vMotionEnabled, mtu, FullDuplex, BitRatePerSec | Export-Csv C:\VMServersNetwork.csv

PowerShell – Descobrindo o usuário do domínio através do SID e vice versa

Mais uma dica bem legal de PowerShell para administradores de ambientes baseados em Windows.

Para descobrir um nome de usuário pertencente a um domínio Active Directory  através do seu SID (Security Identifier) execute:

$objSID = New-Object System.Security.Principal.SecurityIdentifier `
(“DIGITE-O-SID-AQUI”)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

Agora, para fazer ao contrário, tenho o nome do usuário do domínio e quero descobrir o SID desta conta, execute:

$objUser = New-Object System.Security.Principal.NTAccount(“NOME_DOMINIO”, “NOME_USUARIO”)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

Guardem esses scripts! Serão bastante úteis!

Listando as Subnets associadas a um site do AD via Script

Olá pessoal,

Através da ferramenta Active Directory Sites and Services é possivel realizar as configurações relacionadas a Sites e Subnets no Active Directory e também obter visualmente  as informações referentes.

Para fins de documentação, ainda mais se tratando de ambientes bem grandes com muitos sites, pode ser interessante utilizar um dos dois scripts (um vns e outro PowerShell) que compartilho com vocês para listar as subnets associadas a um determinado site (localidade) no AD.

O script abaixo é em vbs. Substitua Nome_do_Site pelo nome do site cuja informação você deseja obter. Salve o arquivo como ListaSubnets.vbs, por exemplo.

strSiteRDN = “cn=Nome_do_Site”

Set objRootDSE = GetObject(“LDAP://RootDSE”)
strConfigurationNC = objRootDSE.Get(“configurationNamingContext”)

strSitePath = “LDAP://” & strSiteRDN & “,cn=Sites,” & strConfigurationNC

Set objSite = GetObject(strSitePath)

objSite.GetInfoEx Array(“siteObjectBL”), 0
arrSiteObjectBL = objSite.GetEx(“siteObjectBL”)

WScript.Echo strSiteRDN & ” Subnets” & vbCrLf & _
String(Len(strSiteRDN) + 8, “-“)

For Each strSiteObjectBL In arrSiteObjectBL
WScript.Echo Split(Split(strSiteObjectBL, “,”)(0), “=”)(1)
Next

Abaixo compartilho outro que faz a mesmsa coisa, mas em PowerShell. Substitua Nome_do_Site pelo nome do site cuja informação você deseja obter. Salve o arquivo como ListaSubnets.ps1, por exemplo.

$siteName = “Nome_do_Site”
$configNCDN = (Get-ADRootDSE).ConfigurationNamingContext
$siteContainerDN = (“CN=Sites,” + $configNCDN)
$siteDN = “CN=” + $siteName + “,” + $siteContainerDN
$siteObj = Get-ADObject -Identity $siteDN -properties “siteObjectBL”, “description”, “location”
foreach ($subnetDN in $siteObj.siteObjectBL) {
Get-ADObject -Identity $subnetDN -properties “siteObject”, “description”, “location”
}

 Sem duvida alguma esses scripts vão auxiliar os amigos leitores nas tarefas diárias de administração do AD.

 

Identificando um objeto do AD através do SID utilizando PowerShell

Ola pessoal,

Compartilho com vocês mais um script útil para administradores do Active Directory. Digamos que por alguma razão você tenha o SID (Security Identifier) de um objeto do AD, como por exemplo, um usuário, computador ou grupo e precise saber o nome deste o objeto? Isso acontece, por exemplo, quando um objeto foi deletado e é necessário saber qual é. Outro exemplo, um servidor perde conectividade com o domínio e passa a exibir os nomes de usuários e grupos do dominio apenas pelo SID. Existem inúmeras situações.

Podemos obter essa informação utilizando o script PowerShel abaixo. Basta substituir o SID em negrito, pelo do objeto que você precisa descobrir o nome.

$objSID = New-Object System.Security.Principal.SecurityIdentifier `
(“S-1-5-21-235225456-1496787263-929701000-42105“)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value