none
Refinar VbScript Login RRS feed

  • Pergunta

  • Bom dia Amigos, 

    Estou montando um script, que configura proxy, mapeia unidades, impressoras e de acordo com o grupo do AD, define impressora padrão.

    Porém, vejo que ele está meio bagunçado, e queria a sugestão de vocês para refiná-lo, e além disso, descobrir porque o Case não está funcionando.

    Segue o Script abaixo:

    'Inserindo Proxy no Internet Explorer e Liberando Excecoes

    proxy = "1.1.1.1"                 '(valores fictícios)
    porta = "1"
    ligdesl = "1"
    excpt = "1;<local>"
    home = "1"

    ON ERROR RESUME NEXT

    Set objFSO = CreateObject("Scripting.FileSystemObject")
     Set Wshs = WScript.CreateObject("WScript.Shell")
     'Const OverwriteExisting = true

    set oShell = Wscript.CreateObject("Wscript.Shell")

    oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", ligdesl, "REG_DWORD"
    oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer", proxy & ":" & porta , "REG_SZ"
    oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride", excpt, "REG_SZ"
    oShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", home, "REG_SZ"
    Set oShell = Nothing

    ON ERROR RESUME NEXT

    'Mapeamento Padrão dos usuarios

    Set objNet = CreateObject("Wscript.Network")
    Dim volume, volume1, volume2
    volume = "\\server\compartilhamento"
    volume1 = "\\server\compartilhamento"
    volume2 = "\\server\compartilhamento"
    objNet.MapNetworkDrive "I:", volume
    objNet.MapNetworkDrive "P:", volume1
    objNet.MapNetworkDrive "U:", volume2

    ON ERROR RESUME NEXT

    'Instala Impressoras
    set objNetwork = CreateObject("Wscript.Network")
    Set ADSysInfo = CreateObject("ADSystemInfo")
    Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)            '(Aqui é assim mesmo? Vai alguma outra informação?)
    strGroups = LCase(Join(CurrentUser.MemberOf))

    objNetwork.AddWindowsPrinterConnection "\\server\PRT01"
    objNetwork.AddWindowsPrinterConnection "\\server\PRT02"
    objNetwork.AddWindowsPrinterConnection "\\server\PRT03"
    objNetwork.AddWindowsPrinterConnection "\\server\PRT04"

    select Case strGroups

    case "PRT-ADMINISTRATIVO"
    objNetwork.SetDefaultPrinter "\\server\PRT01"

    case "PRT-SHOWSEVENTOS"
    objNetwork.SetDefaultPrinter "\\server\PRT04"

    case "PRT-GERENCIA"
    objNetwork.SetDefaultPrinter "\\server\PRT04"

    case "PRT-SUPERVISAO"
    objNetwork.SetDefaultPrinter "\\server\PRT03"

    case "PRT-USUARIOSGERAIS"
    objNetwork.SetDefaultPrinter "\\server\PRT04"

    case "PRT-EVENTOS"
    objNetwork.SetDefaultPrinter "\\server\PRT04"

    end Select

    Desde já, muito obrigado!



    • Editado Mbaymone quarta-feira, 6 de junho de 2012 20:34 Correção erros digitação
    quarta-feira, 6 de junho de 2012 15:39

Respostas

  • O objeto grupo que vc está utilizando traz o caminho LDAP de cada grupo e no case vc não está utilizando o caminho LDAP e só o nome do grupo, então não vai funcionar, mudei no script abaixo pra vc poder usar só o nome do grupo.

    Outra dica: Quando estiver com problemas no script retire as linhas on error resume next, assim você vai ver o erro

    dica 2: geralmente um unico on error resume next é suficiente para todo script

    Set Wshs = WScript.CreateObject("WScript.Shell")
    'Const OverwriteExisting = true
    
    set oShell = Wscript.CreateObject("Wscript.Shell")
    
    oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", ligdesl, "REG_DWORD"
    oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer", proxy & ":" & porta , "REG_SZ"
    oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride", excpt, "REG_SZ"
    oShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", home, "REG_SZ"
    Set oShell = Nothing
    
    
    
    'Mapeamento Padrão dos usuarios
    Set objNet = CreateObject("Wscript.Network")
    Dim volume, volume1, volume2
    volume = "\\server\compartilhamento"
    volume1 = "\\server\compartilhamento"
    volume2 = "\\server\compartilhamento"
    objNet.MapNetworkDrive "I:", volume
    objNet.MapNetworkDrive "P:", volume1
    objNet.MapNetworkDrive "U:", volume2
    
    
    
    'Instala Impressoras
    set objNetwork = CreateObject("Wscript.Network")
    Set ADSysInfo = CreateObject("ADSystemInfo")
    Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)            '(Aqui é assim mesmo? Vai alguma outra informação?)
    strGroups = LCase(Join(CurrentUser.MemberOf))
    
    objNetwork.AddWindowsPrinterConnection "\\server\PRT01"
    objNetwork.AddWindowsPrinterConnection "\\server\PRT02"
    objNetwork.AddWindowsPrinterConnection "\\server\PRT03"
    objNetwork.AddWindowsPrinterConnection "\\server\PRT04"
    
    
    
    strDom = objNetwork.UserDomain
    strUser = objNetwork.UserName
    
    Set objUser = GetObject("WinNT://" & strDom & "/" & strUser &  ",user")
    
    
    For Each objGroup In objUser.Groups
    
    	Select Case ucase(objGroup.Name)
    	
    		case "PRT-ADMINISTRATIVO"
    			objNetwork.SetDefaultPrinter "\\server\PRT01"
    
    		case "PRT-SHOWSEVENTOS"
    			objNetwork.SetDefaultPrinter "\\server\PRT04"
    
    		case "PRT-GERENCIA"
    			objNetwork.SetDefaultPrinter "\\server\PRT04"
    
    		case "PRT-SUPERVISAO"
    			objNetwork.SetDefaultPrinter "\\server\PRT03"
    
    		case "PRT-USUARIOSGERAIS"
    			objNetwork.SetDefaultPrinter "\\server\PRT04"
    
    		case "PRT-EVENTOS"
    			objNetwork.SetDefaultPrinter "\\server\PRT04"
    
        End Select
    
    Next

    Ref.:

    Criar Scripts de Logon usando grupos

    social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/e3b016c6-c62e-4ce4-823f-15349f4c0c12/#fb026be9-5bd2-4f79-9a26-80cf453753cc


    Fábio de Paula Junior


    quinta-feira, 7 de junho de 2012 01:44
    Moderador