SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Como Utilizar Windows Management Instrumentation com a
Linguagem VBScript
Lucas Vinícius dos Santos Assis1
, Patrick Vieira Brito e Silva1
1
Departamento de Tecnologia (DTEC) – Universidade Estadual de Feira de Santana (UEFS)
Feira de Santana – BA – Brazil
{lukas.ecomp, patrickecomp}@gmail.com
Abstract. This article discusses the WMI (Windows Management Instrumenta-
tion), a tool that allows software written in scripting languages, such as VBS-
cript, perform management and access to data from computer, servers or any
component element of a Windows network, whether local or remote, through a
standardized common format and simple. In the following sections will be pre-
sented the VBScript language, WMI and case study using standard WMI and
VBScript.
Resumo. O presente artigo aborda o WMI (Windows Management Instrumen-
tation), uma ferramenta que possibilita que softwares escritos em linguagens de
script, como o VBScript, realizem o gerenciamento e acesso a dados de com-
putadores, servidores ou qualquer elemento componente de uma rede Windows,
seja ele local ou remoto, através de um modelo comum padronizado e simples.
Nas seções seguintes serão apresentadas a linguagem VBScript, o padrão WMI
e estudo de casos utilizando WMI e VBScript.
1. Introdução
O sistema operacional (S.O) Windows é amplamente utilizado em todo o mundo, tanto
em computadores pessoais quanto em servidores empresariais. Devido a essa demanda,
a criação de software em ambiente Windows é muito requisitada mundialmente. Para
facilitar a execução de tarefas automatizadas com auxílio de scripts, o sistema operacional
Windows dispõe de uma linguagem interpretativa bastante popular, o VBScript.
A função da linguagem VBScript é resolver problemas específicos que demandam
ações de linguagem de script. Antes da existência dessa linguagem, a Microsoft utilizava
arquivos batch do DOS para resolver tais problemas. Com objetivo de melhorar a robustez
dos sistemas, a Microsoft substituiu arquivos batch do DOS por VBScript [COSTA 2007].
Além disso, a linguagem disponibiliza um conjunto de bibliotecas (Windows Ma-
nagement Instrumentations - WMI) de monitoramento e configuração de parte do sistema
Windows. Entre exemplos de recursos que podem ser manipulados estão: informações de
performance, configuração de drivers, informações sobre a BIOS, aplicativos instalados e
em processamento, logs de eventos, recursos de hardware, entre outros [COSTA 2007].
Dessa forma, softwares implementados através de VBScript utilizando WMI po-
dem resolver problemas que incluam obtenção de informações do S.O ou alteração de
parâmetros de componentes do sistema, como, por exemplo, uma aplicação que gerencia
arquivos verificando o espaço em disco do computador.
Este artigo é dividido nas seguintes seções: 2 - Linguagem VBScript: seção que
apresenta um breve resumo sobre a linguagem interpretativa VBScript; 3 - Padrão WMI
(Windows Management Instrumentations): seção onde o padrão WMI é detalhado e sua
interação com a linguagem VBScript é explicitada com auxílio de três estudos de caso
presentes na subseção 3.1 - Estudos de Caso Utilizando WMI e VBScript; 4 - Conclusão:
seção que apresenta as considerações finais do trabalho.
2. Linguagem VBScript
O VBScript é uma linguagem que se caracteriza como uma versão simplificada da lingua-
gem Visual Basic criada para ambientes Windows e destaca-se por sua simplicidade na
programação, apresentando assim grande popularidade.
A execução de scripts dessa linguagem pode ser realizada com o auxílio de diver-
sos interpretadores. Entre eles, na estação Windows, o wscript.exe e o cscript.exe são os
interpretadores para a execução pelo modo gráfico e linha de comando respectivamente.
Para executar o script, basta apenas acioná-lo como um programa executável comum do
Windows. Após isso, o Windows irá reconhecer a extensão do script ".vbs"e utilizar o
wscript para interpretar o script[COSTA 2007].
A figura 1 apresenta a execução de um script básica em VBScript. Esse script con-
tém apenas uma linha: wscript.echo "Oi Mundo!", que realiza a operação de impressão
na tela do texto contido entre aspas duplas
Figura 1. Exemplo básico de script.
A lista a seguir apresenta resumidamente algumas características técnicas presen-
tes na linguagem VBScript baseado em [COSTA 2007]. A linguagem:
• Permite a utiliza do símbolo especial, aspas simples (’), para demarcação de um
comentário de linha em seus scripts;
• Permite tipagem dinâmica, ou seja, variáveis nessa linguagem podem ser declara-
das sem determinação prévia de seu tipo;
• Possui estruturas condicionais do tipo: if - else e select case;
• Possui também: estruturas de repetição dos tipos: While, Do...Loop e for;
• Permite manipulação de arquivos através de objeto do tipo
FSO(FileSystemObjetc). Através desses objetos é possível a leitura, cria-
ção, alteração de diretório e exclusão de arquivos;
• Possui inúmeras funções próprias predefinidas que auxiliam o desenvolvedor, evi-
tando que este necessite recorrer a bibliotecas externas para programar;
• Permite programação orientada a objetos.
3. Padrão WMI (Windows Management Instrumentations)
O padrão WMI, do inglês Windows Management Instrumentation ou Instrumentação de
Gerenciamento do Windows, possibilita que linguagens de scripts, como o VBScript, ge-
renciem computadores, servidores e quaisquer elementos de uma rede Windows de forma
local e remota. Isso é possível graças ao WMI ser uma implementação da Microsoft, em
sistemas Windows, dos padrões Web-Based Enterprise Management (WBEM) e Com-
mon Information Model (CIM) da Distributed Management Task Force (DMTF) que es-
tabelecem um conjunto de especificações para o gerenciamento de informações em redes
empresariais [ROCHA 2003].
Com o WMI é estabelecido um modelo padronizado e simples de gerenciamento
de ambiente Windows que permite que outros softwares tenham acesso a qualquer dado
proveniente de qualquer fonte (placa de rede, HDs, outros programas, dentre outros) atra-
vés de um meio comum [ROCHA 2003]. Assim, os desenvolvedores não precisam mais
ter conhecimento de cada API (Application Programming Interface) fornecida pelo Win-
dows caso necessite de dados de diferentes componentes do sistema. Característica que
facilita o desenvolvimento de novos programas.
Diversos componentes e propriedades de sistemas Windows podem ser controla-
dos com auxílio do WMI, como por exemplo: recursos e configurações de hardware, in-
formações sobre desempenho e BIOS, impressoras, informações de log de eventos, dentre
outros [COSTA 2007].
O estudo da arquitetura do padrão WMI é necessário para o entendimento da in-
teração de componentes de uma rede Windows através dos scripts que possuem interna-
mente objetos que implementem esse padrão. Assim, na figura 2, onde é definida a árvore
dos elementos que compõem as camadas do WMI bem como a relação dessas camadas
com o Windows, nota-se que há uma interação entre o gerenciador de objetos WMI (WMI
Object Manager) e as classes da gestão de sistema (System Management) realizada para
que o primeiro possa enviar e receber dados para o repositório WMI, assim como para os
objetos dinâmicos suportados pelos provedores WMI (WMI providers) [MICROSOFT c].
Os provedores WMI permitem que sejam definidos dados de gestão bem como quais ope-
rações podem ser realizadas com esses dados, sendo que qualquer componente da rede
que necessite de gestão, como hardware, discos rígidos, conexões de rede e impresso-
ras podem possuir provedores específicos desenvolvidos [MICROSOFT d]. Os métodos,
propriedades, construtores, e outros membros da gestão de sistema são usados por formu-
lários Web e outras aplicações de gerenciamento. Algumas das aplicações "cliente"que
acessam dados através do WMI são formulários Windows, formulários Web, provedores
originais do WMI, dentre outros [MICROSOFT c].
Linguagens de scripts, como VBScript, podem ser utilizadas com auxílio de WMI
em sistemas Windows. Assim, estudos de caso envolvendo problemas com servidores
Windows são abordados na próxima seção deste artigo. Porém, um trecho de código
VBScript desse ser definido primeiro, pois este demonstra o comando necessário para ob-
tenção de acesso aos recursos do computador utilizado. A função getObject () retorna uma
instância de um objeto do pacote WMI, esse objeto é a base para obtenção de qualquer
outra informação do sistema analisado assim como o primeiro passo para a construção de
scripts em VBScript em associação com WMI.
Figura 2. Exemplo da arquitetura WMI
1 s e t wmiObject = getObject ( " winmgmts : " )
3.1. Estudos de Caso Utilizando WMI e VBScript
Abaixo são definidos três estudos que caso demonstrando como o uso de WMI em associ-
ação com scripts VBScript pode solucionar problemas reais em computadores domésticos
e servidores com Windows. Os estudos de caso seguem seguinte estrutura: apresentação
do problema a ser resolvido; apresentação de uma possível solução para o problema; de-
monstração do código fonte da solução; explicação das principais linhas componentes do
código fonte da solução.
Uma importante característica, recorrente em mais de um dos códigos de solução
dos estudos de caso abaixo, é a presença do caractere especial sublinhado "_"ao final
de algumas das linha dos scripts. A linguagem VBScriptt não suporta quebra de linha
automática, assim, torna-se necessário explicitar cada quebra de linha realizada com o
auxílio desse caractere.
3.1.1. Estudo de caso 1
Um analista de TI (Tecnologia da Informação) recebeu uma denúncia anônima de que
alguns logins de administrador e suas respectivas senhas foram roubadas do banco de
dados do servidor de pequeno porte da empresa em que trabalha antes da implantação
de criptografia nos dados da máquina. Para descobrir se essa denúncia era verdadeira,
todos os usuários administradores do sistema foram alertados para não estarem logados
no servidor analisado em determinados horários do dia, mais propensos ao ataque dos
"hackers", para verificação dos possíveis intrusos no sistema.
1 Option E x p l i c i t
2 Dim objWMIService , objComputer , colComputer , strComputer
3
4 strComputer = " . "
5
6 Set objWMIService = GetObject ( " winmgmts : " _
7 & " { impersonationLevel = impersonate } !   " _
8 & strComputer & "  r o o t  cimv2 " )
9
10 Set colComputer = objWMIService . ExecQuery _
11 ( " S e l e c t ∗ from Win32_ComputerSystem " )
12
13 For Each objComputer in colComputer
14 Wscript . Echo objComputer . UserName _
15 & " e s t a logado no sistema do t i p o : " _
16 & objComputer . SystemType
17 Next
A solução do problema é executada de maneira simples. O script em questão
realiza uma solicitação ao WMI de todos os usuários logados no sistema analisado no
momento em que este for executado. Após essa etapa, são exibidos, um por vez, o nome
de cada máquina analisada seguido do nome dos usuários nela logados e da arquitetura
do sistema. Assim, caso apareça algum usuário logado que não seja o analista de TI, uma
das possíveis contas roubadas será identificada.
O código fonte desse estudo de caso é baseado em uma solução apresentada em
[THOMAS 2010]. Na linha 1, a declaração explícita de todas as variáveis no script é
exigida [MICROSOFT a]. Essa declaração explícita ocorre na linha 2.
O comando Set objWMIService = GetObject("winmgmts:"& strComputer &
"rootcimv2") , presente das linhas 6 até 8 do script, é utilizado para obtenção de acesso
a todos os objetos WMI e suas propriedades e, com o acréscimo da linha da linha &
"{impersonationLevel=impersonate}! "_ , é adicionada permissão de segurança para
que o script possa verificar usuários logados em outras máquinas da rede.
Para obtenção de uma resposta rápida, o strComputer foi configurado para ".", ou
seja, máquina local. Caso seja necessária a consulta em máquina diferentes da rede, o
valor dessa variável deve ser alterado para o nome da máquina desejada.
O comando padrão do WMI para que o script VBScript execute um processo, pre-
sentes nas linhas 10 e 11, é: Set colComputer = objWMIService.ExecQuery _. O processo
iniciado nesse comando é uma busca em banco de dados de sistemas computacionais pre-
sentes da rede através da seleção realizada em Win32_ComputerSystem.
De cada sistema computacional extraído da consulta de banco de dados exempli-
ficada anteriormente, é impresso na tela o nome, o usuário logado e o tipo de sistema da
máquina analisada.
3.1.2. Estudo de caso 2
Um problema recorrente no servidor de uma determinada empresa fictícia está na falta de
monitoramento da quantidade de processos em execução, um fator que pode ser impor-
tante em servidores com baixa capacidade de processamento e memória. Em especifico,
o usuário administrador do servidor tem um interesse em ser notificado ao atingir mais de
200 processos em execução para fins particulares.
1
2 do
3 s e t WMI = GetObject ( "WinMgmts : " )
4 s e t objs = WMI. I n s t a n c e s O f ( " Win32_Process " ) ]
5
6 contador = 0
7 for each obj in objs
8
9 contador = contador + 1
10 next
11
12 i f contador >= Then
13 Wscript . Echo "O Usuario excedeu o l i m i t e "
14 end i f
15
16 w s c r i p t . Sleep 7000
17 loop
O código acima representa uma solução viável para o problema caso 2. O script
faz uma solicitação ao WMI de todos os processos em execução. Depois, analisa as
seguintes condições: caso o número de processos em execução for menor que 200, o pro-
cesso aguarda 7 segundos para fazer outra verificação. Caso contrário, o processo notifica
ao usuário que a servidor excedeu o limite de processos e também aguarda para outra nova
verificação. Na linha 3 e 4, ocorre a criação do objeto set WMI=GetObject("WinMgmts:")
que permite manusear dados do S.O e com este mesmo objeto obter um vetor dos proces-
sos em execução com o método .InstancesOf("Win32_Process").
3.1.3. Estudo de caso 3
Por último, um estudo de caso apresentado no livro [COSTA 2007], e com script de so-
lução levemente adaptado neste artigo, exemplifica perfeitamente o uso de tarefas em
VBScript utilizando contadores e a aplicação de WMI para extração de informações do
uso do processador do computador, segue a explicação do caso de uso:
Suspeita-se da presença de um vírus de computador em uma máquina Windows. O
principal "sintoma"que indica a presença do vírus é o gasto excessivo de processamento,
pois o vírus realiza um processo de quebra de senhas em outros computadores, o que
demanda alto uso do processador, na faixa de mais de 85% de seu poder de processamento
total. O script deve ser criado para indicar se o computador está ou não infectado com o
vírus em questão.
1
2 s e t objWMIService = getObject ( " winmgmts : " )
3
4 s e t o b j R e f r e s h e r = createObject ( " WbemScripting . Swbemrefresher " )
5
6 s e t o b j P r o c e s s o r = o b j R e f r e s h e r . AddEnum ( objWMIService , _
7 " Win32_PerfFormattedData_PerfOS_Processor " ) . o b j e c t S e t
8
9 o b j R e f r e s h e r . Refresh
10
11 v i o l a c o e s = 0
12
13 do
14 for each obj in o b j P r o c e s s o r
15 i f obj . PercentProcessorTime > 85 then
16 v i o l a c o e s = v i o l a c o e s + 1
17 e l s e
18 v i o l a c o e s = 0
19 end i f
20
21 i f v i o l a c o e s = 6 Then
22 Wscript . Echo " V e r i f i c a r o c o r r e n c i a de v i r u s " _
23 & vbnewLine _
24 & " Processo s u s p e i t o : " & obj . Name
25 v i o l a c o e s = 0
26 end i f
27 next
28
29 o b j R e f r e s h e r . Refresh
30 w s c r i p t . Sleep 5000
31
32 loop
A solução do problema envolve a utilização de objetos WMI para monitoramento do uso
do processador. Outro ponto a ser considerado é se o processo que o script acusará é
de fato o vírus procurado ou algum processo executado normalmente pelo computador.
Para isso serão realizadas verificações periódicas, espaçadas de 5 em 5 segundos, que
irão monitorar se um determinado processo "viola"o limite de 85% de uso do processador
(estabelecido anteriormente como resultante da execução do vírus) durante 30 segundos.
Caso essas condições sejam cumpridas, o processo, que terá seu nome acusado para o
usuário, é o vírus procurado.
Na linha 2, inicializa-se o objeto objWMIService para ser usado na obtenção dos
dados dos processos. Na linha 4, é criado o objeto que serve para atualizar os dados
obtidos dos processos a cada laço. A linha 6 é atribuído ao objeto responsável por atualizar
os dados a informação de que os dados que devem ser atualizados são os dos processos
[MICROSOFT b].
O laço iniciado na linha 14 é utilizado para percorrer os objetos WMI. A verifica-
ção se o uso do processador está acima dos 85% é feita na linha 15, chamando o atributo
PercentProcessorTime do objeto que representa o processo. Na linha 21, se o número de
vezes que o uso do processador passou 85% for igual a 6, uma notificação é enviada ao
usuário com o nome do processo suspeito.
Na linha 30, o método sleep "congela"o processamento do script por 5 segundos
(5000 milisegundos).
Nas linhas 9 e 29, o metódo Refresh é chamado pelo objeto objRefresher para
atualizar os dados dos processos.
4. Conclusão
O trabalho mostrou-se muito importante para demonstrar as diversas utilidades do padrão
WMI em sistemas Windows.
A característica mais marcante do padrão WMI é permitir ao desenvolvedor o
acesso a diversos dados e informações do sistema sem necessitar ter o conhecimento de
todas as APIs fornecidas pelo sistema operacional Windows, agilizando o processo de de-
senvolvimento e manutenção de códigos fonte, bem como a realização de portabilidade de
programas de outras plataformas, pois o padrão WMI é proveniente da iniciativa WBEM,
aplicada em diversos outros ambientes de desenvolvimento e sistemas operacionais.
Para trabalhos futuros de mesmo escopo, o acréscimo de mais estudos de caso
pode possibilitar a exemplificação de outras características importantes que demonstrem
diferentes usos de WMI com scripts VBScripts.
Referências
COSTA, D. (2007). Administração de redes com scripts : Bash Script, Python e VBScript.
Brasport, 1st edition.
MICROSOFT. Option explicit statement. https://msdn.microsoft.com/
en-us/library/bw9t3484(v=vs.84).aspx. Acesso em: 6 maio, 2016.
MICROSOFT. Refreshing wmi data in scripts. https://msdn.microsoft.com/
en-us/library/aa393026(v=vs.85).aspx. Acesso em: 7 maio, 2016.
MICROSOFT. Windows management instrumentation. https://msdn.
microsoft.com/en-us/library/aa394582(v=vs.85).aspx. Acesso
em: 6 maio, 2016.
MICROSOFT. Wmi providers. https://msdn.microsoft.com/en-us/
library/aa394570(v=vs.85).aspx. Acesso em: 6 maio, 2016.
ROCHA, N. R. (2003). Entendendo a camada wmi. http://www.devmedia.com.
br/entendendo-a-camada-wmi/651. Acesso em: 6 maio, 2016.
THOMAS, G. (2010). Wmi tutorial: Who is logged on at that compu-
ter? http://www.computerperformance.co.uk/vbscript/wmi_who_
logon.htm. Acesso em: 6 maio, 2016.

Mais conteúdo relacionado

Mais procurados

Aula 04 coneitos de auditoria de sistemas
Aula 04   coneitos de auditoria de sistemasAula 04   coneitos de auditoria de sistemas
Aula 04 coneitos de auditoria de sistemassorayaNadja
 
Memoria cache princípio da localidade
Memoria cache   princípio da localidadeMemoria cache   princípio da localidade
Memoria cache princípio da localidadeClaudia Costa
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasClayton de Almeida Souza
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Documentação da infraestrutura de rede
Documentação da infraestrutura de redeDocumentação da infraestrutura de rede
Documentação da infraestrutura de redeMarcos Monteiro
 
Comutação de Rede Local.pdf
Comutação de Rede Local.pdfComutação de Rede Local.pdf
Comutação de Rede Local.pdfOs Fantasmas !
 
Arquitetura de Computadores: Sistemas de numeração
Arquitetura de Computadores: Sistemas de numeraçãoArquitetura de Computadores: Sistemas de numeração
Arquitetura de Computadores: Sistemas de numeraçãoAlex Camargo
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCLuiz Ricardo Silva
 
Sistemas Operacionais Desktop e Aplicativos.pdf
Sistemas Operacionais Desktop e Aplicativos.pdfSistemas Operacionais Desktop e Aplicativos.pdf
Sistemas Operacionais Desktop e Aplicativos.pdfOs Fantasmas !
 
