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

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

WMI puede hacerlo, pero tengo un problema: las PC están encendidas, pero desconectadas. Si intento ejecutar:

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

Falla con un mensaje sobre un "fallo genérico". Introduzco RDP y luego ejecuto el mismo comando desde mi parte, y funciona. La versión de Powershell que estoy usando es anterior, por lo que no tiene algunos de los cmdlets de la impresora y actualmente no es posible actualizar PS. ¿Hay alguna manera de iniciar sesión remotamente para alguien, sin tener que iniciar sesión en RDP? ¿A través de PS, cmd, PSEXEC, etc.?

La otra vía que he tomado es usar regedit, pero tengo algunos problemas con eso, es decir, que no puedo saber qué copiar. En regedit, puedo cambiar el nombre del controlador y la configuración que habilita la impresión dúplex y la bandeja 2 (en la configuración de la impresora), pero no puedo entender 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 descubrir 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é nuevamente DESPUÉS de cambiar la configuración. Luego solía fc /c /a /u before.reg after.regrecibir los cambios. Corté el .reg para incluir solo los valores modificados. Ejecutar el .reg parece cambiar todo, pero imprime en ambos lados, a lo largo de la configuración del borde largo. Es una impresora Lexmark, por lo que me pregunto si tal vez las preferencias estén almacenadas en otro lugar.

Mi empresa cambió recientemente las políticas de seguridad de modo que después de 30 minutos de inactividad, se cierra la sesión de una computadora. No se pueden realizar estos cambios de controlador durante el horario habitual, cuando las PC NO están desconectadas, por lo que a partir de ahora se realizan durante la noche mediante RDP y haciendo PC por PC manualmente. Ni siquiera me importaría descubrir cómo iniciar sesión en alguien de forma remota, sin siquiera realizar RDP, para que WMI pueda hacer su magia en ese momento.

Lo intenté usando solo 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()

Allí también falla con una falla genérica, cuando nadie inicia sesión en la PC. Puedo consultar propiedades en WMI, por lo que WMI funciona, pero cuando intento establecer valores, falla. Verifiqué que format-list -property drivernamelo actualizó bien, una vez que inicié sesión a través de RDP y ENTONCES ejecuté el script. Obviamente no quiero RDP en absoluto. Habilité PSRemoting en la PC, por si acaso también, así que lo intentaré invoke-commanda continuación.

Respuesta1

¿Hay alguna forma de iniciar sesión remotamente?

Puede utilizar psexecpara ejecutar un comando remoto como un usuario en 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:

  • Es posible que también quieras mirar la @run_fileopción (Ejecutar comando en cada computadora enumerada en el archivo de texto especificado)
  • Para ejecutar en todas las computadoras del dominio actual, ingrese \\*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).

Fuentepsexec


Otras lecturas

información relacionada