none
Script Logon RRS feed

  • Pergunta

  • Boa tarde...
    Sou leigo nesta área de scripts e verifiquei alguns aqui onde tentei adapta-los mas não consegui entender muito bem a dinâmica dos mesmo...vamos lá..o que preciso....Tenho uma estrutura de AD e gostaria de fazer um script que tivesse + -  a seguinte lógica:

    Todos meus usuários ficam definidos dentro do AD em OU´s diversas...então tenho por exemplo uma OU=Financeiro   outra OU=ADM e assim vai...são muitas...e tenho um bat para cada uma..ou seja...cada uma carrega um perfil nesse bat via GPO...e a mesma carregando esse bat me faz o mapeamento da rede para cada perfil...
    Queria criar um script em vbs...único, independente de qual OU o logon esteja ele deve fazer os seguintes passos:

    1 - Verificar qual OU o logon se encontra
    2 - Carregar o mapeamento de rede daquela OU especifica (onde esse mapeamento pode ser definido no proprio vbs...algo do Genero IF OU=ADM carrega o mapeamento de rede para ADM...IF OU=Financeiro....carrega o mapeamento de rede para financeiro...)
    3 - Carregar o mapeamento de impressoras de um Security Group - Global especifico no mesmo procedimento do mapeamento de rede

    Assim....tendo um script único, não precisaria ter N arquivos .BAT para logon como tenho hoje...pois utilizaria a lógica....SE o usuário é de X OU carrega X mapeamento de rede e SE está em X Security Group - Global, carrega X mapeamento de impressoras...

    É possível?

    Rombesso
    segunda-feira, 13 de junho de 2011 15:17

Respostas

  • Olá Edgar.

    Pelo que você perguntou...sim! Its possible! Porém você terá de adaptar o codigo conforme sua necessidade.

    Veja um exemplo no qual ele consulta o grupo do usuário e efetua o mapeamento....

    Const ENGINEERING_GROUP   = "cn=engineering" 
    Const FINANCE_GROUP     = "cn=finance" 
    Const HUMAN_RESOURCES_GROUP = "cn=human resources"
    
    
    
    Set wshNetwork = CreateObject("WScript.Network") 
    wshNetwork.MapNetworkDrive "h:", "\\FileServer\Users\" & wshNetwork.NomeUsuário 'mapeamento pasta pessoal
    
    'Obtem os dados do AD
    Set ADSysInfo = CreateObject("ADSystemInfo") 
    Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName) 
    strGroups = LCase(Join(CurrentUser.MemberOf))
    
    'Inicia o If da consulta.
    If InStr(strGroups, ENGINEERING_GROUP) Then
    
      	wshNetwork.MapNetworkDrive "g:", "\\FileServer\Engineering\" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\EngLaser" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\Plotter" 
    	wshNetWork.SetDefaultPrinter "\\PrintServer\EngLaser"
    
    ElseIf InStr(strGroups, FINANCE_GROUP) Then
    
      	wshNetwork.MapNetworkDrive "g:", "\\FileServer\Finance\" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\FinLaser" 
    	wshNetWork.SetDefaultPrinter "\\PrintServer\FinLaser"
    
    ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
    
      	wshNetwork.MapNetworkDrive "g:", "\\FileServer\Human Resources\" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\HrLaser" 
    	wshNetWork.SetDefaultPrinter "\\PrintServer\HrLaser"
    
    End If
    

    Lógico, lembrando que aqui o código é bem simples. Porém no sistema de search do site você poderá procurar por "n" exemplos e formas de executar.

    Qualquer dúvida poste! E se útil classifique!

    []s,
     


    " Qm tem boca vai a roma, meu fogão tem 6 e não saiu da cozinha ainda"
    • Marcado como Resposta Edgar Rombesso quinta-feira, 21 de julho de 2011 18:31
    segunda-feira, 13 de junho de 2011 17:40
  • Legal Marcellus....já consigo adaptar seu código para o que preciso..porém, dentro de parte do código abaixo...

     

    ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
    
     	wshNetwork.MapNetworkDrive "g:", "\\FileServer\Human Resources\" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\HrLaser" 
    	wshNetWork.SetDefaultPrinter "\\PrintServer\HrLaser"


    queria ainda incluir a seguinte condição: antes de mapear o drive de rede e a impressora e definir como padrão, queria que ele removesse qualquer mapeamento que tivesse, mesmo sem saber qual e também qualquer impressora, mesmo sem saber qual.....tem como?


    Rombesso
    • Marcado como Resposta Edgar Rombesso quinta-feira, 21 de julho de 2011 18:30
    terça-feira, 14 de junho de 2011 13:29