Instalação de Redes Locais.pdf
Instalação de Redes Locais.pdfInstalação de Redes Locais.pdf
Instalação de Redes Locais.pdfOs Fantasmas !
 
Why Data Virtualization? An Introduction
Why Data Virtualization? An IntroductionWhy Data Virtualization? An Introduction
Why Data Virtualization? An IntroductionDenodo
 
Sistemas de Gerenciamento de Conteúdo
Sistemas de Gerenciamento de ConteúdoSistemas de Gerenciamento de Conteúdo
Sistemas de Gerenciamento de ConteúdoTiago Celestino
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 

Mais procurados (20)

Sistemas para Gerência da Informação PIMS/MES
Sistemas para Gerência da Informação PIMS/MESSistemas para Gerência da Informação PIMS/MES
Sistemas para Gerência da Informação PIMS/MES
 
Aula 04 coneitos de auditoria de sistemas
Aula 04   coneitos de auditoria de sistemasAula 04   coneitos de auditoria de sistemas
Aula 04 coneitos de auditoria de sistemas
 
Memoria cache princípio da localidade
Memoria cache   princípio da localidadeMemoria cache   princípio da localidade
Memoria cache princípio da localidade
 
Metadata Primer
Metadata PrimerMetadata Primer
Metadata Primer
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
 
