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

Sobre Marcos Freccia

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

Publicado em junho 13, 2013, em Administração, Dicas, Powershell, Scripts, SQL Server, VirtualPass e marcado como , , . Adicione o link aos favoritos. 2 Comentários.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: