Ads 468x60px

quarta-feira, 27 de março de 2013

Tutorial.: Mapeando drives de rede com VBScript


Este tutorial é voltado para aqueles acostumados aos scripts Batch utilizados no mapeamento de drives de rede e que, de vez em quando, não sabem o porquê de eles não funcionarem, ou simplesmente para aqueles que gostam de fazer diferente ou de aprender coisas novas. Segue a dica para a utilização de um script .vbs para substituir o .bat e também até gerar um log de erros.
Após um problema pessoal em uma rede onde o mapeamento feito através de scripts .bat distribuídos por GPOs (Group Policy) falhava de vez em quando, principalmente com o novo Windows 8, decidi realizar testes em VBScript após sugestão de um colega de trabalho.
Outras pessoas também podem achar outras utilidades...

Bem, vamos lá!
Considere que desejamos mapear o caminho "\\Servidor\RedutoNerd" no drive X:

O antigo script .bat continha o que normalmente se costuma encontrar em diversos sites e fóruns na web, simplesmente:
#Forçar desconexão caso a letra X esteja em uso
net use X: /d

#Mapeando o drive
net use X: \\Servidor\RedutoNerd


"-Curto e grosso... Isso funciona?"

Na maioria das vezes sim... Mas começamos a ter problemas com o Windows 8...

O mesmo script em .vbs ficaria assim:
'Declarando objetos que contém os comandos necessários
    Set objRede = WScript.CreateObject("Wscript.Network")
    Set objArq = CreateObject("Scripting.FileSystemObject")

'Declarando variáveis com a letra e o caminho para ficar mais apresentável
    driveX = "X:"
    pathX = "\\Servidor\RedutoNerd

'Impedindo que o script seja abortado em caso de erro
On Error Resume Next

'Forçar desconexão caso a letra X esteja em uso
    If objArq.DriveExists(driveX) Then
        objRede.RemoveNetworkDrive driveX
    End If
  
'Mapeando o drive
    objRede.MapNetworkDrive driveX, pathX


"Mas ficou maior!"

Sim, um pouquinho, mas dá um crédito... Funciona!

Se quisermos fazer um log para os casos de erro podemos adicionar o código abaixo ao fim do código acima:
'Declarando variáveis para logging para ficar mais apresentável
    logArq = "C:\Windows\Temp\Log.txt" 'Caminho e nome do arquivo
    Const ADICIONAR = 8 'Constante que indica que se deve adicionar ao final do arquivo existente

'Sub-rotina para verificação da existência do arquivo de log (mais apresentável)
    Sub checkArq()
        If objArq.FileExists(logArq) Then 'Caso o arquivo exista, adicione ao final.
            set logArq = objArq.OpenTextFile(logArq, ADICIONAR)
        Else 'Caso o arquivo não exista, crie-o
            set logArq = objArq.CreateTextFile(logArq)
        End If
    End Sub

'Gerando logs de erro, caso haja
    If Err.Number <> 0 Then
        checkArq
        logArq.WriteLine("Código de erro: " & err.number & ". Descrição: " & err.description)
        Err.clear
    End If

E pronto! Drive mapeado com sucesso! Ou, motivo da falta de mapeamento descoberto com sucesso, vai saber...

E por hoje é só pessoal!
Esperamos que este tutorial tenha sido proveitoso para vocês

Mandem suas dúvidas e sugestões para que possamos compartilhar com a nossa comunidade.
Gostou do tutorial? Ele te ajudou? Então clique nos botões "Curtir" e "+1", e compartilhe esta publicação no Facebook, pode ser que outras pessoas também a achem útil! =D

Fiquem atentos para mais dicas e tutoriais, aqui mesmo, no Reduto Nerd!

Nenhum comentário:

Postar um comentário