UML - parte 1
UML - parte 1UML - parte 1
UML - parte 1
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Documentação da infraestrutura de rede
Documentação da infraestrutura de redeDocumentação da infraestrutura de rede
Documentação da infraestrutura de rede
 
Comutação de Rede Local.pdf
Comutação de Rede Local.pdfComutação de Rede Local.pdf
Comutação de Rede Local.pdf
 
Arquitetura de Computadores: Sistemas de numeração
Arquitetura de Computadores: Sistemas de numeraçãoArquitetura de Computadores: Sistemas de numeração
Arquitetura de Computadores: Sistemas de numeração
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 
Sistemas Operacionais Desktop e Aplicativos.pdf
Sistemas Operacionais Desktop e Aplicativos.pdfSistemas Operacionais Desktop e Aplicativos.pdf
Sistemas Operacionais Desktop e Aplicativos.pdf
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệpXây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
 
Instalação de Redes Locais.pdf
Instalação de Redes Locais.pdfInstalação de Redes Locais.pdf
Instalação de Redes Locais.pdf
 
Apresentação sobre ipv6
Apresentação sobre ipv6Apresentação sobre ipv6
Apresentação sobre ipv6
 
Why Data Virtualization? An Introduction
Why Data Virtualization? An IntroductionWhy Data Virtualization? An Introduction
Why Data Virtualization? An Introduction
 
Redes e Manutenção de Computadores
Redes e Manutenção de ComputadoresRedes e Manutenção de Computadores
Redes e Manutenção de Computadores
 
Sistemas de Gerenciamento de Conteúdo
Sistemas de Gerenciamento de ConteúdoSistemas de Gerenciamento de Conteúdo
Sistemas de Gerenciamento de Conteúdo
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 

Semelhante a Gerenciando Windows com VBScript e WMI

Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.netleojr_0
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...tdc-globalcode
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...Marcelo Palladino
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...tdc-globalcode
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioGeovani Ferreira Gonçalves
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Laís Vidal
 
Windows Vista - Arthur Duarte Rosa - Henrique Bueno
Windows Vista - Arthur Duarte Rosa - Henrique BuenoWindows Vista - Arthur Duarte Rosa - Henrique Bueno
Windows Vista - Arthur Duarte Rosa - Henrique BuenoAnderson Favaro
 
Apostila manual completo - windows-script-host
Apostila   manual completo - windows-script-hostApostila   manual completo - windows-script-host
Apostila manual completo - windows-script-hostRogerio Pereira
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1michellobo
 
Palestra de Windows Server 2016
Palestra de Windows Server 2016Palestra de Windows Server 2016
Palestra de Windows Server 2016Fábio dos Reis
 
Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaElvis Fusco
 
Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Felipe Pimentel
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Javalimadavi
 

Semelhante a Gerenciando Windows com VBScript e WMI (20)

Plataforma .Net
Plataforma .NetPlataforma .Net
Plataforma .Net
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
 
722
722722
722
 
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual Studio
 
Microsoft .NET Framework
Microsoft .NET FrameworkMicrosoft .NET Framework
Microsoft .NET Framework
 
2006 - ASP.NET.ppt
2006 - ASP.NET.ppt2006 - ASP.NET.ppt
2006 - ASP.NET.ppt
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
Windows Vista - Arthur Duarte Rosa - Henrique Bueno
Windows Vista - Arthur Duarte Rosa - Henrique BuenoWindows Vista - Arthur Duarte Rosa - Henrique Bueno
Windows Vista - Arthur Duarte Rosa - Henrique Bueno
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Conisli
ConisliConisli
Conisli
 
Apostila manual completo - windows-script-host
Apostila   manual completo - windows-script-hostApostila   manual completo - windows-script-host
Apostila manual completo - windows-script-host
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1
 
Joomla
JoomlaJoomla
Joomla
 
