none
Script de impressora com AD RRS feed

  • Pergunta

  • Bom Dia Amigos

     

    Estou precisando mapear algumas impressoras aqui na minha rede, e ocorre que no meu Active directory a estrutura de OU está desenvolvida da seguinte forma:

    Ou dentro de outra OU ( Ex.: a OU Administrativo está dentro da OU SBC. A OU comercial está dentro da OU Administrativo que está dentro de sbc e assim por diante.

     

    sbc

    administrativo

    comercial

    exportacao

    marketing

    representantes

     

     

    Consegui um script em VBS que faz o mapeamento das impressoras, mas ele não consegue fazer essa leitura das OUs da forma como está estruturada aqui na empresa, segue abaixo um trecho do Script:

     

    Code Snippet

    On error Resume Next
    Err.clear 0

    Set objUser = WScript.CreateObject("WScript.Network")
    wuser=objUser.UserName
    If Time <= "12:00:00" Then
    MsgBox ("Bom Dia "+Wuser+", SUA IMPRESSORA FOI ALTERADA....TENHA CALMA USUARIO!")
    ElseIf Time >= "12:00:01" And Time <= "18:00:00" Then
    MsgBox ("Boa Tarde "+Wuser+", SUA IMPRESSORA FOI ALTERADA....TENHA CALMA USUARIO!")
    Else
    MsgBox ("Boa Noite "+wuser+", SUA IMPRESSORA FOI ALTERADA....TENHA CALMA USUARIO!")
    End If

    Const NETWORK = 22

    Set objNetwork = CreateObject("WScript.Network")

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
        
    For Each objPrinter in colPrinters
        If objPrinter.Attributes And NETWORK Then
            strPrinter = objPrinter.Name
            objNetwork.RemovePrinterConnection strPrinter
        End If
    Next

    Set objSysInfo = CreateObject("ADSystemInfo")

    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)

    For Each strGroup in objUser.MemberOf
        strGroupPath = "LDAP://" & strGroup
        Set objGroup = GetObject(strGroupPath)
        strGroupName = objGroup.CN

        Select Case strGroupName

     Case "Administrativo"
                objNetwork.AddWindowsPrinterConnection "\\W2K3PRT01\HP4345-Controladoria"
         objNetwork.SetDefaultPrinter "\\W2K3PRT01\HP4345-Controladoria"
                objNetwork.AddWindowsPrinterConnection "\\W2K3PRT01\HP4345-Mezanino"

                 objNetwork.AddWindowsPrinterConnection "\\W2K3PRT01\HP4345-Mezanino"

      Case "TI"
                objNetwork.AddWindowsPrinterConnection "\\W2K3PRT01\HP4345-CPD"
         objNetwork.SetDefaultPrinter "\\W2K3PRT01\HP4345-CPD"
                objNetwork.AddWindowsPrinterConnection "\\W2K3PRT01\HP4345-Mezanino"
                objNetwork.AddWindowsPrinterConnection "\\W2K3PRT01\HP3505-Presidencia"

        End Select
    Next

    Wscript.Quit

     

     

     

     

     

     

    Gostaria de saber o que eu preciso alterar em meu script para que ele funcione.

     

    Desde já agradeço.

     

     

     

     

     

    terça-feira, 3 de junho de 2008 15:05

Respostas

  • Boa Tarde,

    Só criar um arquivo .VBS para cada Setor por exemplo, com suas impressoras.

    Exemplo:

    Set WshNetwork = CreateObject("WScript.Network")
    WshNetwork.AddWindowsPrinterConnection "\\PrintServer1\Xerox300"
    WshNetwork.SetDefaultPrinter "\\PrintServer1\Xerox300"

    Casos:

    ' Inicio do script
     
    Set objSysInfo = CreateObject("ADSystemInfo")
    Set WshNetwork = CreateObject("Wscript.Network")
     
    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)
     
    objMemberOf = objUser.GetEx("MemberOf")
    objUserName = objUser.Get("givenName")
     
    For Each strGroup in objMemberOf
    strGroupPath = "LDAP://" & strGroup
    Set objGroup = GetObject(strGroupPath)
    strGroupName = objGroup.CN
     
    Select Case strGroupName
    Case "CCPS1209_G_IR3225_P&B_QSMS"
    WshNetwork.AddWindowsPrinterConnection "\\1209srvfs01\IR3225_COPIADORA_QSMS"
     
    Case "CCPS1209_G_HP3600_INSTRUMENTACAO"
     WshNetwork.AddWindowsPrinterConnection "\\1209srvfs01\HP_COLOR_INSTRUMENTACAO"
      
    Case "CCPS1209_G_IRC2550_COLOR_EC"
     WshNetwork.AddWindowsPrinterConnection "\\1209srvfs01\IRC2550_COLORIDA"
     
    End Select
     Next
     
    ' Fim do scrip

    Material de Apoio, costumo fazer por GPO é bem mais eficiente.

    http://www.youtube.com/watch?v=x5iaqEdu2G0

    Abs


    * Ajude a organizar melhor o Fórum, dando Feedback sobre a dúvida solicitada, e marcando como Útil e como Resposta, a postagem dos colaboradores que resolveram o seu caso, ou foram úteis *

    domingo, 3 de junho de 2012 18:13
    Moderador