Hey Powershell Eventing, me notifica quando… o Serviço do SQL Server parar ?


De volta, vamos lá..Essa é legal

Digamos que você queira saber quando o serviço do SQL Server, Agent, Browser, ou ate outro serviço qualquer pare. Ou até melhor, receba uma notificação com um balãozinho na task bar do windows.

Haaa.. e serviços remotos também..Da sua estação, um balaozinho dizendo que o serviço da instancia X no servidor N parou…Louco né… Vamos lá

Tudo começa trabalhando com WMI events.

Para um entendimento do que é WMI e WQL, sugiro ver esses posts do Jedi e amigo pessoal

Ravikanth Chaganti – WMI Query Language (WQL) – Event Queries: Introduction

Ou faça meu treinamento de Powershell Com SQL Server Alegre

Vamos la, primeiramente baixar o modulo de funções para exibir o ballon, que voçê encontra aqui

 Robertro Belo´s Blog – Sly PowerShell (Balloon tip notifications)

e colocar no seu User profile.

Após isso vamo aos fogos de artifício :

   1: Function Show-BallonNotification {

   2:     Param (

   3:         [Parameter(position=0,Mandatory = $true,ValueFromPipelinebyPropertyName = $true )][string] $ComputerName,

   4:         [Parameter(position=1,Mandatory = $true,ValueFromPipelinebyPropertyName = $true)] [string] $ServiceName

   5:     )

   6:     process {

   7:  

   8:         $pso = new-object psobject -property @{computername=$computername;ServiceName=$serviceName} 

   9:         Register-WMIEvent -ComputerName "$ComputerName" -Query "select * from __InstanceModificationEvent within 5 where TargetInstance ISA 'Win32_Service' and TargetInstance.Name='MSSQLSERVER' and TargetInstance.State='Stopped'" -Action { Import-Module c:\Windows\System32\WindowsPowerShell\v1.0\Modules\ShowBallonTip\ShowBalloonTip.psm1 -force; Show-BalloonTip "$($event.MessageData.ServiceName) Service Stops in $($event.MessageData.Computername)" }  -MessageData $pso

  10:     }

  11: }

Aonde o parametro :

  • ComputerName = Nome do computador
  • ServiceName = Nome do Serviço

Vamos la :

Quero colocar uma notificação se o serviço do SQL Server parar na minha maquina :

   1: Show-BallonNotification -ComputerName Vader -ServiceName "MSSQLSERVER"

Quero exibir a notificação na minha maquina, mas quando o serviço do servidor Server1 parar :

   1: Show-BallonNotification -ComputerName Server1 -ServiceName "MSSQLSERVER"

Duvida ? Para o serviço então.

Agora, podemos usar meu post anterior com a função  Get-SQLServerServiceInfo, desta maneira não preciso passar o nome do serviço caso eu tenha muitas instâncias e muitos servidores

Eu fiz uma pequena alteração na função para receber um novo parametro,

ServiceType : Tipo do serviço, Engine = SQL Server Engine, Agent = SQL Server Agent

Abaixo tem o link pra download :

Vamos lá :

Quero Colocar uma notficação em todos os serviços SQL Server do servidor Server1

   1: Get-SQLServerServiceInfo -computername Server1 -SQLServerInstance all -ServiceType engine | select ComputerName,ServiceName | Show-BallonNotification

Agora do Agent (so mudo o parametro servicetype pra agent)

   1: Get-SQLServerServiceInfo -computername Server1 -SQLServerInstance all -ServiceType engine | select ComputerName,ServiceName | Show-BallonNotification

So a instancia Inst1, Serviço Agent do Server2

   1: Get-SQLServerServiceInfo -ComputerName Server2 -SQLServerInstance Inst1 -ServiceType Agent | select ComputerName,ServiceName | Show-BallonNotification

Quero escalar pra minha lista de servidores pro serviço engine :

   1: "Server1", "Server2", "Server3" | Get-SQLServerServiceInfo  -SQLServerInstance all -ServiceType Agent | select ComputerName,ServiceName | Show-BallonNotification

ou ate se eu tiver uma lista dos servidores em txt :

   1: Get-Content c:\temp\servers.txt | Get-SQLServerServiceInfo  -SQLServerInstance Inst1 -ServiceType Agent | select ComputerName,ServiceName | Show-BallonNotification

Uma imagem vale por mil palavras :

image

 

Download Modulo Completo

Ta vendo o Balãozinho ali embaixo ?

Haaa..infelizmente quando restarta o server, ele perde este evento. Ruim ? Nããããõ, no meu proximo post eu ensino como fazer ele ficar Permanente Alegre

Can you see this ? Can you feel this ? Can you fell the Power ?

POWERSHELL ROCKS !!!

 

Why drink the water
from my hand?
Contagious as you think I am
Just tilt my sun towards
your domain.
Your cup runneth over again.

Don’t scream about
Don’t think aloud
Turn your head now baby
Just spit me out
Don’t worry about
Don’t speak of doubt
Turn your head now baby
Just spit me out

Why follow me to higher ground?
Lost as you swear I am.
Don’t throw away your basic needs,
Ambiance and vanity.

December promise you gave unto me
December whispers of treachery
December clouds are now covering me
December songs no longer I sing

December

Collective Soul

About Laerte Junior

Laerte Junior Laerte Junior is a SQL Server specialist and an active member of WW SQL Server and the Windows PowerShell community. He also is a huge Star Wars fan (yes, he has the Darth Vader´s Helmet with the voice changer). He has a passion for DC comics and living the simple life. "May The Force be with all of us"
This entry was posted in Powershell, SQL SERVER EM GERAL, Virtual Pass BR. Bookmark the permalink.

2 Responses to Hey Powershell Eventing, me notifica quando… o Serviço do SQL Server parar ?

  1. Eduardo says:

    Olá Laerte, antes de tudo sou fraldinha no SQL haha, não sei como passar do “Colocar no seu User profile.” poderia me falar como fazer? obrigado

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s