Palestra de Windows Server 2016
Palestra de Windows Server 2016Palestra de Windows Server 2016
Palestra de Windows Server 2016
 
Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC Marília
 
Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 

Mais de Lucas Vinícius

A Evolução das Distribuições de SistemaOperacional Linux Patrocinados pela Em...
A Evolução das Distribuições de SistemaOperacional Linux Patrocinados pela Em...A Evolução das Distribuições de SistemaOperacional Linux Patrocinados pela Em...
A Evolução das Distribuições de SistemaOperacional Linux Patrocinados pela Em...Lucas Vinícius
 
Probabilidade e estatística - Variáveis Aleatórias
Probabilidade e estatística - Variáveis AleatóriasProbabilidade e estatística - Variáveis Aleatórias
Probabilidade e estatística - Variáveis AleatóriasLucas Vinícius
 
A robustez de circuitos sequenciais
A robustez de circuitos sequenciaisA robustez de circuitos sequenciais
A robustez de circuitos sequenciaisLucas Vinícius
 
Definição de marketing e suas implicações
Definição de marketing e suas implicaçõesDefinição de marketing e suas implicações
Definição de marketing e suas implicaçõesLucas Vinícius
 
Teorias da aprendizagem de Piaget: equilibração e fases de aprendizagem
Teorias da aprendizagem de Piaget: equilibração e fases de aprendizagemTeorias da aprendizagem de Piaget: equilibração e fases de aprendizagem
Teorias da aprendizagem de Piaget: equilibração e fases de aprendizagemLucas Vinícius
 
Gerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMGerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMLucas Vinícius
 
Ruído em higiene e segurança no trabalho
Ruído em  higiene e segurança no trabalhoRuído em  higiene e segurança no trabalho
Ruído em higiene e segurança no trabalhoLucas Vinícius
 
Rethinking main memory oltp recovery
Rethinking main memory oltp recoveryRethinking main memory oltp recovery
Rethinking main memory oltp recoveryLucas Vinícius
 
Gerenciamento de processos Linux
Gerenciamento de processos LinuxGerenciamento de processos Linux
Gerenciamento de processos LinuxLucas Vinícius
 
Problemas clássicos de comunicação interprocessos
Problemas clássicos de comunicação interprocessosProblemas clássicos de comunicação interprocessos
Problemas clássicos de comunicação interprocessosLucas Vinícius
 
Prevenção, proteção e combate ao incêndio de classe A
Prevenção, proteção e combate ao incêndio de classe APrevenção, proteção e combate ao incêndio de classe A
Prevenção, proteção e combate ao incêndio de classe ALucas Vinícius
 
Fases do desenvolvimento de acordo com a Teoria de Freud
Fases do desenvolvimento  de acordo com a Teoria de FreudFases do desenvolvimento  de acordo com a Teoria de Freud
Fases do desenvolvimento de acordo com a Teoria de FreudLucas Vinícius
 
Telefone sem fio - um problema de má comunicação
Telefone sem fio - um problema de má comunicaçãoTelefone sem fio - um problema de má comunicação
Telefone sem fio - um problema de má comunicaçãoLucas Vinícius
 
Pesquisas envolvendo seres humanos
Pesquisas envolvendo seres humanosPesquisas envolvendo seres humanos
Pesquisas envolvendo seres humanosLucas Vinícius
 
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallComplexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallLucas Vinícius
 
Introdução a Simulação de redes Sensores sem fio com Castalia
Introdução a Simulação de redes Sensores sem fio com CastaliaIntrodução a Simulação de redes Sensores sem fio com Castalia
Introdução a Simulação de redes Sensores sem fio com CastaliaLucas Vinícius
 

Mais de Lucas Vinícius (17)

A Evolução das Distribuições de SistemaOperacional Linux Patrocinados pela Em...
A Evolução das Distribuições de SistemaOperacional Linux Patrocinados pela Em...A Evolução das Distribuições de SistemaOperacional Linux Patrocinados pela Em...
A Evolução das Distribuições de SistemaOperacional Linux Patrocinados pela Em...
 
Probabilidade e estatística - Variáveis Aleatórias
Probabilidade e estatística - Variáveis AleatóriasProbabilidade e estatística - Variáveis Aleatórias
Probabilidade e estatística - Variáveis Aleatórias
 
A robustez de circuitos sequenciais
A robustez de circuitos sequenciaisA robustez de circuitos sequenciais
A robustez de circuitos sequenciais
 
Definição de marketing e suas implicações
Definição de marketing e suas implicaçõesDefinição de marketing e suas implicações
Definição de marketing e suas implicações
 
Teorias da aprendizagem de Piaget: equilibração e fases de aprendizagem
Teorias da aprendizagem de Piaget: equilibração e fases de aprendizagemTeorias da aprendizagem de Piaget: equilibração e fases de aprendizagem
Teorias da aprendizagem de Piaget: equilibração e fases de aprendizagem
 
Behaviorismo de Skinner
Behaviorismo de SkinnerBehaviorismo de Skinner
Behaviorismo de Skinner
 
Gerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMGerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUM
 
Ruído em higiene e segurança no trabalho
Ruído em  higiene e segurança no trabalhoRuído em  higiene e segurança no trabalho
Ruído em higiene e segurança no trabalho
 
Rethinking main memory oltp recovery
Rethinking main memory oltp recoveryRethinking main memory oltp recovery
Rethinking main memory oltp recovery
 
Gerenciamento de processos Linux
Gerenciamento de processos LinuxGerenciamento de processos Linux
Gerenciamento de processos Linux
 
Problemas clássicos de comunicação interprocessos
Problemas clássicos de comunicação interprocessosProblemas clássicos de comunicação interprocessos
Problemas clássicos de comunicação interprocessos
 
Prevenção, proteção e combate ao incêndio de classe A
Prevenção, proteção e combate ao incêndio de classe APrevenção, proteção e combate ao incêndio de classe A
Prevenção, proteção e combate ao incêndio de classe A
 
Fases do desenvolvimento de acordo com a Teoria de Freud
Fases do desenvolvimento  de acordo com a Teoria de FreudFases do desenvolvimento  de acordo com a Teoria de Freud
Fases do desenvolvimento de acordo com a Teoria de Freud
 
Telefone sem fio - um problema de má comunicação
Telefone sem fio - um problema de má comunicaçãoTelefone sem fio - um problema de má comunicação
Telefone sem fio - um problema de má comunicação
 
Pesquisas envolvendo seres humanos
Pesquisas envolvendo seres humanosPesquisas envolvendo seres humanos
Pesquisas envolvendo seres humanos
 
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallComplexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
 
