You are on page 1of 3
Listagem 13 Obtendo entrada de usuario 1 Const CONVERSION_FACTOR = 1048576 2 Const WARNING_THRESHOLD = 100 3 4if WScript.Arguments.Count = 0 Then 5 WScript.Echo "Uso: DiskSpace.vbs servidor1 [servidor2] [servidor3] 6 WScript.Quit 7 EndIf 8 9 For Each Computer In WScript.Arguments 10 11 Set objwmiService = Getobject("winmgmts://" & Computer) 12 Set colLogicalDisks = objWmiService.InstancesOf("Win32_LogicalDisk") 13 14 For Each objLogicalDisk In colLogicalDisks 15 FreeMegaBytes = objLogicalDisk.FreeSpace / CONVERSION_FACTOR 16 FreeMegaBytes = Int(FreeMegaB ytes) 17 If FreeMegaBytes < WARNING_THRESHOLD Then 18 WScript.Echo Computer & " 19" tem pouco espaco em disco." 20 End If 21 Next 22 & objLogicalDisk.DevicelD & _ 23Next Uma vantagem em usar argumentos é 0 fato de que eles so colocados automaticamente em uma colecdo (Wscript.Arguments). Isso torna mais facil percorrer 05 argumentos fornecidos a um script: vocé simplesmente configura um loop For Each e itera cada argumento da colecdo, exatamente da mesma forma como itera as unidades de disco individuais em uma colegdo de unidades de disco. Como argumentos so colocados em uma colec3o, também ¢ facil verificar quantos argumentos, se houver, foram fornecidos quando o script foi iniciado. Na linha 4 do script, Wscript.Arguments.Count é usado para determinar a quantidade de argumentos fornecida (0 nimero de argumentos fornecido sera igual ao nimero de itens da coleco de argumentos). Se a contagem for igual a 0, significando que nenhum. argumento foi fornecide, um conjunto de instrugdes de utilizagao sera exibido eo script sera finalizado (com 0 método Wscript.Quit) Tratamento de erros O script mostrado na listagem 13 bastante arriscado. Digamos que o usudrio tenha inserido um nome de servidor invalido como um argumento. Quando o script tentar se conectar a esse computador inexistente, falhara e a mensagem de erro "The remote server machine does not exist or is unavailable" sera exibida. Claro que uma determinada porcentagem de risco é inerente a todos os scripts usados até 0 momento neste artigo, incluindo os scripts em que os nomes de computador foram embutidos em cédigo. Afinal, o script n3o pode distinguir entre um nome de computador invalido e um nome de computador valido que, por algum mative, ndo est disponivel na rede, Por exemplo, digamos que vocé execute o script da listagem 12 e que o computador chamado atl-dc-01 esteja off-line no momento. Neste ponto, 0 script falhara e ndo sera mais processado. Isso significa que vocé nao sé falhar ao recuperar 0 espaco livre em disco no computador ati-de-01, como também falhara ao Tecuperar 0 espaco livre em disco nos computadores atl-dc-02 e atl-de-03, mesmo que eles estejam conectados a rede e funcionando corretamente, Isso acorre pois o script é finalizado antes de tentar se conectar a atl-dc-02 ou atl-de-03. ‘A incapacidade em se conectar a0 computador atl-de-01 ¢ um exemplo de erro em tempo de execugao, que ocorre apés o script ter sido iniciado (por comparacdo, um erro de sintaxe, como uma palavra-chave incorreta, 6 gerado e o script é finalizado antes que as linhas de cédigo sejam de fato executadas). Para obter ajuda na protecao contra erros em tempo de execucSo, vocé pode incluir a instrugo de tratamento de erros do VBScript, On Error Resume Next, em seus scripts. Sem o tratamento de erros, um script finalizado imediatamente quando encontra um erro em tempo de execucdo. Com o tratamento de erros, o script ndo ¢ finalizado, em vez disso, ele tanta executar a linha seguinte do script. O script procede desta maneira, ignorando as linhas que geram erros e executando as linhas que no geram erros. Tratamento de erros com o objeto Err On Error Resume Next permite que o script continue funcionando caso ocorra um erro em tempo de execucao. Porém, isso pode causar pelo menos dois problemas. Por um lado, nenhuma mensagem de erro é gerada para informar que ocorrau erro. Se executar um script e nada ocorrer, vocé nao terd como saber onde houve falha, Por outro lado, talvez vocé prefira que um script no tente executar todas as linhas caso acorra erro em tempo de execucdo. Por exemplo, considere um script que siga este procedimento: Conecta-se a um computador remato. is Copia um conjunto de arquivos do computador local para 0 computador remoto. 3. Exclui o conjunto de arquives original do computador local Digamos que vocé tenha executado esse script, mas que o computador remoto no esteja disponivel. Veja a seguir uma sequiéncia possivel de eventos. 1. O script tenta se conectar a0 computador remoto e falha. Porém, On Error Resume Next assegura que o script continue sendo executado. is O script tenta copiar arquivos para o computador remoto. A operacao falha, pois 0 computador remoto ndo esté acessivel 3. O script exclui os arquivos do computador local. Infelizmente, essa aco ¢ bem- sucedida, pois o computador local esté disponivel. Como resultado, os arquivos so excluidos do computador local, mas ndo so copiados para o computador remoto. Felizmente, vocé pode usar 0 objeto Err intrinseco do VBScript para determinar se 0 erro ocorreu ou no, e caso tenha ocorrido, para executar a acdo apropriada. 0 objeto Err & criado automaticamente sempre que vocé executa um script (ha somente um objeto Err por instncia de script). Esse objeto contém varias propriedades, incluindo as trés mostradas na tabela 4. Sempre que o script encontra um erro em tempo de execugdo, essas propriedades sao preenchidas automaticamente com as informagées que identificam o erro. Tabela 4 Propriedade Descricéo Description Descrig&o do erro. A descricao pode ser usada para informar ao usuario que ocorreu erro. Isso pode ser realizado com o eco do valor: Wscript.Echo Err.Description Number Numero intairo que identifica de forma exclusiva 0 erro ocorrido. Esse ntimero pode representar um numero de erro intrinseco do

You might also like