miércoles, 22 de agosto de 2007

Renombrar impresoras en entornos terminal server


En muchos escenarios nos encontramos necesidades, que se ven cubiertas con los servicios de terminal server.
Suelen dar muy buenos resultados, y la forma de trabajar con ellos, para el usuario final, es cómoda, y no supone excesivas complicaciones.

Donde me he encontrado en multitud de ocasiones problemas, en estos entornos, es en lo referente a las impresiones.

Normalmente el problema de funcionamiento de las aplicaciones con las impresoras que conectamos a los servicios de terminal server, vienen dado por el nombre que cogen las impresoras del tipo:
nombre de impresora en sessión 1
Para solventar este problema, alguna vez he utilizado una serie de scripts los cuales nos permiten modificar los nombres de la impresora.

-Script para poner como nombre de impresora, el nombre del usuario que se loguea

--------------------------------------------------------------

strComputer = "."
Dim Shell
set shell = createobject("wscript.shell")
set env = shell.environment("process")
username = env("username")

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where default=true")

For Each objPrinter in colInstalledPrinters
objPrinter.RenamePrinter username
Next


------------------------------------------

- Script que nos deja renombrar la impresora con el nombre que queramos
nota: en negrita es donde tenemos que poner el nombre que queremos darla

-------------------------------



strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where default=true")

For Each objPrinter in colInstalledPrinters
objPrinter.RenamePrinter("nombre_impresora")
Next

---------------------------------------


A tener en cuenta...
-Se modificará la impresora que tengamos seleccionada como predeterminada.
-Los privilegios que debe de tener el usuario tienen que ser como mínimo los de "usuario avanzado"
-Los scripts es recomendable lanzarlos en el inicio de la sesión.
-Para generar los ficheros: Copiar los códigos en un txt y renombrarlos con extensión vbs.
-Después simplemente ejecutarlos

Saludos

14 comentarios:

Anónimo dijo...

Podrías explicar como ejecutar el script en el inicio de sesión de terminal server. Lo he intentado poniendolo en Programas -> Inicio, pero no realiza los cambios en la impresora.

Gracias.

David dijo...

Prueba a realizarlo de la siguiente manera. Create un fichero .bat de inicio, y haz la llamada al fichero script desde el fichero .bat creado. No se si me he liado si es así dímelo, y lo hacemos gráficamente.
Saludos

Anónimo dijo...

hola mi nombre es julio he tratado de buscar solucion a mi problema es que tengo muchos usuarios por terminal server y cada vesk inicia seccio pues no puede utilizar bien la impresora pork el sistema que manejan utilzan a una impresoara por un rata especificada el problema es k tengo k andar cambiando la ruta o o el numero de seccion por que al parecer no se conectan todas no lee todas las impresoras de cada una de las sucursales este metodo que dice se acerca muchisimo a lo que necesito pero lo hise con un bat y no me funciona por que no lo detallas mas por favor

Anónimo dijo...

Otra vez yo, ya funciono el problema que ahora tengo es k komo le asigno modificiacion a los usuarios en las impresora ya que no tieenen aceso a modificar el nombre komo le hago ya lo cheque en la directiva de dominio

Anónimo dijo...

Yo he conseguido iniciar el Script en el inicio de sesion utilizando un bat que se ejecuta cuando el usuario entra por TS, de forma que se espera 12 segundos a que se mapeen las impresoras. la renombra y me ejecuta una aplicacion. Os paso el texto que he empleado yo:

@echo off
@echo Comprobando configuracion de la red...
@echo Este proceso tardara unos pocos segundos.
>nul ping -n 12 localhost
cd\
cd windows
cd system32
@echo Renombrando la impresora de Tickets...
cscript c:\RImpresora1.vbs
@echo Nombre establecido...
@echo Iniciando el TPVGES...
c:
cd\
cd ******
****** 1

En este caso los 2 ficheros el bat y el vbs estan en la RAIZ pero se puede modificar, y ponerlos donde querais siempre que en el bat modifiqueis la ruta del VBS.

Saludos

Cristian dijo...

tengo la necesidad de realizar este procedimiento, pero mi server es de 64 bits por lo cual el scriptseñalado solo trabaja en 32 bits, si alguien tiene info agradeceria la ayuda

el primer dia del resto de mi vida dijo...

es raro hice todo lo que aca dice pero me renombra cualquier impresora no necesariamente la del usuario

que puede ser??


saludos

el primer dia del resto de mi vida dijo...

lo que olvidaba a cada usuario le parecen muchas impresoras hay forma de bajar este numero de impresoras
idealmente que aparesca solo la de casa usuario?

Anónimo dijo...

Con el software 2X que es gratuito hasta para 3 conexiones, se soluciona el problema de las impresoras ya que en la configuracion podemos decirle que las renombre de 3 formas diferentes.

El software esta en español y es muy sencillo de utilizar, yo lo tengo instalado en varios clientes y con diferentes sistemas operativos (XP/W2003/W7)

Oseas dijo...

Hola..
realice lo mencionan pero unicamente me renombra la que tengo como predeterminada en el servidor. no la del usuario que se loguea.

el scrip lo colo que el en la carpeta Sysvol\dominio\script

como hago que renombre la del usuario.?

Saludos

Gabriel dijo...

Hola muchas gracias, el script que cambia nombre anda bien, simplemente hago clik y hace el cambio, ahora tengo otro inconveniente, en la pc cliente tengo una impresora epson con un formato de papel especial, cuando me conecto via el ts esta impresora queda como "epson en la sesion bla bla" pero el tamaño de papel lo cambia no usa el formato que tengo en el cliente, y si ejecuto el script me crea la nueva impresora pero pierdo el formato de papel del cliente, me podrias orientar si hay algun script para resilver esto?
Chas gracias

Flako dijo...

Hola, de 9,99 tu script, modifique la idea y use cpau (http://www.joeware.net/freetools/tools/cpau/index.htm) para correr el script con permisos de administrador. (soluciona el problema de los permisos de usuario)

Lo malo que he notado, es que si te pones a renombrar las impresoras mientras estan cargado, luego cuando el user cierra sesion, estas no desaparecen ser servidor. Windows 2003R2 tira: "The printer Reparto(hp333 on WKJose (from WKPepe) in session 1 could not be deleted."

No he encontrado la forma de saber via script cuando se terminan de cargar, o como solucionar el problema, te a pasado? o solo a mi?
Saludos.

Anónimo dijo...

Gracias por compartir el SCRIPT.
Por favor podéis confirmar si funciona con WINDOWS 2008 TERMINAL SERVER.
En caso afirmativo que cambios se deben de realizar para que el usuario que ejecuta el script tenga permisos para poder cambiar el nombre de la impresora redirigida.

Gracias
Saludos cordiales,
Josep Cifre

Anónimo dijo...

No, me temo que en Windows 2008 no funciona este Script, lo he probado y no me realiza el cambio de nombre.
A ver si alguien nos puede echar una mano.
Un saludo