Introdução a Simulação de redes Sensores sem fio com Castalia
Introdução a Simulação de redes Sensores sem fio com CastaliaIntrodução a Simulação de redes Sensores sem fio com Castalia
Introdução a Simulação de redes Sensores sem fio com Castalia
 

Gerenciando Windows com VBScript e WMI

  • 1. Como Utilizar Windows Management Instrumentation com a Linguagem VBScript Lucas Vinícius dos Santos Assis1 , Patrick Vieira Brito e Silva1 1 Departamento de Tecnologia (DTEC) – Universidade Estadual de Feira de Santana (UEFS) Feira de Santana – BA – Brazil {lukas.ecomp, patrickecomp}@gmail.com Abstract. This article discusses the WMI (Windows Management Instrumenta- tion), a tool that allows software written in scripting languages, such as VBS- cript, perform management and access to data from computer, servers or any component element of a Windows network, whether local or remote, through a standardized common format and simple. In the following sections will be pre- sented the VBScript language, WMI and case study using standard WMI and VBScript. Resumo. O presente artigo aborda o WMI (Windows Management Instrumen- tation), uma ferramenta que possibilita que softwares escritos em linguagens de script, como o VBScript, realizem o gerenciamento e acesso a dados de com- putadores, servidores ou qualquer elemento componente de uma rede Windows, seja ele local ou remoto, através de um modelo comum padronizado e simples. Nas seções seguintes serão apresentadas a linguagem VBScript, o padrão WMI e estudo de casos utilizando WMI e VBScript. 1. Introdução O sistema operacional (S.O) Windows é amplamente utilizado em todo o mundo, tanto em computadores pessoais quanto em servidores empresariais. Devido a essa demanda, a criação de software em ambiente Windows é muito requisitada mundialmente. Para facilitar a execução de tarefas automatizadas com auxílio de scripts, o sistema operacional Windows dispõe de uma linguagem interpretativa bastante popular, o VBScript. A função da linguagem VBScript é resolver problemas específicos que demandam ações de linguagem de script. Antes da existência dessa linguagem, a Microsoft utilizava arquivos batch do DOS para resolver tais problemas. Com objetivo de melhorar a robustez dos sistemas, a Microsoft substituiu arquivos batch do DOS por VBScript [COSTA 2007]. Além disso, a linguagem disponibiliza um conjunto de bibliotecas (Windows Ma- nagement Instrumentations - WMI) de monitoramento e configuração de parte do sistema Windows. Entre exemplos de recursos que podem ser manipulados estão: informações de performance, configuração de drivers, informações sobre a BIOS, aplicativos instalados e em processamento, logs de eventos, recursos de hardware, entre outros [COSTA 2007]. Dessa forma, softwares implementados através de VBScript utilizando WMI po- dem resolver problemas que incluam obtenção de informações do S.O ou alteração de parâmetros de componentes do sistema, como, por exemplo, uma aplicação que gerencia arquivos verificando o espaço em disco do computador.
  • 2. Este artigo é dividido nas seguintes seções: 2 - Linguagem VBScript: seção que apresenta um breve resumo sobre a linguagem interpretativa VBScript; 3 - Padrão WMI (Windows Management Instrumentations): seção onde o padrão WMI é detalhado e sua interação com a linguagem VBScript é explicitada com auxílio de três estudos de caso presentes na subseção 3.1 - Estudos de Caso Utilizando WMI e VBScript; 4 - Conclusão: seção que apresenta as considerações finais do trabalho. 2. Linguagem VBScript O VBScript é uma linguagem que se caracteriza como uma versão simplificada da lingua- gem Visual Basic criada para ambientes Windows e destaca-se por sua simplicidade na programação, apresentando assim grande popularidade. A execução de scripts dessa linguagem pode ser realizada com o auxílio de diver- sos interpretadores. Entre eles, na estação Windows, o wscript.exe e o cscript.exe são os interpretadores para a execução pelo modo gráfico e linha de comando respectivamente. Para executar o script, basta apenas acioná-lo como um programa executável comum do Windows. Após isso, o Windows irá reconhecer a extensão do script ".vbs"e utilizar o wscript para interpretar o script[COSTA 2007]. A figura 1 apresenta a execução de um script básica em VBScript. Esse script con- tém apenas uma linha: wscript.echo "Oi Mundo!", que realiza a operação de impressão na tela do texto contido entre aspas duplas Figura 1. Exemplo básico de script. A lista a seguir apresenta resumidamente algumas características técnicas presen- tes na linguagem VBScript baseado em [COSTA 2007]. A linguagem: • Permite a utiliza do símbolo especial, aspas simples (’), para demarcação de um comentário de linha em seus scripts; • Permite tipagem dinâmica, ou seja, variáveis nessa linguagem podem ser declara- das sem determinação prévia de seu tipo; • Possui estruturas condicionais do tipo: if - else e select case; • Possui também: estruturas de repetição dos tipos: While, Do...Loop e for; • Permite manipulação de arquivos através de objeto do tipo FSO(FileSystemObjetc). Através desses objetos é possível a leitura, cria- ção, alteração de diretório e exclusão de arquivos; • Possui inúmeras funções próprias predefinidas que auxiliam o desenvolvedor, evi- tando que este necessite recorrer a bibliotecas externas para programar; • Permite programação orientada a objetos.
  • 3. 3. Padrão WMI (Windows Management Instrumentations) O padrão WMI, do inglês Windows Management Instrumentation ou Instrumentação de Gerenciamento do Windows, possibilita que linguagens de scripts, como o VBScript, ge- renciem computadores, servidores e quaisquer elementos de uma rede Windows de forma local e remota. Isso é possível graças ao WMI ser uma implementação da Microsoft, em sistemas Windows, dos padrões Web-Based Enterprise Management (WBEM) e Com- mon Information Model (CIM) da Distributed Management Task Force (DMTF) que es- tabelecem um conjunto de especificações para o gerenciamento de informações em redes empresariais [ROCHA 2003]. Com o WMI é estabelecido um modelo padronizado e simples de gerenciamento de ambiente Windows que permite que outros softwares tenham acesso a qualquer dado proveniente de qualquer fonte (placa de rede, HDs, outros programas, dentre outros) atra- vés de um meio comum [ROCHA 2003]. Assim, os desenvolvedores não precisam mais ter conhecimento de cada API (Application Programming Interface) fornecida pelo Win- dows caso necessite de dados de diferentes componentes do sistema. Característica que facilita o desenvolvimento de novos programas. Diversos componentes e propriedades de sistemas Windows podem ser controla- dos com auxílio do WMI, como por exemplo: recursos e configurações de hardware, in- formações sobre desempenho e BIOS, impressoras, informações de log de eventos, dentre outros [COSTA 2007]. O estudo da arquitetura do padrão WMI é necessário para o entendimento da in- teração de componentes de uma rede Windows através dos scripts que possuem interna- mente objetos que implementem esse padrão. Assim, na figura 2, onde é definida a árvore dos elementos que compõem as camadas do WMI bem como a relação dessas camadas com o Windows, nota-se que há uma interação entre o gerenciador de objetos WMI (WMI Object Manager) e as classes da gestão de sistema (System Management) realizada para que o primeiro possa enviar e receber dados para o repositório WMI, assim como para os objetos dinâmicos suportados pelos provedores WMI (WMI providers) [MICROSOFT c]. Os provedores WMI permitem que sejam definidos dados de gestão bem como quais ope- rações podem ser realizadas com esses dados, sendo que qualquer componente da rede que necessite de gestão, como hardware, discos rígidos, conexões de rede e impresso- ras podem possuir provedores específicos desenvolvidos [MICROSOFT d]. Os métodos, propriedades, construtores, e outros membros da gestão de sistema são usados por formu- lários Web e outras aplicações de gerenciamento. Algumas das aplicações "cliente"que acessam dados através do WMI são formulários Windows, formulários Web, provedores originais do WMI, dentre outros [MICROSOFT c]. Linguagens de scripts, como VBScript, podem ser utilizadas com auxílio de WMI em sistemas Windows. Assim, estudos de caso envolvendo problemas com servidores Windows são abordados na próxima seção deste artigo. Porém, um trecho de código VBScript desse ser definido primeiro, pois este demonstra o comando necessário para ob- tenção de acesso aos recursos do computador utilizado. A função getObject () retorna uma instância de um objeto do pacote WMI, esse objeto é a base para obtenção de qualquer outra informação do sistema analisado assim como o primeiro passo para a construção de scripts em VBScript em associação com WMI.
  • 4. Figura 2. Exemplo da arquitetura WMI 1 s e t wmiObject = getObject ( " winmgmts : " ) 3.1. Estudos de Caso Utilizando WMI e VBScript Abaixo são definidos três estudos que caso demonstrando como o uso de WMI em associ- ação com scripts VBScript pode solucionar problemas reais em computadores domésticos e servidores com Windows. Os estudos de caso seguem seguinte estrutura: apresentação do problema a ser resolvido; apresentação de uma possível solução para o problema; de- monstração do código fonte da solução; explicação das principais linhas componentes do código fonte da solução. Uma importante característica, recorrente em mais de um dos códigos de solução dos estudos de caso abaixo, é a presença do caractere especial sublinhado "_"ao final de algumas das linha dos scripts. A linguagem VBScriptt não suporta quebra de linha automática, assim, torna-se necessário explicitar cada quebra de linha realizada com o auxílio desse caractere. 3.1.1. Estudo de caso 1 Um analista de TI (Tecnologia da Informação) recebeu uma denúncia anônima de que alguns logins de administrador e suas respectivas senhas foram roubadas do banco de dados do servidor de pequeno porte da empresa em que trabalha antes da implantação de criptografia nos dados da máquina. Para descobrir se essa denúncia era verdadeira, todos os usuários administradores do sistema foram alertados para não estarem logados no servidor analisado em determinados horários do dia, mais propensos ao ataque dos "hackers", para verificação dos possíveis intrusos no sistema.
  • 5. 1 Option E x p l i c i t 2 Dim objWMIService , objComputer , colComputer , strComputer 3 4 strComputer = " . " 5 6 Set objWMIService = GetObject ( " winmgmts : " _ 7 & " { impersonationLevel = impersonate } ! " _ 8 & strComputer & " r o o t cimv2 " ) 9 10 Set colComputer = objWMIService . ExecQuery _ 11 ( " S e l e c t ∗ from Win32_ComputerSystem " ) 12 13 For Each objComputer in colComputer 14 Wscript . Echo objComputer . UserName _ 15 & " e s t a logado no sistema do t i p o : " _ 16 & objComputer . SystemType 17 Next A solução do problema é executada de maneira simples. O script em questão realiza uma solicitação ao WMI de todos os usuários logados no sistema analisado no momento em que este for executado. Após essa etapa, são exibidos, um por vez, o nome de cada máquina analisada seguido do nome dos usuários nela logados e da arquitetura do sistema. Assim, caso apareça algum usuário logado que não seja o analista de TI, uma das possíveis contas roubadas será identificada. O código fonte desse estudo de caso é baseado em uma solução apresentada em [THOMAS 2010]. Na linha 1, a declaração explícita de todas as variáveis no script é exigida [MICROSOFT a]. Essa declaração explícita ocorre na linha 2. O comando Set objWMIService = GetObject("winmgmts:"& strComputer & "rootcimv2") , presente das linhas 6 até 8 do script, é utilizado para obtenção de acesso a todos os objetos WMI e suas propriedades e, com o acréscimo da linha da linha & "{impersonationLevel=impersonate}! "_ , é adicionada permissão de segurança para que o script possa verificar usuários logados em outras máquinas da rede. Para obtenção de uma resposta rápida, o strComputer foi configurado para ".", ou seja, máquina local. Caso seja necessária a consulta em máquina diferentes da rede, o valor dessa variável deve ser alterado para o nome da máquina desejada. O comando padrão do WMI para que o script VBScript execute um processo, pre- sentes nas linhas 10 e 11, é: Set colComputer = objWMIService.ExecQuery _. O processo iniciado nesse comando é uma busca em banco de dados de sistemas computacionais pre- sentes da rede através da seleção realizada em Win32_ComputerSystem. De cada sistema computacional extraído da consulta de banco de dados exempli- ficada anteriormente, é impresso na tela o nome, o usuário logado e o tipo de sistema da máquina analisada.
  • 6. 3.1.2. Estudo de caso 2 Um problema recorrente no servidor de uma determinada empresa fictícia está na falta de monitoramento da quantidade de processos em execução, um fator que pode ser impor- tante em servidores com baixa capacidade de processamento e memória. Em especifico, o usuário administrador do servidor tem um interesse em ser notificado ao atingir mais de 200 processos em execução para fins particulares. 1 2 do 3 s e t WMI = GetObject ( "WinMgmts : " ) 4 s e t objs = WMI. I n s t a n c e s O f ( " Win32_Process " ) ] 5 6 contador = 0 7 for each obj in objs 8 9 contador = contador + 1 10 next 11 12 i f contador >= Then 13 Wscript . Echo "O Usuario excedeu o l i m i t e " 14 end i f 15 16 w s c r i p t . Sleep 7000 17 loop O código acima representa uma solução viável para o problema caso 2. O script faz uma solicitação ao WMI de todos os processos em execução. Depois, analisa as seguintes condições: caso o número de processos em execução for menor que 200, o pro- cesso aguarda 7 segundos para fazer outra verificação. Caso contrário, o processo notifica ao usuário que a servidor excedeu o limite de processos e também aguarda para outra nova verificação. Na linha 3 e 4, ocorre a criação do objeto set WMI=GetObject("WinMgmts:") que permite manusear dados do S.O e com este mesmo objeto obter um vetor dos proces- sos em execução com o método .InstancesOf("Win32_Process"). 3.1.3. Estudo de caso 3 Por último, um estudo de caso apresentado no livro [COSTA 2007], e com script de so- lução levemente adaptado neste artigo, exemplifica perfeitamente o uso de tarefas em VBScript utilizando contadores e a aplicação de WMI para extração de informações do uso do processador do computador, segue a explicação do caso de uso: Suspeita-se da presença de um vírus de computador em uma máquina Windows. O principal "sintoma"que indica a presença do vírus é o gasto excessivo de processamento, pois o vírus realiza um processo de quebra de senhas em outros computadores, o que demanda alto uso do processador, na faixa de mais de 85% de seu poder de processamento total. O script deve ser criado para indicar se o computador está ou não infectado com o vírus em questão. 1 2 s e t objWMIService = getObject ( " winmgmts : " )
  • 7. 3 4 s e t o b j R e f r e s h e r = createObject ( " WbemScripting . Swbemrefresher " ) 5 6 s e t o b j P r o c e s s o r = o b j R e f r e s h e r . AddEnum ( objWMIService , _ 7 " Win32_PerfFormattedData_PerfOS_Processor " ) . o b j e c t S e t 8 9 o b j R e f r e s h e r . Refresh 10 11 v i o l a c o e s = 0 12 13 do 14 for each obj in o b j P r o c e s s o r 15 i f obj . PercentProcessorTime > 85 then 16 v i o l a c o e s = v i o l a c o e s + 1 17 e l s e 18 v i o l a c o e s = 0 19 end i f 20 21 i f v i o l a c o e s = 6 Then 22 Wscript . Echo " V e r i f i c a r o c o r r e n c i a de v i r u s " _ 23 & vbnewLine _ 24 & " Processo s u s p e i t o : " & obj . Name 25 v i o l a c o e s = 0 26 end i f 27 next 28 29 o b j R e f r e s h e r . Refresh 30 w s c r i p t . Sleep 5000 31 32 loop A solução do problema envolve a utilização de objetos WMI para monitoramento do uso do processador. Outro ponto a ser considerado é se o processo que o script acusará é de fato o vírus procurado ou algum processo executado normalmente pelo computador. Para isso serão realizadas verificações periódicas, espaçadas de 5 em 5 segundos, que irão monitorar se um determinado processo "viola"o limite de 85% de uso do processador (estabelecido anteriormente como resultante da execução do vírus) durante 30 segundos. Caso essas condições sejam cumpridas, o processo, que terá seu nome acusado para o usuário, é o vírus procurado. Na linha 2, inicializa-se o objeto objWMIService para ser usado na obtenção dos dados dos processos. Na linha 4, é criado o objeto que serve para atualizar os dados obtidos dos processos a cada laço. A linha 6 é atribuído ao objeto responsável por atualizar os dados a informação de que os dados que devem ser atualizados são os dos processos [MICROSOFT b]. O laço iniciado na linha 14 é utilizado para percorrer os objetos WMI. A verifica- ção se o uso do processador está acima dos 85% é feita na linha 15, chamando o atributo PercentProcessorTime do objeto que representa o processo. Na linha 21, se o número de vezes que o uso do processador passou 85% for igual a 6, uma notificação é enviada ao usuário com o nome do processo suspeito. Na linha 30, o método sleep "congela"o processamento do script por 5 segundos
  • 8. (5000 milisegundos). Nas linhas 9 e 29, o metódo Refresh é chamado pelo objeto objRefresher para atualizar os dados dos processos. 4. Conclusão O trabalho mostrou-se muito importante para demonstrar as diversas utilidades do padrão WMI em sistemas Windows. A característica mais marcante do padrão WMI é permitir ao desenvolvedor o acesso a diversos dados e informações do sistema sem necessitar ter o conhecimento de todas as APIs fornecidas pelo sistema operacional Windows, agilizando o processo de de- senvolvimento e manutenção de códigos fonte, bem como a realização de portabilidade de programas de outras plataformas, pois o padrão WMI é proveniente da iniciativa WBEM, aplicada em diversos outros ambientes de desenvolvimento e sistemas operacionais. Para trabalhos futuros de mesmo escopo, o acréscimo de mais estudos de caso pode possibilitar a exemplificação de outras características importantes que demonstrem diferentes usos de WMI com scripts VBScripts. Referências COSTA, D. (2007). Administração de redes com scripts : Bash Script, Python e VBScript. Brasport, 1st edition. MICROSOFT. Option explicit statement. https://msdn.microsoft.com/ en-us/library/bw9t3484(v=vs.84).aspx. Acesso em: 6 maio, 2016. MICROSOFT. Refreshing wmi data in scripts. https://msdn.microsoft.com/ en-us/library/aa393026(v=vs.85).aspx. Acesso em: 7 maio, 2016. MICROSOFT. Windows management instrumentation. https://msdn. microsoft.com/en-us/library/aa394582(v=vs.85).aspx. Acesso em: 6 maio, 2016. MICROSOFT. Wmi providers. https://msdn.microsoft.com/en-us/ library/aa394570(v=vs.85).aspx. Acesso em: 6 maio, 2016. ROCHA, N. R. (2003). Entendendo a camada wmi. http://www.devmedia.com. br/entendendo-a-camada-wmi/651. Acesso em: 6 maio, 2016. THOMAS, G. (2010). Wmi tutorial: Who is logged on at that compu- ter? http://www.computerperformance.co.uk/vbscript/wmi_who_ logon.htm. Acesso em: 6 maio, 2016.