Qual é a vantagem disso ? Bom, uma linguagem de script é uma linguagem de programação e, portanto, tem muito mais recursos sintáticos que o batch tradicional : você pode criar variáveis, ter laços de controle, desvios condicionais mais robustos, etc. Mas a grande flexibilidade está nos recursos de COM introduzidos pela Microsoft : é possível automatizar tarefas relacionadas a qualquer software que disponibilize suas funções através de interfaces COM. Isso inclui softwares como Excel, Word, ADO (para acesso a Banco de Dados), etc.. Para fora do mundo Microsoft, também há exemplos de softwares que expõe seus objetos dessa maneira : o SAP Business One, o Acrobat Reader, Quick Time, etc.
Voltando ao assunto do título, o acesso aos Serviços do Windows também é possível através de COM. Como em meu computador na ABC71 há muitos serviços que têm uso em poucos momentos, acabei criando "batches" com scripts para iniciá-los antes de acessar o programa que vai necessitar de tal serviço e, ao fechar o programa, encerrar o serviço que não é mais necessário.
Reproduzo abaixo o exemplo comentado que inicia serviços para o VMWare :
' Nome do computador onde estão os serviços.
' o ponto indica que é o computador local
strComputer = "."
' GetObject obtém instância de um objeto existente. No caso, o nome
' esquisito no parâmetro representa o gerenciamento do Windows
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
' Executa uma query no gerente para saber quais são os serviços
' existentes. Note o WHERE : ele está filtrando apenas os serviços
'VMWare. Se desejar ver todos os serviços, remova esse filtro.
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where DisplayName like 'VMWare%'")
' Põe em execução todos os serviços encontrados
For each objService in colServiceList
Wscript.Echo objService.StartService()
Next
' Cria uma instância do objeto COM WScript.Shell, que representa o
' ambiente Windows - arquivos, pastas e o registro.
Set WshShell = WScript.CreateObject("WScript.Shell")
' Executa o VMWare, especificando que o script deve aguardar o tér-
'mino da execução antes de prosseguir
WshShell.Run """C:\Program Files\VMware\VMware Server\" &_
"vmware.exe""", 0, true
' Finalmente, interrompe os serviços quando o programa terminar.
For each objService in colServiceList
Wscript.Echo objService.StopService()
Next
Salvei este arquivo como StartVMWare.vbs e criei um atalho para ele : basta um duplo clique nesse atalho para executar a automação.
A propósito, os arquivos BAT ainda existem e continuam podendo ser usados pelos saudosistas ...
Mais Informações
Objeto WScript, objeto WShell, Windows Management Instrumentation, Script Technologies.
Objeto WScript, objeto WShell, Windows Management Instrumentation, Script Technologies.
Nenhum comentário :
Postar um comentário
OBS: Os comentários enviados a este Blog são submetidos a moderação. Por isso, eles serão publicados somente após aprovação.
Observação: somente um membro deste blog pode postar um comentário.