Todas as Respostas

  • Olá Edgar.

    Pelo que você perguntou...sim! Its possible! Porém você terá de adaptar o codigo conforme sua necessidade.

    Veja um exemplo no qual ele consulta o grupo do usuário e efetua o mapeamento....

    Const ENGINEERING_GROUP   = "cn=engineering" 
    Const FINANCE_GROUP     = "cn=finance" 
    Const HUMAN_RESOURCES_GROUP = "cn=human resources"
    
    
    
    Set wshNetwork = CreateObject("WScript.Network") 
    wshNetwork.MapNetworkDrive "h:", "\\FileServer\Users\" & wshNetwork.NomeUsuário 'mapeamento pasta pessoal
    
    'Obtem os dados do AD
    Set ADSysInfo = CreateObject("ADSystemInfo") 
    Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName) 
    strGroups = LCase(Join(CurrentUser.MemberOf))
    
    'Inicia o If da consulta.
    If InStr(strGroups, ENGINEERING_GROUP) Then
    
      	wshNetwork.MapNetworkDrive "g:", "\\FileServer\Engineering\" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\EngLaser" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\Plotter" 
    	wshNetWork.SetDefaultPrinter "\\PrintServer\EngLaser"
    
    ElseIf InStr(strGroups, FINANCE_GROUP) Then
    
      	wshNetwork.MapNetworkDrive "g:", "\\FileServer\Finance\" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\FinLaser" 
    	wshNetWork.SetDefaultPrinter "\\PrintServer\FinLaser"
    
    ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
    
      	wshNetwork.MapNetworkDrive "g:", "\\FileServer\Human Resources\" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\HrLaser" 
    	wshNetWork.SetDefaultPrinter "\\PrintServer\HrLaser"
    
    End If
    

    Lógico, lembrando que aqui o código é bem simples. Porém no sistema de search do site você poderá procurar por "n" exemplos e formas de executar.

    Qualquer dúvida poste! E se útil classifique!

    []s,
     


    " Qm tem boca vai a roma, meu fogão tem 6 e não saiu da cozinha ainda"
    • Marcado como Resposta Edgar Rombesso quinta-feira, 21 de julho de 2011 18:31
    segunda-feira, 13 de junho de 2011 17:40
  • Legal Marcellus....já consigo adaptar seu código para o que preciso..porém, dentro de parte do código abaixo...

     

    ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
    
     	wshNetwork.MapNetworkDrive "g:", "\\FileServer\Human Resources\" 
    	wshNetwork.AddWindowsPrinterConnection "\\PrintServer\HrLaser" 
    	wshNetWork.SetDefaultPrinter "\\PrintServer\HrLaser"


    queria ainda incluir a seguinte condição: antes de mapear o drive de rede e a impressora e definir como padrão, queria que ele removesse qualquer mapeamento que tivesse, mesmo sem saber qual e também qualquer impressora, mesmo sem saber qual.....tem como?


    Rombesso
    • Marcado como Resposta Edgar Rombesso quinta-feira, 21 de julho de 2011 18:30
    terça-feira, 14 de junho de 2011 13:29