none
Script de Logon customizado por user RRS feed

  • Pergunta

  • Olá pessoal tudo bem. Gostaria da ajuda para desenvolver um script de logon customizado, atualmente eu uso batch para mapear as unidades para os user e as impressoras eu vou add conforme eu crio o perfil do user nas maquinas, com isso eu pensei em criar um scipt onde eu possa colocar nele as linhas por user ou por departamento... vou descrever em detalhes o meu setor atual...

    Eu tenho 20 users na minha rede, separados por departamentos, administrativo, diretoria, financeiro, selecao, comercial e informática, o meu objetivo e colocar no script as regras que possa fazer com que cada user possa mapear as suas devidas pastas e impressoras, tipo...

    Modelo Desejado:

    - user01, mapeia as pastas, adm, publica, sistemas e as impressoras 01, 02 e 03; 
    - user02, mapeia as pastas, fin, publica, sistemas e as impressoras 03, 02 e 05;
    - user03, mapeia as pastas, com, publica, sistemas e as impressoras 02, 05 e 03;
    e assim por diante...

    Modelo Atual:

    No meu script atual eu tenho na primeira linha uma regra que primeiro ele esclui a unidade mapeada e depois ele add a mesma, tive que fazer isso porque aparecia um erro durante a execução do script e com essa regra o erro nao aparece mais. Nesse mesmo script além das unidades eu tenho uma que sincroniza os relogios com o meu DC, uma do wsus, a gpupdate.

    Queria Seguimentar o meu novo Script e como eu não sou muito bom nisso resolvi pedir a ajuda de vcs, seria possivel colocar no Script uma regra que me desse o horário que o user esta se logando na maquina, tipo... ao se logar aparecer uma mensagem de boas vindas da empresa, eu sei que isso é possivel via GPO, mais eu posso fazer isso via vbs? Onde eu pudesse colocar algo do tipo "Bom dia, Boa tarde ou Boa noite (onde ele aparece a mensagem de acordo com o horário da maquina, Voce acaba de ingressar na rede tal, seja bem vindo...."

    PS. Existe algum site, programa, tutos onde eu possa estudar e criar esses tipos de script, estou afim de aprender a criar uns script legais e colocar aqui na empresa.

    Fico no aguardo de uma resposta assim que possível, estou precisando muito desse scrip e quem puder me ajudar ficarei muito grato!!!


    Wesley Porto Rodrigues .:. Network & Infraestructure Specialist .:. ITIL and Green IT Implementation
    domingo, 18 de outubro de 2009 07:01

Respostas

  • Olá,

    Utilize grupos para fazer os mapeamentos.

    Fazer por usuário é um problema. Imagine se você tiver 1000 usuários.

    Crie os grupos e coloque os usuários em cada grupo.

    Depois execute o script fazendo um case ou um if, conforme o exemplo abaixo:


    On Error Resume Next

    Const GG_1 = "cn=grupoA"
    Const GG_2 = "cn=grupoB"
    Const GG_3 = "cn=grupoC"
    Const GG_4 = "cn=grupoD"



    Set wshNetwork = CreateObject("WScript.Network")
    Set oDrives = WshNetwork.EnumNetworkDrives
    Set ADSysInfo = CreateObject("ADSystemInfo")
    'wscript.echo ADSysInfo.UserName
    Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
    DriveMapper "G:"
    DriveMapper "H:"
    DriveMapper "I:"
    DriveMapper "J:"



    arrMembersOf = CurrentUser.GetEx("memberOf")
    For Each strMembro in arrMembersOf
        mapear strMembro
        subGrupo strMembro
    Next

    '=========================================


    sub subgrupo(strcaminho)

    Set objGroup = GetObject("LDAP://" & strCaminho)
    objGroup.GetInfo

    arrSubMembro = objGroup.GetEx("memberOf")

    For Each strSubMember in arrSubMembro
       mapear strSubMember
    Next

    end sub

    '===========================================

    Sub DriveMapper(Drive)
    For i = 0 to oDrives.Count -1 Step 2
       if LCase(Drive) = LCase(oDrives.Item(i)) then
          WshNetwork.RemoveNetworkDrive Drive, true, true
       End if
    Next

    End sub

    '============================================

    Sub Mapear(strGrupoFIM)

    If InStr(UCASE(strGrupoFIM), UCASE(GG_1)) Then
       wshNetwork.MapNetworkDrive "G:", "\\server\compartilhamento1"
    End if

    If InStr(UCASE(strGrupoFIM), UCASE(GG_2)) Then
       wshNetwork.MapNetworkDrive "H:", "\\server\compartilhamento2"
    End if

    If InStr(UCASE(strGrupoFIM), UCASE(GG_3)) Then
       wshNetwork.MapNetworkDrive "I:", "\\server\compartilhamento3"
    End if

    If InStr(UCASE(strGrupoFIM), UCASE(GG_4)) Then
       wshNetwork.MapNetworkDrive "J:", "\\server\compartilhamento4"
    End If
     

    End sub



    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quinta-feira, 22 de outubro de 2009 13:30

