Retornando contas de serviço via PowerShell

Olá Pessoal,

Meus skills de desenvolvedor são horriveis, mas me deparei com uma situação no trabalho aonde eu não poderia realizar tal tarefa manualmente, pois seria muito dificil e muito chato de realizar e partindo dessa ideia me surgiu então o PowerShell. Não preciso falar muito como o PowerShell ajuda no dia-a-dia de um Administrador de Banco de Dados, ou de qualquer outra tecnologia Microsoft.

Para SQL Server não preciso mencionar que se alguem quiser aprender sobre PowerShell o blog do Laerte Junior (Twitter|Blog) onde você encontra muita coisa boa. Voltando para o meu problema eu precisava realizar a seguinte tarefa.

Percorrer uma lista de servidores e retornar três informações.

  1. Nome do Servidor
  2. Nome do Serviço
  3. Conta de serviço atribuida.

Com algumas dicas do Laerte e também do Max Trinidad (Twitter|Blog) consegui desenvolver meu primeiro script em PowerShell.

$Servers = Get-Content 'C:\temp\Servers.txt'
$file = "C:\temp\ServiceAccountInformation.txt"

ForEach ($Server in $Servers) {
Get-WmiObject win32_service  -ComputerName $Server | where 
{$_.name -Match "MSSQL|SQLAgent|SQLSERVERAGENT" 
-AND $_.name -notmatch "Helper|Launcher"} | 
Select @{Label='Server Name' ; Expression = {$_.__Server}}, 
@{Label='Service Name' ; 
Expression = {$_.Name}}, @{Label='Service Account' ; 
Expression = {$_.StartName}} |
 Format-Table -Auto  | Out-File $file -Append
}

 

O script é bastante simples. Vamos a algumas explicações.

  • Você precisa o caminho do seu txt com a lista de servidores.

image

  • Você deverá colocar o nome dos servidores em uma unica coluna conforme a imagem acima.
  • Informar caminho de saída de seu script, ou seja, onde será armazenado o resultado.
  • -Match: Quais os tipos de valores que você quer buscar. O –Match funciona muito semelhantemente a um –Like, porem no -Match, você consegue especificar varios valores separados por “|”
  • -NoMatch: Quais os tipos de valores que deverão ser ignorados na busca. Funciona semelhantemente ao –notlike do PowerShell, porem no –NoMatch você consegue especificar varios valores separados por “|”

No resto do script estou apenas formatando a saida do resultado e inserindo em um arquivo .txt

O resultado esperado será como este logo abaixo.

image

Por enquanto esse script e o resultado está suprindo a minha necessidade, mas quem sabe futuramente irei muda-los para salvar em um arquivo excel.

Bom, espero que tenham gostado!

Abraços,
Marcos Freccia

Advertisements

About Marcos Freccia

MVP em SQL Server (Data Plataform) , especialista em SQL Server, e atualmente trabalhando com Microsoft Azure!

Posted on June 13, 2013, in Administração, Dicas, Powershell, Scripts, SQL Server, VirtualPass and tagged , , . Bookmark the permalink. 2 Comments.

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

%d bloggers like this: