67
Script-Mania Parte 1 Script-Mania Parte 1 Como construir seus Como construir seus próprios scripts próprios scripts Vinicius Canto Vinicius Canto MVP Visual Developer – MVP Visual Developer – Scripting Scripting ICMC – USP ICMC – USP

Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Embed Size (px)

Citation preview

Page 1: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Script-Mania Parte 1Script-Mania Parte 1Como construir seus Como construir seus próprios scriptspróprios scripts

Vinicius CantoVinicius CantoMVP Visual Developer – ScriptingMVP Visual Developer – ScriptingICMC – USPICMC – USP

Page 2: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Sobre esta apresentaçãoSobre esta apresentação

Esta apresentação foi exibida Esta apresentação foi exibida inicialmente na primeira Scripting inicialmente na primeira Scripting Week do Technet ScriptcenterWeek do Technet Scriptcenter

Traduzida e adaptada por mim mesmoTraduzida e adaptada por mim mesmo

Primeira de três apresentações da Primeira de três apresentações da série de Webcasts sobre scripts do série de Webcasts sobre scripts do Technet BrasilTechnet Brasil

Duração de aproximadamente 45 Duração de aproximadamente 45 minutos + perguntasminutos + perguntas

Page 3: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Pré RequisitosPré Requisitos

Conhecimentos básicos em Conhecimentos básicos em administração de ambientes Windowsadministração de ambientes Windows

Atenção!Atenção!Se você já tem alguma experiência com Se você já tem alguma experiência com scripts, pode ser que este Webcast scripts, pode ser que este Webcast pareça muito fácil para você. O público-pareça muito fácil para você. O público-alvo deste Webcast são os iniciantes alvo deste Webcast são os iniciantes mesmomesmo

O mesmo vale para quem já participou do O mesmo vale para quem já participou do Scripting WeekScripting Week

Page 4: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Nesta série de Webcasts:Nesta série de Webcasts:HojeHoje

Introdução: Construindo seus próprios scriptsIntrodução: Construindo seus próprios scripts

31 de Outubro31 de OutubroCriando scripts para gerenciamento de arquivos Criando scripts para gerenciamento de arquivos e pastase pastas

7 de Novembro7 de NovembroEntrada e saída: como gerar arquivos texto, CSV, Entrada e saída: como gerar arquivos texto, CSV, HTML e outras coisas com scriptsHTML e outras coisas com scripts

14 de Novembro14 de NovembroChat para tirar dúvidas diversas sobre scriptingChat para tirar dúvidas diversas sobre scripting

Todas as Terças feiras, neste mesmo Todas as Terças feiras, neste mesmo horário!horário!

Page 5: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Agenda de hojeAgenda de hoje

O que é scripting?O que é scripting? O que eu posso fazer com scripting?O que eu posso fazer com scripting? É difícil?É difícil? Escrevendo um script do zeroEscrevendo um script do zero

VariáveisVariáveis ObjetosObjetos LoopsLoops Exibir resultadosExibir resultados

Gostei… onde procurar mais ajuda?Gostei… onde procurar mais ajuda? Espaço para dúvidasEspaço para dúvidas

Page 6: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Webcasts práticosWebcasts práticos

Recomendo Recomendo testartestar todos os scripts que todos os scripts que forem apresentadosforem apresentados

Crie uma pasta Crie uma pasta c:\scripts c:\scripts no seu computadorno seu computador

Baixe os exemplos em Baixe os exemplos em http://go.microsoft.com/fwlink/?LinkId=30792http://go.microsoft.com/fwlink/?LinkId=30792

... e descompacte pasta criada... e descompacte pasta criada

Abra um prompt de comando na sua pasta Abra um prompt de comando na sua pasta (cd c:\scripts)(cd c:\scripts)

Teste constantemente. Tire suas dúvidas no Teste constantemente. Tire suas dúvidas no final do webcast e no chat dia 14final do webcast e no chat dia 14

