3 votos

¿Problemas para automatizar la actualización del controlador de la impresora (configuración de la impresora) y las preferencias de la impresora en Win7, utilizando un PS,cmd,vbs,etc script?

WMI puede hacerlo, pero tengo un problema, los PCs están encendidos, pero desconectados. Si trato de ejecutar:

wmic /node:%strIP% printer where DeviceID="lp1" set DriverName="Lexmark Universal v2"

Falla con un mensaje sobre un "fallo genérico". Me meto en el RDP y luego ejecuto el mismo comando desde mi extremo, y funciona. La versión de Powershell que estoy utilizando es antigua, por lo que no tiene algunos de los cmdlets de la impresora, y la actualización de PS está actualmente fuera de la cuestión. ¿Hay alguna manera de iniciar la sesión de alguien de forma remota, sin tener que hacer RDP? ¿A través de PS, cmd, PSEXEC, etc.?

La otra vía que he tomado es usar el regedit, pero me estoy topando con algunos inconvenientes con eso, a saber, que no puedo saber qué copiar. En regedit, puedo cambiar el nombre del controlador y la configuración que permite la impresión a doble cara y la bandeja 2 (en la configuración de la impresora), pero no puedo averiguar cómo cambiar la configuración en las preferencias de la impresora para imprimir a doble cara y hacerlo a lo largo del borde largo.

Lo que hice para saber qué cambiar, fue buscar el nombre de la impresora en regedit como valor de datos y exportar las claves antes de cambiar la configuración. Luego lo exporté de nuevo DESPUÉS de cambiar la configuración. Luego utilicé fc /c /a /u before.reg after.reg para conseguir los cambios. He cortado el .reg para incluir sólo los valores cambiados. Ejecutar el .reg parece cambiar todo, pero la impresión de ambos lados, a lo largo de la configuración del borde largo. Es una impresora lexmark, así que me pregunto si tal vez las preferencias para ella se almacenan en otro lugar.

Mi empresa ha cambiado recientemente las políticas de seguridad en el sentido de que después de 30 minutos de inactividad, un PC se desconecta. No puedo realizar estos cambios de controladores durante las horas normales, cuando los PCs no están desconectados, por lo que hasta ahora se han realizado durante la noche por RDPing y haciendo PC por PC manualmente. Incluso no me importaría averiguar cómo registrar a alguien de forma remota, sin nunca RDPing en, por lo que WMI puede hacer su magia entonces.

Lo he intentado usando sólo Powershell:

$Str = Read-Host "Please select a store number [###] "
$PC = Read-Host "Please select a PC number [##] "

$PCNm = "0$Str-CCPC-$PC"

$lp1 = Get-WMIObject -ComputerName $PCNm -Query "SELECT * from Win32_Printer Where DeviceID='lp1'"
$lp1.DriverName = "Lexmark Universal v2"
$lp1.Put()

Ahí también falla con un fallo genérico, cuando no hay nadie conectado al pc. Puedo consultar las propiedades de WMI, así que WMI funciona, pero cuando intento establecer valores, falla. He verificado con un format-list -property drivername lo actualizó bien, una vez que me conecté a través de RDP y LUEGO ejecuté el script. Obviamente no quiero entrar por RDP en absoluto. Habilité PSRemoting en el PC, por si acaso también, así que voy a probar invoke-command siguiente.

1voto

DavidPostill Puntos 30286

¿Existe una forma de registrar a alguien de forma remota?

Puede utilizar psexec para ejecutar un comando remoto como un usuario particular.

psexec \\computer -u user -p psswd [options] command [arguments]

Pruebe el siguiente comando:

psexec \\computer -u user -p psswd wmic /node:%strIP% printer where DeviceID="lp1" set DriverName="Lexmark Universal v2"

Notas:

  • También es posible que quiera ver el @run_file (Ejecutar el comando en cada uno de los ordenadores que figuran en el archivo de texto especificado)
  • Para ejecutar contra todos los ordenadores del dominio actual, introduzca \\* en lugar de \\computer

Sintaxis

psexec \\computer[,computer[,..] [options] command [arguments]

psexec @run_file [options] command [arguments]

Opciones:

computer   The computer on which psexec will run command.
           Default = local system 
           To run against all computers in the current domain enter "\\*"
@run_file  Run command on every computer listed in the text file specified.

command    Name of the program to execute

...

-p psswd   Specify a password for user (optional). 
           Passed as clear text.
           If omitted, you will be prompted to enter a hidden password.

-u user    Specify a user name for login to remote computer(optional).

Fuente psexec


Más información

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X