Visitantes

Script para monitoramento de Eventos em Servidores Windows




Script para monitoramento de Eventos em Servidores Windows

A ideia desse script é verificar nos Logs do Servidor a ocorrência de um evento especifico e caso tenha ocorrido ele enviará um e-mail informando, podemos também incluir a execução de algumas ações no script.

Campos que podem ser pesquisados:
$_.EntryType | $_.Message | $_.Source |$_.Time | $_.Index |$_.InstanceID
---------------------------------------------------------------------------------------------

O Comando abaixo executa um Seach nos logs do servidor verificando se ocorreu o evento no dia atual utilizando o parâmetro “(Get-Date).AddDays(-1)” (Esse parâmetro pode ser incrementado para pegar de outros dias);

Nesse caso estamos filtrando por uma parte da Mensagem e também pelo Source do evento,podemos também fazer outras pesquisas usando os campos citados acima ;

Inicio do SCRIPT - Copie e cole em um arquivo e o Salve como .ps1

#-----------------------------------------------------------------------------------------------------------

$Result=Get-EventLog application -After (Get-Date).AddDays(-1) | where { $_.Message -match "Processing completed*" -and $_.Source -match "XXXXX Service"} # "XXXX Service" = Nome do Serviço

# Faz uma contagem de quantos eventos foram encontrados com a busca
$result=$result.count

Se o resultado acima for 0 ou “ ” então será enviada a mensagem de que está tudo bem, caso contrario enviará a MSG que houve problema ou podemos aqui se necessario executar algum script ou comando.

If ($result -gt 0)
  {

   $emailbody = 'Verificação XXXXX -  Executada com sucesso!'

  }

Else
  { 

  $emailbody = 'ATENCAO!!! Verifique o sistema XXXXX no Servidor XXXXXXXX!!'

  }


###################### Envio de email #######################

    $SMTPserver = "seu.sevidordeSMTP"
    $from = "suporte@dominio"
    $to = "suporte@dominio"
    $subject = "Monitoramento do Serviço XXX "
    $mailer = new-object Net.Mail.SMTPclient($SMTPserver)
    $msg = new-object Net.Mail.MailMessage($from, $to, $subject, $emailbody)
    $mailer.send($msg)
#-----------------------------------------------------------------------------------------------------------


########################################################
# Operadores  
########################################################
#-eq  -> equals
#
#-ne  -> not equal
#
#-gt  -> greater than
#
#-ge  -> greater than or equal to
#
#-lt  -> less than
#
#-le  -> less than or equal to
#
#-like -> wildcard comparison
#
#-notlike -> wildcard comparison
#
#-match  -> regular expression comparison
#
#-notmatch -> regular expression comparison
########################################################
#     EVENTS
########################################################
#Application
#Security
#setup


#System

Espero ter ajudado e até a próxima....Qualquer duvida é só perguntar que tentarei ajudar.

Script para listar usuarios dos grupos do AD






Fala pessoal, segue abaixo um script bem util que lista os usuarios de cada grupo do AD e cria um arquivo CSV com o resultado.

#------------------------------------------------
# Script para Obter os usuarios dos grupos do AD
#------------------------------------------------
# Atualize o filtro baseado nos codigos abaixo
# -----------------------------------------------
# 2 Global distribution group
# 4 Domain local distribution group
# 8 Universal distribution group
# -2147483646 Global security group
# -2147483644 Domain local security group
# -2147483640 Universal security group
# http://portal.sivarajan.com/2010/08/list-group-members-in-active.html
#-------------------------------------------------

if(@(get-module | where-object {$_.Name -eq "ActiveDirectory"} ).count -eq 0) {import-module ActiveDirectory}

$OutPutFile = New-Item -type file -force "C:\GroupDetails.csv"

$ObjFilter = "(&(objectCategory=Group)(|(groupType=2)(groupType=4)(groupType=8)))"
$objSearch = New-Object System.DirectoryServices.DirectorySearcher
$objSearch.SearchRoot = "LDAP://dc=dominioad,DC=com" #Substitua pela raiz do dominio.
$objSearch.PageSize  = 10000
$objSearch.Filter = $ObjFilter

$Results = $objSearch.FindAll()

foreach ($Result in $Results){
      $Item = $Result.Properties
      Write-host $Item.cn
      $Item.cn | Out-File $OutPutFile -encoding ASCII -append

foreach ($Member in $Item.member){
        Write-host "$Member"
        $Member | Out-File $OutPutFile -encoding ASCII -append
}

  }