PowerShell e o dia a dia do DBA – X


Continuação X – Listar  Logins Novos

Todos os scripts eu criei um database chamado DBA no meu servidor central e um schema diario. As tabelas sermpre serão criadas neste schema e database.

Para todos os scripts, gerar um txt com os nomes dos servidores  envolvidos. Eu o chamei de servidores.txt e fica assim :

SERVER1\MSSQLSERVER_1
SERVER2\MSSQLSERVER_2
SERVER3\SQL2005

Os dois primeiros são 2008 e o terceiro 2005

Eu o gravo numa pasta chamada c:\dadosps, vocês irão ver esta chamada em todos os scripts

 

Continuando esta verificação não está linkada no checklist eu a coloquei pois um amigo que trabalha num grande DC pediu e são turnos de DBA´s e as vezes ele chega e perde tempo procurando logins novos.

Eu pego pela Data de Criação, todos que foram criados d-1 até o momento que é rodadado o script.

Criar Tabela no SQL SERVER

create table diario.tb_LoginsNovos( servidor varchar(50),
                                    data datetime,
                                    nomelogin varchar(50),
                                    Datacriacao datetime
                                   )

Script PS

 

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null

$Datas=(get-date).adddays(- 1).ToShortDateString()
$dataHojeInsert = get-date -format "yyyy-MM-dd hh:mm:ss"

##########################################################
#Atribui o Dabatase e Server central que receberão os dados
##########################################################

$ServidorCentral = "SERVER1\MSSQLSERVER_1"
$DatabaseCentral = "DBA"

$sql = "truncate table diario.tb_loginsnovos"
Invoke-Sqlcmd -ServerInstance $ServidorCentral -Database $DatabaseCentral -Query $sql

foreach ($svr in get-content "C:\dadosps\servidores.txt" )
{
   $data = ""
   $Servidor=New-Object "Microsoft.SqlServer.Management.Smo.Server" "$svr"
   $data = $Servidor.logins | where-object {$_.createdate.ToShortDateString() -ge $Datas  -and
   $_.isdisabled -eq $False -and $_.IsSystemObject -eq $FAlse  }  | foreach {
   $NomeLogin = $_.name
   $DataCriacao = [datetime] $_.createdate

   $sql = "set dateformat dmy insert into diario.tb_LoginsNovos(servidor,data,nomelogin,Datacriacao) values (‘$svr’,’$DataHojeInsert’,’$NomelOgin’,’$DataCriacao’)"
   Invoke-Sqlcmd -ServerInstance $ServidorCentral -Database $DatabaseCentral -Query $sql

   }

 

Abraços a todos

I´ll be back

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. Bookmark the permalink.

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