Page 7: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O que é scripting?!?O que é scripting?!?

O que é isso? O que eu ganho O que é isso? O que eu ganho sabendo usar?sabendo usar?

Page 8: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

ScriptingScripting

Forma rápida de resolver problemasForma rápida de resolver problemasToda tarefa Toda tarefa repetitivarepetitiva é uma grande candidata a é uma grande candidata a se tornar um scriptse tornar um script

PraticidadePraticidadeNão requer compilaçãoNão requer compilação

Não necessita de nada mais poderoso que um Não necessita de nada mais poderoso que um bloco de notasbloco de notas

Aprendizado mais fácil que linguagens de Aprendizado mais fácil que linguagens de programação mais complexasprogramação mais complexas

Podem ser simples ou complicadas... Tudo Podem ser simples ou complicadas... Tudo depende do que você quer fazer com o depende do que você quer fazer com o scriptscript

Page 9: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

ScriptingScripting

Principais benefíciosPrincipais benefíciosEconomia de tempo Economia de tempo do administrador!do administrador!

Menos chance de Menos chance de erroserros em tarefas em tarefas repetitivasrepetitivas

Mais Mais segurançasegurança

Menos problemas, mais administradores Menos problemas, mais administradores (e chefes) felizes =)(e chefes) felizes =)

Page 10: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Mas e um Script?Mas e um Script?

Script é uma Script é uma sequencia de comandos sequencia de comandos que que podemos dar ao computador, para que ele podemos dar ao computador, para que ele possa trabalhar sozinho, um possa trabalhar sozinho, um algoritmoalgoritmo

Esses comandos devem ser escritos de uma Esses comandos devem ser escritos de uma forma que o computador entenda, com uma forma que o computador entenda, com uma sintaxe adequada (linguagem)sintaxe adequada (linguagem)

Os scripts diferem dos programas porque Os scripts diferem dos programas porque são são interpretadosinterpretados ao invés de serem ao invés de serem compiladoscompilados

Diferem também dos Diferem também dos arquivos de lote arquivos de lote porque normalmente não podem ser porque normalmente não podem ser executados diretamente em um prompt de executados diretamente em um prompt de comandocomando

Page 11: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Diferenças básicasDiferenças básicas

Arquivos de Lote Scripts Programas

Interpretado Compilado

Comandos atômicos, que podem ser digitados

num prompt

Comandos provenientes de uma Linguagem de Programação

.BAT .CMD, .PS1 .VBS, .JS, .WSF .EXE, .COM

Podem ser editados em qualquer editor de texto, e só precisa ter um interpretador instalado

É necessário editar usando um editor de

texto e gerar o binário usando um compilador

apropriado

Fácil aprendizado Intermediário Bem mais complexo

Page 12: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Detalhes: Arquivos de LoteDetalhes: Arquivos de Lote.BAT e .CMD.BAT e .CMDPrósPrós

Estrutura mais simples e Estrutura mais simples e fácil de aprenderfácil de aprender

Usa comandos válidos no Usa comandos válidos no MS-DOS e no prompt de MS-DOS e no prompt de comando do 2000/XP/2003comando do 2000/XP/2003

Basta combinar os Basta combinar os comandos que você faria comandos que você faria manualmentemanualmente

Útil em pequenas Útil em pequenas situações como simples situações como simples cópias de arquivoscópias de arquivos

ContrasContrasTecnologia antigaTecnologia antiga

Depende demais da Depende demais da existencia de ferramentas existencia de ferramentas e programas de linha de e programas de linha de comandocomando

No geral, não possui muita No geral, não possui muita integração com outros integração com outros sistemas mais novossistemas mais novos

Complicado de usar em Complicado de usar em scripts de logonscripts de logon

Cada comando possui Cada comando possui uma lista de parâmetros uma lista de parâmetros diferente, o que dificulta o diferente, o que dificulta o aprendizadoaprendizado

Page 13: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Detalhes: ScriptsDetalhes: Scripts.VBS e .JS.VBS e .JSPrósPrós

Todas os recursos de uma Todas os recursos de uma linguagem de linguagem de programação (loops, programação (loops, funções, procedimentos, funções, procedimentos, objetos e classes)objetos e classes)

Facilita a reutilização de Facilita a reutilização de códigocódigo

Consegue interagir com Consegue interagir com mais tecnologias e mais tecnologias e sistemas do que os sistemas do que os arquivos de lotearquivos de lote

Mais velozesMais velozes

Execução silenciosaExecução silenciosa

Muita documentação e Muita documentação e exemplos na Webexemplos na Web

ContrasContrasCurva de aprendizado um Curva de aprendizado um pouco mais acentuadapouco mais acentuada

Exige alguma familiaridade Exige alguma familiaridade com programação em com programação em geralgeral

No Brasil, há um número No Brasil, há um número menor de pessoas que menor de pessoas que dominam este tipo de dominam este tipo de script e que colaboram em script e que colaboram em fórunsfóruns

Page 14: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Detalhes: ProgramasDetalhes: Programas.EXE.EXEPrósPrós

Algumas soluções só são Algumas soluções só são possíveis com programas possíveis com programas feitos sob medidafeitos sob medida

Muito mais velocidadeMuito mais velocidade

Várias linguagens de Várias linguagens de programação diferentes, programação diferentes, uma para cada uma para cada necessidadenecessidade

ContrasContrasNão se adequa à realidade Não se adequa à realidade do administrador de redes, do administrador de redes, que normalmente não que normalmente não dispoe de muito tempo dispoe de muito tempo para desenvolver uma para desenvolver uma aplicação e nem tem aplicação e nem tem conhecimentos avançados conhecimentos avançados em programaçãoem programação

Atualização requer a Atualização requer a recompilação do código, recompilação do código, que dá um pouco mais de que dá um pouco mais de trabalho desnecessário trabalho desnecessário quando os problemas são quando os problemas são relativamente simplesrelativamente simples

Page 15: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Ok, vamos aos Ok, vamos aos exemplos...exemplos...

Exemplos ilustram melhor como Exemplos ilustram melhor como isso funcionaisso funciona

Page 16: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Exemplo: Auditando Logs Exemplo: Auditando Logs de Eventosde Eventos

Imagine que você recebeu uma tarefa, como Imagine que você recebeu uma tarefa, como esta descrita abaixoesta descrita abaixo

Abrir o Visualizador de Eventos Abrir o Visualizador de Eventos (botão direito em (botão direito em Meu Computador, Gerenciar. Nas Ferramentas Meu Computador, Gerenciar. Nas Ferramentas do Sistema, escolha Visualizar Eventos)do Sistema, escolha Visualizar Eventos)

Clicar com o botão direito em Log de Segurança, Clicar com o botão direito em Log de Segurança, clique em clique em ExibirExibir, , FiltroFiltro......

Na caixa Identificação do Evento, escrever Na caixa Identificação do Evento, escrever 529529

Ver os resultadosVer os resultados

Fazer isso em cada um dos 34493 computadores Fazer isso em cada um dos 34493 computadores da empresada empresa

Page 17: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Set objOU = GetObject("LDAP://ou=Domain Controllers, " _ & "dc=fabrikam, dc=com")objOU.Filter = Array("Computer")

For Each objComputer in objOU

intLength = objComputer.Name strComputer = Right(objComputer.Name, intLength - 3)

Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate, (Security)}!\\" _ & strComputer & "\root\cimv2") Set colLoggedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where Logfile = 'Security' and " _ & "EventCode = '529'") For Each objEvent in colLoggedEvents Wscript.Echo "Computer Name: " & objEvent.ComputerName Wscript.Echo "Message: " & objEvent.Message Wscript.Echo "Record Number: " & objEvent.RecordNumber Wscript.Echo "Time Written: " & objEvent.TimeWritten Next

