David Bohm

Hay dos frases que definen mi manera de pensar:
Realmente no hemos prestado mucha atención al pensamiento como un proceso; hemos participado en pensamientos, pero sólo hemos prestado atención al contenido, no al proceso.
La capacidad de percibir o pensar de manera diferente es más importante que el conocimiento adquirido.
Ambas son de David Bohm.

miércoles, 2 de marzo de 2016

Script de powershell, impresora predeterminada

Una entrada rápida.

Tenemos de vez en cuando, en el trabajo, problemas con la desconfiguración de la impresora predeterminada. De vez en cuando pasa, la impresora predeterminada que te corresponde por usuario, por cercanía, por el motivo que sea, se cambia. Eso supone que cuando le das a imprimir, si no estás atento, tengas que ir a la impresora de otra planta o de otro edificio, el tema es gracioso.

La solución rápida que se me ha ocurrido es colocar en la carpeta inicio del usuario o de todos los usuarios, en este caso de Windows 7, los siguientes scripts:

Un archivo .bat que lanzará el script powershell, lo he llamado impresora_predeterminada.bat:

powershell.exe -noprofile ".\impresora_predeterminada.ps1" name_impresora computername

Pasamos dos argumentos, el primero es el nombre de la impresora y el segundo el del equipo. Tenemos que cambiarlo por los nombres correctos, en el caso del computername es sencillo, lo podemos mirar en Panel de control\Sistema. En el caso de la impresora, podemos lanzar un comando powershell que nos liste las impresoras y ahí podemos ver la propiedad name de cada una. En este caso tenemos que poner el Nombre del Equipo después de -ComputerName:

Get-WmiObject -Class Win32_Printer -ComputerName NombreDelEquipo

Cuando es una impresora en red, si miramos en sus propiedades aparecerá algo así como Multifuncion_Planta1 en ServidorImpresión, cuando realmente el name que veremos será \\ServidorImpresión\Multifuncion_Planta1. Es por eso que conviene usar el comando ver el name que tiene la impresora.

Por último, un archivo .ps1 que será el script de powershell, lo he llamado impresora_predeterminada.ps1

$impresora=$args[0]
$ordenador=$args[1]

(New-Object -ComObject WScript.Network).SetDefaultPrinter($impresora)

Cogemos los dos argumentos que entran al lanzar el powershell desde el .bat, el primero es el nombre de la impresora y el segundo es el nombre del equipo.

Con este script, siempre que arranquemos Windows, tendremos la impresora que configuremos en los scripts como impresora predeterminada.

SaluDOS.