viernes, 5 de noviembre de 2010

Mapeo de impresoras

El siguiente ejemplo, muestra como mapear impresoras de red con un script de PowerShell basándose en el departamento al que pertenecen los usuarios.

Condiciones:

1) Los usuarios del Directorio Activo tienen que tener el atributo department rellenado con el departamento al que pertenecen.
2) Las impresoras tienen que estar publicadas en el Directorio Activo y el atributo location tiene que contener un nombre de departamento.

El script recorre todas las impresoras y mapea al usuario las impresoras cuyo atributo location coincide con el atributo department del usuario.

###Función que mapea la impresora

function mapear_impresora([string]$ruta)
{

$net = New-Object -com WScript.Network;
$impresoras=$net.EnumPrinterConnections()
if ($impresoras -like $ruta) {$net.RemovePrinterConnection($ruta,$true)}
$net.AddWindowsPrinterConnection($ruta)
}


#Obtenemos el usuario que inicia la sesión.

$usuario = $env:username
$filtro = "(&(objectCategory=User)(samAccountName=$usuario))"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $filtro
$objPath = $objSearcher.FindOne()
$objUser = $objPath.GetDirectoryEntry()

###Obtenemos las impresoras del Directorio Activo

$filtroimpresora = "(&(objectCategory=PrintQueue))"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $filtroimpresora
$objPath2=$objSearcher.FindAll()


###Mapeos por usuario

for($n=0;$n -lt $objPath2.Count;$n++) { if ( $objPath2[$n].Properties.location -eq $objUser.Properties.department ) { mapear_impresora -ruta $objPath2[$n].Properties.uncname } }

Este script se puede asociar a una directiva de grupo como script de inicio de los usuarios.

2 comentarios:

  1. Como podría modificar este script para que, en un dominio donde los usuarios no tienen permiso de administración, no requiera tener que introducir el usuario administrador?

    ResponderEliminar
  2. Mira a ver que valor tienes en la directiva Dispositivos:Impedir que los usuarios instalen controladores de impresoras. (secpol.msc, Directivas locales, Opciones de seguridad). Tiene que estar en Deshabilitado.
    El script tiene que funcionar aunque no seas administrador de la máquina.

    ResponderEliminar