Next

Page 18: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O principal benefícioO principal benefício

Fazer com que os computadores Fazer com que os computadores trabalhem para vocêtrabalhem para você

Lembre que eles foram inventados para Lembre que eles foram inventados para isso!isso!

Executar tarefas em Executar tarefas em vários vários computadores de uma só vezcomputadores de uma só vez. E sem . E sem precisar levantar da cadeiraprecisar levantar da cadeira

Permitir que você administre Permitir que você administre computadores computadores do jeito que você querdo jeito que você quer, , não do jeito que querem que você o não do jeito que querem que você o façafaça

Page 19: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

É muito difícil?É muito difícil?

Não.Não.

70% dos scripts que faço hoje tem 70% dos scripts que faço hoje tem parte do código de algum outro script parte do código de algum outro script que eu fiz ou que alguém fez e que eu fiz ou que alguém fez e publicou na Internetpublicou na Internet

Tudo que você precisa fazer é entender Tudo que você precisa fazer é entender o código e adaptar para as suas o código e adaptar para as suas necessidadesnecessidades

Normalmente isso se resume a alterar Normalmente isso se resume a alterar o valor de algumas o valor de algumas constantesconstantes e e variáveisvariáveis

Page 20: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Vamos pôr a mão na massaVamos pôr a mão na massastrComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from XXXXXXXXXX")For Each objItem in colItems Wscript.Echo objItem.YYYYYYYYYYNext

Se você fez o download dos arquivos de Se você fez o download dos arquivos de exemplo deste Webcast, este é o arquivo exemplo deste Webcast, este é o arquivo

template.vbstemplate.vbs

Page 21: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Faça você mesmoFaça você mesmo

Na pasta Na pasta c:\scriptsc:\scripts, clique com o botão , clique com o botão direito em template.vbs e escolha direito em template.vbs e escolha EditarEditar

Troque o Troque o XXXXXXXXXXXXXXXX por por Win32_OperatingSystemWin32_OperatingSystem. Esse é o . Esse é o nome de uma das classes WMInome de uma das classes WMI

Troque o Troque o YYYYYYYYYYYYYYYY por por CaptionCaption. Esta . Esta é uma propriedade existente na classe é uma propriedade existente na classe Win32_OperatingSystemWin32_OperatingSystem

Page 22: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Seu primeiro script vai ficar Seu primeiro script vai ficar assim...assim...strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

Nota: em geral, scripts não são case-sensitive. Nota: em geral, scripts não são case-sensitive. Isso significa que Caption = CAPTION = captionIsso significa que Caption = CAPTION = caption

Page 23: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Continuando...Continuando...

Feche o editor de textos, Feche o editor de textos, salvandosalvando as as alteraçõesalterações

No prompt de comando, digite o No prompt de comando, digite o comando abaixo e pressione ENTERcomando abaixo e pressione ENTERcscript template.vbscscript template.vbs

Page 24: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

ResultadosResultadosC:\Scripts>cscript template.vbsMicrosoft (R) Windows Script Host Version 5.6Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Microsoft Windows XP Professional

É claro que, se você não estiver usando Windows É claro que, se você não estiver usando Windows XP, o resultado VAI ser diferente =)XP, o resultado VAI ser diferente =)

Page 25: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Bônus: Computadores Bônus: Computadores Remotos!Remotos!strComputer = "servidor_web_1"Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

strComputerstrComputer é uma variável que guarda o nome do é uma variável que guarda o nome do computador onde a consulta será feita. Tudo que computador onde a consulta será feita. Tudo que

fizemos foi alterar o valor daquela variável. O ponto, fizemos foi alterar o valor daquela variável. O ponto, no WMI, representa o computador local.no WMI, representa o computador local.

Page 26: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Mais Bônus!Mais Bônus!

strComputer = InputBox("Digite o nome do computador")Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

Agora, obtemos o nome do computador através de Agora, obtemos o nome do computador através de uma função da linguagem VBScript, o uma função da linguagem VBScript, o InputBoxInputBox. Ela . Ela exibe uma caixa de texto na tela para que o usuário exibe uma caixa de texto na tela para que o usuário

digite um valor e o guarda em uma variável.digite um valor e o guarda em uma variável.

Page 27: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Faça você mesmo Faça você mesmo novamentenovamente

Ok, você deve estar pensando: mas é só um Ok, você deve estar pensando: mas é só um script... e além disso eu peguei 90% dele script... e além disso eu peguei 90% dele pronto.pronto.

Na pasta c:\scripts, clique com o botão Na pasta c:\scripts, clique com o botão direito em template.vbs e escolha Editardireito em template.vbs e escolha Editar

Troque Troque Win32_OperatingSystemWin32_OperatingSystem por por Win32_ProcessWin32_Process e e CaptionCaption por por NameName. .

Feche o arquivo, salvando as alteraçõesFeche o arquivo, salvando as alterações

Execute o script no prompt de comando:Execute o script no prompt de comando:cscript template.vbscscript template.vbs

Pronto! Outro script diferente!Pronto! Outro script diferente!

Page 28: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

E agora...E agora...C:\Scripts>cscript template.vbsMicrosoft (R) Windows Script Host Version 5.6Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

System Idle ProcessSystemsmss.execsrss.exewinlogon.exeservices.exelsass.exeati2evxx.exesvchost.exesvchost.exesvchost.exe

Page 29: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Ok, mas eu continuo Ok, mas eu continuo copiando...copiando...

Sim.Sim.

A parte boa é que nessa área, copiar A parte boa é que nessa área, copiar não é só permitido como encorajado.não é só permitido como encorajado.

É uma das formas de reutilização de É uma das formas de reutilização de código, e economiza bastante tempocódigo, e economiza bastante tempo

Existem vários outros scripts como Existem vários outros scripts como este no ScriptCenter que podem ser este no ScriptCenter que podem ser copiados e adaptadoscopiados e adaptados

Page 30: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Fundamentos de ScriptFundamentos de Script

Alguns conceitos básicos de Alguns conceitos básicos de programaçãoprogramação

Page 31: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Ferramenta básicaFerramenta básica

Page 32: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Vamos testar novamenteVamos testar novamenteSet x = CreateObject("Wscript.Network")Wscript.Echo x.UserName

Apenas abra o Bloco de Notas e digite o código acima

Page 33: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Salvando um scriptSalvando um script

Note o uso das aspas e

da extensão .VB

S. Se você esquecer

delas, o blogo de notas vai

adicionar um .TXT no final do nome do

arquivo.

Page 34: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Executando os scriptsExecutando os scripts

Clique duas vezes no ícone do script, em c:\Clique duas vezes no ícone do script, em c:\scriptsscripts

O O host padrão host padrão é executado (Wscript.exe)é executado (Wscript.exe)

Ele executa scripts sem mostrar nenhuma janela, Ele executa scripts sem mostrar nenhuma janela, exceto quando encontra funções como a exceto quando encontra funções como a MsgBoxMsgBox e a e a InputboxInputbox

O mesmo que digitar somente o nome do script O mesmo que digitar somente o nome do script no prompt de comandono prompt de comando

my_script.vbsmy_script.vbs

No prompt de comando, digite cscript No prompt de comando, digite cscript seguido do caminho (relativo ou completo) seguido do caminho (relativo ou completo) do scriptdo script

cscript my_script.vbscscript my_script.vbs

Page 35: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O que muda de um para o O que muda de um para o outro?outro?

O método O método Wscript.EchoWscript.Echo, quando , quando executado no console, imprime uma executado no console, imprime uma linha com o textolinha com o texto

