none
Modelo de Script de Logon RRS feed

  • Discussão Geral

  • Essa é a minha primeira passagem por aqui como colaborador, esse script que posto abaixo é um modelo que uso na rede que administro, muito dele foi criado com a ajuda dos posts desse fórum, por isso decidi compartilha-lo com vcs, espero que possam colaborar e corrigir quaisquer imperfeições existentes nele, ou formas de melhorá-lo.

     

    ' Esse é um script administrativo de logon, seu objetivo é preparar o ambiente de trabalho dos Usuários.
     

    Set WshShell = WScript.CreateObject("WScript.Shell")

    ' 1º) Carrega arquivo que exibe mensagem para usuário - procure no fórum maiores informações
    '======================================================================================================
    WshShell.run("\\192.168.0.1\NETLOGON\motd.vbs")

    ' 2º) COPIANDO PASTAS DO SISTEMA - Utilizamos essa opção, para cópia das pastas dos sistemas q utilizamos, depois de todos os micros da rede possuirem essas pastas fica interessante desabilitar essa função
    '=======================================================================================================

    strComputer = "."

    On Error Resume Next
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Const FOF_CREATEPROGRESSDLG = &H0&
    ParentFolder = "C:\SISTEMAS"
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(ParentFolder)
    objFolder.CopyHere "\\192.168.0.1\SISTEMAS\SIS1", FOF_CREATEPROGRESSDLG
    objFolder.CopyHere "\\192.168.0.1\SISTEMAS\SIS2", FOF_CREATEPROGRESSDLG
    objFolder.CopyHere "\\192.168.0.1\SISTEMAS\SIS3", FOF_CREATEPROGRESSDLG

    ' 3º) Verifica necessidade de atualização de executáveis
    '=======================================================================================
    Dim Arqv1, Arqv2
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    ' ==== Atualizando SIS1 ========

    Arqv1 = "\\192.168.0.1\SISTEMAS\SIS1\SIS1.exe" 'Arquivo do Servidor
    Arqv2 = "C:\SISTEMAS\SIS1\SIS1.exe" 'Arquivo Local
    PathArq2 = "c:\SISTEMAS\SIS1\" 'Pasta do Arquivo Local
    If objFSO.FolderExists(PathArq2) Then
     If objFSO.FileExists(Arqv2) Then
      Set objFile1 = objFSO.GetFile(Arqv1)
      Set objFile2 = objFSO.GetFile(Arqv2)
      If objFile2.DateLastModified < objFile1.DateLastModified Then
       objFSO.CopyFile Arqv1 , PathArq2, True
      End If
     Else
      objFSO.CopyFile Arqv1 , PathArq2, True
     End If
    End If

    '==== Fim SIS1 ========

    ' ==== Atualizando SIS2 ========

    Arqv1 = "\\192.168.0.1\SISTEMAS\SIS2\SIS2.exe" 'Arquivo do Servidor
    Arqv2 = "C:\SISTEMAS\SIS2\SIS2.exe" 'Arquivo Local
    PathArq2 = "c:\SISTEMAS\SIS2\" 'Pasta do Arquivo Local
    If objFSO.FolderExists(PathArq2) Then
     If objFSO.FileExists(Arqv2) Then
      Set objFile1 = objFSO.GetFile(Arqv1)
      Set objFile2 = objFSO.GetFile(Arqv2)
      If objFile2.DateLastModified < objFile1.DateLastModified Then
       objFSO.CopyFile Arqv1 , PathArq2, True
      End If
     Else
      objFSO.CopyFile Arqv1 , PathArq2, True
     End If
    End If

    '==== Fim SIS2 ========

    ' ==== Atualizando SIS3 ========

    Arqv1 = "\\192.168.0.1\SISTEMAS\SIS3\SIS3.exe" 'Arquivo do Servidor
    Arqv2 = "C:\SISTEMAS\SIS3\SIS3.exe" 'Arquivo Local
    PathArq2 = "c:\SISTEMAS\SIS3\" 'Pasta do Arquivo Local
    If objFSO.FolderExists(PathArq2) Then
     If objFSO.FileExists(Arqv2) Then
      Set objFile1 = objFSO.GetFile(Arqv1)
      Set objFile2 = objFSO.GetFile(Arqv2)
      If objFile2.DateLastModified < objFile1.DateLastModified Then
       objFSO.CopyFile Arqv1 , PathArq2, True
      End If
     Else
      objFSO.CopyFile Arqv1 , PathArq2, True
     End If
    End If

    '==== Fim SIS3 ========

     

    WshShell.SendKeys "{ENTER}" 'Dá um enter na mensagem aprensentada para o usuário... (motd.vbs)

    ' 4º) Remove Mapeamentos
    '=======================================================================================
    On Error Resume Next
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    WshNetwork.RemoveNetworkDrive "S:", true, true
    WshNetwork.RemoveNetworkDrive "T:", true, True
    WshNetwork.RemoveNetworkDrive "J:", true, True


    'Cria mapeamentos de Rede
    '=======================================================================================

    Dim objNetwork
    Set objNetwork = CreateObject("WScript.Network")

    objNetwork.MapNetworkDrive "s:", "\\192.168.0.1\publico", true
    objNetwork.MapNetworkDrive "t:", "\\192.168.0.1\Sistemas", true
    objNetwork.MapNetworkDrive "j:", "\\192.168.0.1\Arquivos", true

    ' 5º) Cria Atalhos
    '========================================================================================
    Dim WSHShell, fs
    Set fs = WScript.CreateObject("Scripting.FileSystemObject")

    Function MakeDesktopShortcut( name, target )
    Dim Shortcut,DesktopPath,StartupPath
    DesktopPath = WSHShell.SpecialFolders("Desktop")
    Set Shortcut = WSHShell.CreateShortcut(DesktopPath & "\..\..\All Users\Desktop\" & name & ".lnk")
    Shortcut.TargetPath = target
    StartupPath = fs.GetParentFolderName( target )
    If fs.FolderExists( StartupPath ) then
    Shortcut.WorkingDirectory = StartupPath
    End If
    Shortcut.Save
    End Function

    MakeDesktopShortcut "Sistema Um", "c:\Sistemas\sis1\sis1.exe"
    MakeDesktopShortcut "Sistema Dois", "c:\Sistemas\sis2\sis2.exe"
    MakeDesktopShortcut "Sistema Três", "c:\Sistemas\sis3\sis3.exe"


    ' 6º) Executa lsrunase - Executa programas com poderes de administrador é necessário que o arquivo lsrunase.exe esteja no micro cliente.
    ' procure no google maiores informações sobre o lsrunase, o legal dele é que vc pode mandar o comando junto com o login e senha criptografada de administrador

    de dominio.
    '==========================================================================================
    'SET userLOGIN=userdomain 
    'SET userDOMAIN=domain
    'SET SENHA=senha criptografada

    'WSHShell.run "c:\lsrunase.exe /c /user:userdomain /password:senha criptografada /domain:domain /command:notepad.exe /runpath:%windir%"


    ' 7º) Gera Log diário de Logon em \\192.168.0.1\logs$
    '==========================================================================================
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\"& strComputer & "\root\cimv2")
    Set colAdapters = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    Set oNetwork = CreateObject("WScript.Network")
    Dim fso, sf, StrNew
    Const ForAppending = 8
    Set fso = CreateObject("Scripting.FileSystemObject")
    systime = Now()
    StrNew="\\192.168.0.1\Logs$\" & cstr(year(systime)) & "-" & cstr(month(systime)) & "-" & cstr(day(systime)) & ".txt"
    set sf=fso.OpenTextFile (StrNew, ForAppending, True)
    sf.writeline ""
    sf.writeline "=== Informações do Logon de Usuário ==="
    sf.writeline ""
    sf.writeline "Data: " & cstr(Date())
    sf.writeline "Hora: " & cstr(Time())
    sf.writeline ""
    sf.writeline "  Nome de Usuário          : " & oNetwork.UserName
    sf.writeline ""
    sf.writeline "=== Listando dispositivos de Rede ==="
    n = 1
     
    For Each objAdapter in colAdapters
    sf.writeline ""
       sf.writeline "  * Adaptador N.º " & n
    sf.writeline ""
       sf.writeline "  Descrição             : " & objAdapter.Description
     
       sf.writeline "  Endereço Físico (MAC) : " & objAdapter.MACAddress
       sf.writeline "  Nome de Host          : " & objAdapter.DNSHostName
     
       If Not IsNull(objAdapter.IPAddress) Then
          For i = 0 To UBound(objAdapter.IPAddress)
       sf.writeline "  Endereço IP           : " & objAdapter.IPAddress(i)
          Next
       End If
     
       If Not IsNull(objAdapter.IPSubnet) Then
          For i = 0 To UBound(objAdapter.IPSubnet)
       sf.writeline "  Mascara               : " & objAdapter.IPSubnet(i)
          Next
       End If
     
       If Not IsNull(objAdapter.DefaultIPGateway) Then
          For i = 0 To UBound(objAdapter.DefaultIPGateway)
       sf.writeline "  Gateway               : " & objAdapter.DefaultIPGateway(i)
          Next
       End If
     
       n = n + 1
    Next

    sf.writeline ""
    sf.writeline "=== FIM ==="
    sf.close

    Wscript.Quit

    segunda-feira, 15 de janeiro de 2007 16:56