Todas as Respostas

  • Olá,

    Dá uma olhada no script abaixo:

    http://social.technet.microsoft.com/forums/pt-BR/scriptadminpt/thread/5671da3c-8e0b-40ad-ae50-a06f6331b12c/


    Qualquer dúvida, poste para nós...


    Até mais,

    Jesiel

    Obs.: Se útil, classifique

    segunda-feira, 19 de outubro de 2009 11:56
  • Valeu Jesiel,

    Eu testei o script e até a parte da impressora ele ta ok, mais eu alterei o horário pra ver se ele sincronizava e alterava a hora e não houve isso, ele nao fez nada. Outra coisa, agora como eu faço pra incluir os user dentro desse script e fazer com que ele aponte as regras para cada um deles, vou citar o exemplo do que eu quero ou pretendo...

    quando o user fulano01 se logar ele tera os seguintes mapeamentos...

    Set WshNetwork = CreateObject("WScript.Network")
    ON ERROR RESUME NEXT
    WshNetwork.RemoveNetworkDRIVE "G:"
    WshNetwork.MapNetworkDrive "G:", "\\srv\Arquivos","true"

    Set WshNetwork = CreateObject("WScript.Network")
    ON ERROR RESUME NEXT
    WshNetwork.RemoveNetworkDRIVE "P:"
    WshNetwork.MapNetworkDrive "P:", "\\srv\Publico","true"

    Set WshNetwork = CreateObject("WScript.Network")
    ON ERROR RESUME NEXT
    WshNetwork.RemoveNetworkDRIVE "S:"
    WshNetwork.MapNetworkDrive "S:", "\\srv\Sistema","true"

    Mapear impressora da INFORMATICA

    Set WshNetwork = CreateObject("WScript.Network")

    WshNetwork.AddWindowsPrinterConnection "\\srv\HPLaserJ.2"
    WshNetwork.SetDefaultPrinter "\\srv\HPLaserJ.2"

    Até aqui ta blz.... Agora eu queria saber onde eu add os users, como ele vai apontar os mapeamentos para determinados users? Como ele vai saber que o fulano01 é diferente do fulano02 e do fulano03?

    Aqui é do horário de verão, como eu faço pra resolver, eu alterei apenas a chave que aponta pro meu DC.

    Horário de Verão

    Const HKEY_LOCAL_MACHINE = &H80000002
    strComputer = "."
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\defaultTongue TiedtdRegProv")
    strKeyPath = "System\CurrentControlSet\Control\TimeZoneInformation"
    strValueName = "DaylightName"
    strValue= "E. South America Daylight Time"
    oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    strDWORDValueName = "DisableAutoDaylightTimeSet"
    oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,strDWORDValueName

    '===============================================================
    ' Sincronizar horário com o Servidor

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set objShell = CreateObject("WScript.shell")
    strCmd = "net time \\srv /set /yes"
    set objexec = objshell.exec(strcmd)


    Abrs...





    Wesley Porto Rodrigues .:. Network & Infraestructure Specialist .:. ITIL and Green IT Implementation
    quarta-feira, 21 de outubro de 2009 19:58
  • Wesley bom dia.

    Use a função CASE:

    Ex:

        Select Case WshNetwork.UserName

       Case "Fulano1"
       objNetwork.MapNetworkDrive "O:", "\\server\departamentos\vendas"
       objNetwork.AddWindowsPrinterConnection "\\server\hp_vendas"
       objNetwork.setdefaultprinter("\\server\hp_vendas")
       objShell.NameSpace("O:").Self.Name = "VENDAS"

       Case "Fulano2"
       objNetwork.MapNetworkDrive "O:", "\\server\departamentos\TI"
       objNetwork.AddWindowsPrinterConnection "\\server\hp_vendas"
       objNetwork.setdefaultprinter("\\server\hp_vendas")
       objShell.NameSpace("O:").Self.Name = "TI"


    Nesse link possui o materia que você precisa....

    http://msdn.microsoft.com/en-us/library/6ef9w614(VS.85).aspx


    " Qm tem boca vai a roma, meu fogão tem 6 e não saiu da cozinha ainda"
    quinta-feira, 22 de outubro de 2009 13:12
  • Olá,

    Utilize grupos para fazer os mapeamentos.

    Fazer por usuário é um problema. Imagine se você tiver 1000 usuários.

    Crie os grupos e coloque os usuários em cada grupo.

    Depois execute o script fazendo um case ou um if, conforme o exemplo abaixo:


    On Error Resume Next

    Const GG_1 = "cn=grupoA"
    Const GG_2 = "cn=grupoB"
    Const GG_3 = "cn=grupoC"
    Const GG_4 = "cn=grupoD"



    Set wshNetwork = CreateObject("WScript.Network")
    Set oDrives = WshNetwork.EnumNetworkDrives
    Set ADSysInfo = CreateObject("ADSystemInfo")
    'wscript.echo ADSysInfo.UserName
    Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
    DriveMapper "G:"
    DriveMapper "H:"
    DriveMapper "I:"
    DriveMapper "J:"



    arrMembersOf = CurrentUser.GetEx("memberOf")
    For Each strMembro in arrMembersOf
        mapear strMembro
        subGrupo strMembro
    Next

    '=========================================


    sub subgrupo(strcaminho)

    Set objGroup = GetObject("LDAP://" & strCaminho)
    objGroup.GetInfo

    arrSubMembro = objGroup.GetEx("memberOf")

    For Each strSubMember in arrSubMembro
       mapear strSubMember
    Next

    end sub

    '===========================================

    Sub DriveMapper(Drive)
    For i = 0 to oDrives.Count -1 Step 2
       if LCase(Drive) = LCase(oDrives.Item(i)) then
          WshNetwork.RemoveNetworkDrive Drive, true, true
       End if
    Next

    End sub

    '============================================

    Sub Mapear(strGrupoFIM)

    If InStr(UCASE(strGrupoFIM), UCASE(GG_1)) Then
       wshNetwork.MapNetworkDrive "G:", "\\server\compartilhamento1"
    End if

    If InStr(UCASE(strGrupoFIM), UCASE(GG_2)) Then
       wshNetwork.MapNetworkDrive "H:", "\\server\compartilhamento2"
    End if

    If InStr(UCASE(strGrupoFIM), UCASE(GG_3)) Then
       wshNetwork.MapNetworkDrive "I:", "\\server\compartilhamento3"
    End if

    If InStr(UCASE(strGrupoFIM), UCASE(GG_4)) Then
       wshNetwork.MapNetworkDrive "J:", "\\server\compartilhamento4"
    End If
     

    End sub



    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quinta-feira, 22 de outubro de 2009 13:30