Fora do console, ele exibe uma Fora do console, ele exibe uma MessageBoxMessageBox com o texto. A execução com o texto. A execução do script fica parada até que o usuário do script fica parada até que o usuário clique no botão OKclique no botão OK

Page 36: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Tente você mesmoTente você mesmo

A partir do prompt de comando, digite:A partir do prompt de comando, digite:

cscript disks.vbscscript disks.vbs

E depois…E depois…

wscript disks.vbswscript disks.vbs

Page 37: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Mudando o host padrãoMudando o host padrão

Para mudar host padrão para o Cscript:Para mudar host padrão para o Cscript:

cscript //H:cscriptcscript //H:cscript

Para mudar host padrão para o Wscript:Para mudar host padrão para o Wscript:

cscript //H:wscriptcscript //H:wscript

Para maiores informações:Para maiores informações:cscript /?cscript /?

Page 38: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Explorando um scriptExplorando um script

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

Page 39: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O que ele faz?O que ele faz?

Inicializa uma variável com o nome do Inicializa uma variável com o nome do computador onde o script vai rodarcomputador onde o script vai rodar

Cria alguns objetosCria alguns objetos

Faz um loop pela coleção de Faz um loop pela coleção de informações que foram retornadasinformações que foram retornadas

Exibe as informações na telaExibe as informações na tela

Page 40: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Dissecando um ScriptDissecando um Script

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

Exibindo resultados na

tela

Exibindo resultados na

telaFazendo um loop pela coleção de

objetos

Fazendo um loop pela coleção de

objetos

Criando referências aos objetos

Criando referências aos objetosInicializando

uma variável

Inicializando uma variável

Page 41: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

VariáveisVariáveis

Variável nada mais é do que um Variável nada mais é do que um espaço na memória espaço na memória para armazenar um para armazenar um valorvalor

O VBScript usa um tipo especial de O VBScript usa um tipo especial de dado chamado dado chamado VariantVariant, que permite , que permite armazenar qualquer dado, seja ele um armazenar qualquer dado, seja ele um texto (string), um número inteiro, um texto (string), um número inteiro, um número de ponto flutuante, uma data...número de ponto flutuante, uma data...

Page 42: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Como as variáveis Como as variáveis funcionamfuncionam

strComputer = "atl-ws-01"Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")

VariávelVariável

VariávelVariável Valor atribuído à variávelValor atribuído à variável

Page 43: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Como as variáveis Como as variáveis funcionamfuncionam

strComputer = "atl-ws-01"Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")

Código OriginalCódigo Original

Set objWMIService = GetObject("winmgmts:" _ & "\\atl-ws-01\root\cimv2")

Código “Reescrito”Código “Reescrito”

Page 44: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Tipos de dadosTipos de dados

StringsStrings Basta colocar o valor entre aspas:

x = “Este é o valor de x."

NúmerosNúmeros Não use o valor entre aspas nem com vírgulas. Para decimais, use o ponto

x = 657457

DatasDatas Coloque o valor entre aspas, seguindo as configurações regionais do seu sistema.

x = “19 de Dezembro de 2004“x = “19/12/2004"x = “19/12/04"

Valores Booleanos Valores Booleanos (Lógicos)(Lógicos)

Não coloque os valores entre aspas:

x = TRUE

Page 45: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Concatenando VariáveisConcatenando Variáveis

Concatenar nada mais é do que Concatenar nada mais é do que “grudar” o conteúdo de duas coisas“grudar” o conteúdo de duas coisas

Em VBScript, usa-se o & para fazer Em VBScript, usa-se o & para fazer issoisso

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

Page 46: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Outros ExemplosOutros Exemplos

strFirstName = "Ken"strLastName = "Myer"

strName = strFirstName & " " & strLastNameWscript.Echo strName

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo “Nome: " & objItem.CaptionNext

Page 47: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Tente você mesmoTente você mesmo

Edite o arquivo Edite o arquivo concatenate.vbsconcatenate.vbs para para que ele possa exibir uma mensagem que ele possa exibir uma mensagem semelhante à essasemelhante à essa

Note que é necessário somente alterar Note que é necessário somente alterar a linha que exibe a versão do Sistema a linha que exibe a versão do Sistema Operacional (Operacional (objItem.VersionobjItem.Version))

Page 48: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Deve ficar assimDeve ficar assim

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo "Version: " & objItem.VersionNext

Page 49: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

ObjetosObjetos

Veja as linhas abaixoVeja as linhas abaixo

As linhas destacadas mostram a criação de As linhas destacadas mostram a criação de referências à objetos (COM – Component Object referências à objetos (COM – Component Object Model)Model)

Usado para extender a capacidade dos scripts, Usado para extender a capacidade dos scripts, permitindo realizar tarefas que nem o VBScript nem permitindo realizar tarefas que nem o VBScript nem o Windows Script Host podem fazero Windows Script Host podem fazer

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

Page 50: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O que são objetos?O que são objetos?

O VBScript pode…

… desenhar um gráfico? Não, mas o Excel pode.

… criar uma conta de usuário? Não, mas o ADSI pode.

… iniciar e parar serviços do SO? Não, mas o WMI pode.

… salvar dados em um arquivo? Não, mas o FileSystemObject pode.

… enviar emails? Não, mas o CDOSys pode.

Page 51: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Referências ComunsReferências Comuns

Conectar ao WMIConectar ao WMISet x = GetObject("winmgmts:")Set x = GetObject("winmgmts:")

Conectar ao ADSIConectar ao ADSISet x = GetObject("LDAP:")Set x = GetObject("LDAP:")

Conectar ao FilesystemObjectConectar ao FilesystemObjectSet x = CreateObject("Scripting.FileSystemObject“)Set x = CreateObject("Scripting.FileSystemObject“)

Conectar ao objeto Windows Script Host Conectar ao objeto Windows Script Host Shell (WSHShell)Shell (WSHShell)Set x = CreateObject("Wscript.Shell“)Set x = CreateObject("Wscript.Shell“)

Conectar ao objeto Windows Script Host Conectar ao objeto Windows Script Host Network (WSHNetwork)Network (WSHNetwork)Set x = CreateObject("Wscript.Network")Set x = CreateObject("Wscript.Network")

Page 52: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O comando SetO comando Set

Set Palavra chave que precisa estar presente na referência de um objeto.

objWMIService Nome da variável que armazenará a referência ao objeto. Pode ser qualquer nome escolhido por você.

GetObject Método que associa à um objeto existente. Tipocamente, usamos GetObject quando trabalhamos com WMI e ADSI. Com outros objetos COM, usamos normalmente o CreateObject.

(“winmgmts:”) Nome que diz ao sistema operacional para criar uma associação com um objeto COM em particular (uma instância).

Set objWMIService = GetObject("winmgmts:")

Page 53: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Loops ou laçosLoops ou laços

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

Fim do LoopFim do Loop

Inicia o LoopInicia o LoopNome da coleçãoNome da coleção

Nome da variávelNome da variável

Page 54: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Sintaxe do For-EachSintaxe do For-Each

For Each item in colecao 'faça alguma coisa com cada um dos itensNext

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_Service")For Each objItem in colItems Wscript.Echo objItem.Name Wscript.Echo objItem.DisplayName Wscript.Echo objItem.StateNext

Page 55: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O que é uma coleção?O que é uma coleção?

CcmExec

Cisvc

ClipSrv

Clipbook

ComSysApp

Cryptsvc

Page 56: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O que é uma coleção?O que é uma coleção?

Cisvc

ClipSrv

Clipbook

ComSysApp

Cryptsvc

Name: CcmExec

