Introdução ao Windows Scripting Host

Vinicius Canto

Olá pessoal,

Diante do surgimento de um grande número de dúvidas sobre scripts em geral nos fóruns aqui do Technet Brasil, resolvi escrever um pequeno artigo para ajudar quem tiver interesse em começar a escrever pequenos scripts para automatizar tarefas.

Em primeiro lugar, precisamos esclarecer que tipo de scripts iremos abordar. Os scripts mais tradicionais e que boa parte do mundo conhece são os arquivos de lote do MS-DOS e Prompt de Comando. Estes nada mais são do que uma seqüência de comandos que você pode digitar manualmente no prompt, porém armazenados num arquivo de texto simples com extensão .BAT ou .CMD ao invés de TXT. São bem simples de se criar, uma vez que os comandos do MS-DOS são bem conhecidos pelo público em geral. Além disso, suportam redirecionamento de saída, variáveis de ambiente e outros recursos.

Mas existem algumas desvantagens em utilizar dessa tecnologia. A principal delas é a diferença do interpretador de comandos entre estações Win9x e 2000/XP. Vários comandos e ferramentas novas foram adicionados ao Windows 2000 e outros ainda estão disponíveis no Resource Kit desse sistema operacional, e a maioria delas é incompatível com o sistema mais antigo. Além disso, os scripts em BAT podem ser parados pelo usuário, uma vez que quando são executados em uma pequena janela minimizada aparece na tela.

Outro tipo de tecnologia que podemos utilizar é o Windows Scripting Host, (também conhecido como WSH). Trata-se de uma tecnologia desenvolvida pela Microsoft, existente desde o Windows 95, para automatizar tarefas de administração em um computador.

Algumas coisas mudam dos velhos arquivos .BAT para o WSH. Veja algumas delas:

Organização dos arquivos

Os scripts WSH também são executados linha a linha, assim como os seus antepassados do DOS. Mas esses "comandos" não são os mesmos que usamos no prompt, mas sim pertencentes à uma linguagem de programação. Com isso, novas técnicas podem ser utilizadas e a reutilização de código torna-se mais fácil.

Ao invés da extensão .BAT, os scripts do Windows Scripting Host possuem diversas extensões, dependendo da linguagem de programação utilizada e do tipo de organização do arquivo. Arquivos com uma única linguagem podem ter extensão .VBS (linguagem VBScript) ou .JS (linguagem Jscript).

Linguagens de programação

Como já foi comentado, o WSH utiliza linguagens de programação ao invés de simples comandos. Inicialmente, podem ser utilizados o VBScript (utilizada em aplicações do Visual Basic, VBA e aplicações ASP) e o JScript (utilizada principalmente para adicionar interatividade em páginas HTML). No entanto, linguagens como Perl e REXX podem ser utilizadas também se a máquina host tiver os componentes necessários, o que não é muito comum, mas perfeitamente possível.

Outro grande recurso que podemos usar é a reutilização do código. Uma função criada por você pode ser usada em vários scripts diferentes, bastando somente que você altere os parâmetros que são passados para ela. Veja um exemplo simples de função que pode ser criada usando o WSH:

Sub CriarMapeamento(letra,caminho)
   Set objNet = CreateObject("WScript.Network")
   objNet.MapNetworkDrive caminho,letra
End Sub

Esse é um exemplo simples de uma função que cria um mapeamento de rede. A idéia de reutilização do código é simples: sempre que precisar, basta incluir uma cópia desse código no script e adicionar a linha abaixo, mudando apenas as informações que são passadas como parâmetros:

CriarMapeamento "V:","\\server\share"

Enfim, nada muito complexo. Nos próximos artigos entraremos em mais detalhes sobre o significado desse tipo de script.

Tarefas que antes eram complicadas de se realizar nos arquivos de lote, como por exemplo loops e estruturação de código (no DOS só temos o velho GOTO), agora ficam muito mais simples numa linguagem de programação. Isso sem falar na manipulação de texto e entrada de dados do usuário, que praticamente não existiam nos arquivos BAT.

Porém, toda essa facilidade tem um preço. Os scripts se tornam mais difícil de ser compreendido por pessoas que não tenham alguma prática ou conhecimentos básicos em programação. Nada tão difícil, mas é muito diferente para quem estava acostumado só com os arquivos de lote.

Interpretador

Os scripts do WSH são interpretados, assim como os arquivos de lote. Não é necessário compilar o código. Em outras palavras, não é preciso gerar arquivos .EXE.

O WSH fornece dois interpretadores, o wscript.exe, que trabalha em modo gráfico, e o cscript.exe, seu equivalente no prompt. Ambos trabalham da mesma forma, e um script pode ser executado em qualquer um dos dois, sendo que o primeiro é o interpretador padrão.

O cscript.exe foi criado para que ainda possamos utilizar scripts em linha de comando, juntamente com arquivos BAT. É uma saída interessante quando você já possui uma série de arquivos de lote prontos e uma determinada tarefa só pode ser feita usando uma linguagem de programação como o VBScript.

Outra característica do cscript é a possilidade de usar o console como saída de texto, a medida que o script vai sendo executado. Um exemplo bem simples é script que fica monitorando continuamente se um arquivo foi criado em uma pasta ou um script que imprime na tela sempre que uma linha nova é adicionada à um arquivo de log.

Já o wscript executa os scripts "silenciosamente", sem nenhuma mensagem para o usuário. Caso queira interagir com o usuário, pode utilizar somente pequenas mensagens de texto (função msgbox) e uma entrada de dados simples (função inputbox).

A versão mais recente do WSH é a 5.6, existente no Windows 2000 e XP. Para Windows 9x, existe no site da Microsoft um link para o download gratuito das versões mais recentes.

WMI e ADSI

Temos ainda duas outras tecnologias para auxiliar a automação de tarefas:

A primeira delas é o WMI. Trata-se de uma tecnologia que permite acessar de forma centralizada diversas propriedades do sistema operacional, hardware e software instalados. Um exemplo do que pode ser feito é modificar o registro, alterar permissões de arquivos, obter informações como espaço livre no disco rígido, etc. Tudo isso no próprio computador que o script está sendo executado ou remotamente, em qualquer micro da rede que o usuário tenha poderes administrativos.

A outra é o ADSI fica fácil mudar qualquer propriedade de qualquer objeto do Active Directory, seja ele um usuário, um computador ou uma OU. Imagine poder alterar a senha de usuários dentro de uma OU, ou aplicar um script de logon diferente só para os usuários que tenham uma característica comum, tudo sem utilizar a interface gráfica.

Essas duas tecnologias tornam mais fácil a administração de ambientes um pouco maiores, automatizando tarefas rotineiras.

Espero ter esclarecido algumas das coisas que podem ser feitas utilizando scripts. Em breve, escreverei mais artigos explicando alguns truques mais específicos, exemplos e como resolver pequenos problemas de administração com script. Até logo...

Vinicius Canto - MCP Windows 2000 Server
C. da Computação USP/São Carlos - SP - Brasil