Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - efer27

#21
Hola,

probe el script que me comento  0,0 y me sale este error ??

Microsoft (R) Windows Script Host versión 5.8
Copyright (C) Microsoft Corporation 1996-2006. Reservados todos los derechos.

\\192.168.2.140\netlogon\prueba.vbs(20, 47) Error de compilación de Microsoft VBScript: Error de sintaxis


***** script completed - exit code: 1 *****

Linea en el que sale error .

20                msgbox "Deleting:" & vbcrlf &
#22
Hola,

Gracias 0,0 por responder a mi preguntael script esta bien.

Que cambios se tendria que hacer ??


Saludos
#23
Hola Novlucker,

probe el script y no me agrega ninguna impresora.

si suena bien esto de cambiar el nombre del servidor pero hay que tener en cuenta si el equipo es nuevo como saber que impresoras le corresponde ???.

saludos
#24
Hola,

te comento prueba1 prueba2 y prueba3 son grupos que eh creado en mi Active directory para realizar pruebas.

la estructura seria asi :

Prueba1(OU)            Prueba2(OU)             Prueba3 (OU)
\\server\impresora  \\server\impresora     \\server\impresora

lo que quiero es que cuando inicie la sesion el usuario valide al grupo que pertenece y asi pueda asignar la impresora.

otra opcion seria que verifique que impresoras tiene el usuario y solo cambie la ruta del servidor a donde imprimira.

son opciones no se cual me recomiendas.

sobre los tutoriales estan muy bien, si lo pudieras terminar y poner algunos ejemplos para poder practicar seria genial.

Saludos
#25
Hola,

Gracias por la pronta respuesta, si el script es muy extenso. si hay alguna manera de acortarlo seria bueno.

esta es la estructura del CSV
Prueba1                                 Prueba2                      Prueba3
\\server1\123456                 \\server1\123456              \\server1\12345678
\\server1\12345678      

estoy probando en maquinas virtuales para luego pasarlo a lo real.
claro si se puede hacer mas simple y me puedes indicar como hacerlo te lo agradecere.

otra consulta, aparte de los tutoriales que publicaste y muchos ejemplos en el foro, conoceras algun buen libro el cual pueda leer para poder practicar, Si esta en castellano seria mejor.

Saludos

#26
Hola,

la respuesta esta muy bien, pero disculpar mi ignorancia eh estado probando introducir el codigo con la ruta del archivo y no me puedo aclarar, no se si me puedes orientar si lo que reemplazo esta correcto, me estoy iniciando en este campo y aun no lo tengo muy claro, ya descarge los manuales que me indicaste y estan muy bien.

se que hay veces estos temas cansan cuando las personas son novatas y en verdad debe ser algo facil.

si los cambios que realizo son solo en estas lineas o afectaran a las demas ?

saludos


Código (vb) [Seleccionar]
Function texto


ArrayCols = Array ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O","P","Q", "R", "S", "T", "U","V","W","X","Y","Z")
                        'Define la tabla con letras, para hacer búsquedas secuenciales en el excel.
 Dim libro
 Dim Intfil,Intcol
 Dim archivotexto

Set objfso = createobject("scripting.filesystemobject")
Set archivotexto = objfso.opentextfile("C:\impresoras1.txt",1) 'abrimos el archivo
msgbox archivotexto.readline 'leemos una linea, la primera
archivotexto.skipline 'saltamos una linea
msgbox archivotexto.readline 'leemos una linea, la tercera
archivotexto.close 'cerramos el archivo

 'RutaExcel = "C:\impresoras1.xls"
' Set libro = Wscript.CreateObject("Excel.Application")
 Call libro.Workbooks.Open(archivotexto,0)

  libro.Sheets(1).Activate
       Intcol = 0                                 'esto es un hack, para no declarar más veces la variable
do
               IntFil = 1
               if Getgroup (Username,libro.Range(ArrayCols(Intcol) & Intfil).Text) = True then 'Comprueba si el usuario pertenece al grupo 'Recorre las columnas y luego las filas, comparando si es distinto de espacio en blanco, en caso negativo, si la fi
Do while libro.Range(ArrayCols(Intcol) & Intfil+1).Text <>  ""
                              wscript.echo "Instalando la impresora : " & libro.Range(ArrayCols(Intcol) & Intfil+1).Text & " espere... "
                              Objnet.AddWindowsPrinterConnection libro.Range(ArrayCols(Intcol) & Intfil+1).Text  'instala impresora
                              IntFil = IntFil + 1
Loop
                       intfil = 1 'Para volver a la primera fila otra vez y comparar
end if
               Intcol = Intcol + 1
loop while  libro.Range(ArrayCols(Intcol) & Intfil).Text <> ""
       libro.Quit 'IMPORTANTÍSIMOOOOOOOOO. es como los accesos via ADOdb. Se ha de cerrar conexion sino queda zombi
end function
#27
Un saludo para todos,

espero que alguien me pueda ayudar soy nuevo en el mundo de script y me gustaria aprender.

bueno mi pregunta es la siguiente. Tengo un servidor de impresoras con mas de 100  impresoras y lo migre a otro servidor, ahora necesito que los usuario se les mapee las impresoras al nuevo servidor, revisando encontre este script que lee desde un excel y mapea las impresoras, mi problema es como puedo cambiar la instruccion del excel para que me lea de una archivo CSV o TXT, adjunto el script para que alguien me pueda ayudar

si se puede reducir el codigo seria excelente.


Saludo

Código (vb) [Seleccionar]
#############################################333
Dim ObjNet,ObjGroup                                  
Dim ComputerName,UserNamedim,CompType                

'###Fin declaración variables#####################################################################

'###creación objetos    

Set OBJnet = CreateObject("WScript.Network")           'crea el objeto net

'###fin creación objetos###########################################################################


'####inicialización  variables#####################################################################

  ComputerName = ObjNet.ComputerName             'no necesita explicación...
  UserName = ObjNet.username                     'coje el nombre
 

'### fin de inicialización variables ##################################################################

'### MAIN ############################################################################################

if not existe then 'Comprueba que existe el fichero c:\temp\existe.txt. si no existe, es la primera vez que se ha entrado
   WScript.Echo "User Name:        " & UserName
   WScript.Echo "computername:     " & ComputerName
   wscript.echo "tipo de máquina : " & tipoMaquina(ComputerName)'Por el tipo de letra del nombre, determina tipo de máquina.

    RemoveAllPrinters 'LAS BORRA TODAS BIEN BORRADAS.
    wscript.echo excel
   createafile 'crea el archivo para no ejecutar más el script.
end if

'###END MAIN ############################################################################################


'###FUNCIONES y RUTINAS ##############################################################################################

Function TipoMaquina(strcomputername)
on error resume next
CompType = ucase(mid(StrComputerName,6,1))                'determina que tipo de maquina es por la letra del nombre                                                                     'Desktop(D),Laptop(L) o server(0)
        select case CompType
case "D" TipoMaquina = "desktop"
case "N" TipoMaquina = "Laptop"
case "0" TipoMaquina= "servidor"
case else TipoMaquina = "error"
       end select

End Function



sub MapDrive(strDrive,strShare)                           'intenta mapear la unidad vía funcion y devuelve error false o true
on error resume next                              ' si no se pone, para en el error y no comprueba el condicinoal del Err
ObjNet.MapNetworkDrive strDrive,strShare
       If Err  Then
ObjNet.RemoveNetworkDrive strDrive
              ObjNet.MapNetworkDrive strDrive,strShare
       End If
End sub



function  Getgroup(user,group) 'devuelve true or false dpendiendo si es del grupo o no. No hay otra manera de hacerlo
Dim DomainName
DomainName = "WinNT://MIDOMINIO/" 'cambiar al dominio propio.
   
         on error resume next

         Set ObjGroup = GetObject(DomainName &group)
          if err then
          wscript.echo "No existe el grupo : "&group
          GetGroup = False
          else
              If ObjGroup.IsMember(DomainName&user) = true Then
        wscript.Echo "si, pertenece al grupo "&group
                    Getgroup = True
              Else
                wscript.Echo "No pertenece al grupo "&group
                Getgroup = False
                End If
                end if
end function

Function Excel

ArrayCols = Array ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O","P","Q", "R", "S", "T", "U","V","W","X","Y","Z")
                        'Define la tabla con letras, para hacer búsquedas secuenciales en el excel.
 Dim libro
 dim Intfil,Intcol
 dim RutaExcel
 RutaExcel = "\\RUTA_AL_EXCEL"
 set libro = Wscript.CreateObject("Excel.Application")
 call libro.Workbooks.Open(RutaExcel,0)

  libro.Sheets(1).Activate
       Intcol = 0                                 'esto es un hack, para no declarar más veces la variable
do
               IntFil = 1
               if Getgroup (Username,libro.Range(ArrayCols(Intcol) & Intfil).Text) = True then 'Comprueba si el usuario pertenece al grupo 'Recorre las columnas y luego las filas, comparando si es distinto de espacio en blanco, en caso negativo, si la fi
Do while libro.Range(ArrayCols(Intcol) & Intfil+1).Text <>  ""
                              wscript.echo "Instalando la impresora : " & libro.Range(ArrayCols(Intcol) & Intfil+1).Text & " espere... "
                              Objnet.AddWindowsPrinterConnection libro.Range(ArrayCols(Intcol) & Intfil+1).Text  'instala impresora
                              IntFil = IntFil + 1
Loop
                       intfil = 1 'Para volver a la primera fila otra vez y comparar
end if
               Intcol = Intcol + 1
loop while  libro.Range(ArrayCols(Intcol) & Intfil).Text <> ""
       libro.Quit 'IMPORTANTÍSIMOOOOOOOOO. es como los accesos via ADOdb. Se ha de cerrar conexion sino queda zombi
end function

Function RemoveAllPrinters
On Error Resume Next
set objNetwork = CreateObject("wscript.network")
Set objPrinters = objNetwork.EnumPrinterConnections
For i = 0 to objPrinters.Count - 1 Step 2
   PrinterPath = objPrinters.Item(i+1)
   wscript.echo  "eliminando impresora : " & printerpath & " Espere..."
   objNetwork.RemovePrinterConnection PrinterPath, true, true
Next

end function

Function existe
Dim Exist
  Set Exist = CreateObject("Scripting.FileSystemObject")
  If (Exist.FileExists("c:\temp\existe.txt")) Then
   existe = True
  Else
    existe = False
  End If

End Function


Sub CreateAfile
  Dim fso, MyFile
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set MyFile = fso.CreateTextFile("c:\temp\existe.txt", True)
  MyFile.Close
End Sub