Display Name: SMS Agent Host

Service State: Running

CcmExec

Page 57: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

O que é uma coleção?O que é uma coleção?

CcmExec

ClipSrv

Clipbook

ComSysApp

Cryptsvc

Name: Cisvc

Display Name: Indexing Service

Service State: Stopped

Cisvc

Page 58: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Coleções sem nenhum ítemColeções sem nenhum ítemstrComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_TapeDrive")Wscript.Echo colItems.Count

Quando uma coleção não retorna nenhum ítem, o laço (se houver) simplesmente não é executado. No exemplo acima, iria imprimir

apenas um zero.

Page 59: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Bonus: Usando VetoresBonus: Usando Vetores

arrLetters = Array("A","B","C","D","E")For Each strLetter in arrLetters Wscript.Echo strLetterNext

Aí está um exemplo que você mesmo pode fazer ao invés de usar coleções:

crie a sua!

Page 60: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

If-then: Desvio CondicionalIf-then: Desvio Condicional

If x = 1 Then Wscript.Echo "X é igual a 1."ElseIf x = 2 Then Wscript.Echo "X é igual a 2."Else Wscript.Echo "X não é igual a 1 ou 2."End If

Note que você DEVE iniciar o bloco com as palavras If .. Then e terminar

com End If

Page 61: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

If-Then-ElseIf-Then-Else

X é igual a 1?X é igual a 1?SimSim

oN

ão

Imprimir valor de XImprimir valor de X

Is X equal to 2?Is X equal to 2?SimSim

oN

ão

Imprimir valor de XImprimir valor de X

Imprimir mensagemImprimir mensagem

If x = 1 ThenIf x = 1 Then

Else If x = 2 ThenElse If x = 2 Then

Else Else

Page 62: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Tente você mesmoTente você mesmo

Abra o script Abra o script If-Then.vbsIf-Then.vbs..

Modifique o código dentro do loop (For-Modifique o código dentro do loop (For-Each) de forma que a linha Each) de forma que a linha Wscript.EchoWscript.Echo objItem.NameobjItem.Name apareça somente se o apareça somente se o serviço estiver rodando.serviço estiver rodando.

Dica: Para checar se o serviço está Dica: Para checar se o serviço está rodando, use este código:rodando, use este código:

If objItem.State = "Running" ThenIf objItem.State = "Running" Then

Page 63: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Deve ter ficado assimDeve ter ficado assim

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_Service")For Each objItem in colItems If objItem.State = "Running" Then Wscript.Echo objItem.Name End IfNext

Page 64: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Exibindo ResultadosExibindo ResultadosstrComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objItem in colItems Wscript.Echo objItem.CaptionNext

Page 65: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Para maiores informaçõesPara maiores informações

ScriptCenter do Technet USAScriptCenter do Technet USAhttp://www.microsoft.com/technet/scriptcenterhttp://www.microsoft.com/technet/scriptcenter

Meu blog pessoal sobre scriptingMeu blog pessoal sobre scriptinghttp://viniciuscanto.blogspot.comhttp://viniciuscanto.blogspot.com

Colunas Technet BrasilColunas Technet Brasilhttp://www.microsoft.com/brasil/technet/colunashttp://www.microsoft.com/brasil/technet/colunas

Fórum e Comunidade TechnetFórum e Comunidade Technethttp://www.microsoft.com/brasil/technet/comunidadehttp://www.microsoft.com/brasil/technet/comunidade

MCPdx e ITCentralMCPdx e ITCentralhttp://www.culminisconnections.com/sites/MCPDxhttp://www.culminisconnections.com/sites/MCPDx

http://www.itcentral.com.br/http://www.itcentral.com.br/

Page 66: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

Duvidas?Duvidas?

Page 67: Script-Mania Parte 1 Como construir seus próprios scripts Vinicius Canto MVP Visual Developer – Scripting ICMC – USP

© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.