Por razones que están fuera de mi control, me encargaron configurar GPO / GPP para implementar nuestras más de 100 impresoras en nuestros más de 1000 clientes.
La buena noticia es que tenemos más de una docena de sitios y, en su mayor parte, tengo permiso para enviar todas las impresoras en el sitio X a todas las PC clientes en el sitio X.
La mala noticia es que las dos formas en que sé cómo hacerlo ( "Implementar con la Política de grupo ...", desde el servidor de impresión " y usando las Preferencias de GPP / Política de grupo ) implican mucho más trabajo manual del que estoy dispuesto a hacer. tantas impresoras. Parece que ni siquiera puedo seleccionar todas las impresoras en un servidor de impresión y usar la Deploy with Group Policy...
opción, por ejemplo: espera que lo haga una por una, lo que no va a suceder. Los GPP son aún peores , ya que espera que seleccione la ruta de una impresora desde el servidor de impresión y luego ingrese manualmente un montón de información (como la IP de la impresora) que debería poder obtener de la conexión de la impresora.
Mi Google-Fu para un script para agregar todas las impresoras en un servidor de impresión a un GPO / GPP apareció vacío, y parece que no puedo ver otra forma de hacerlo, incluso de una manera semiautomatizada, pero me estoy quedando con la creencia de que me falta algo, porque no hay forma de que una persona sensata elija agregar manualmente cientos de impresoras a los GPO.
Idealmente, me gustaría encontrar una forma programática para usar los GPP, pero dadas las circunstancias, cualquier solución que no implique docenas de horas agregando impresoras manualmente sería simplemente genial.
¿Alguien tiene una manera de hacer esto, o voy a necesitar construir un script de PowerShell y / o engañar a un subordinado para que haga esto?
fuente
$GPM = New-Object -ComObject GPMgmt.Gpm
. Creo que esa interfaz, si bien es un cerdo absoluto con el que trabajar, podría proporcionarle un método un poco más compatible que simplemente piratear algún XML que se ve y huele como un GPO real. Sin embargo, a nadie le gusta COM. Menos de todos nosotros Powershellers.Respuestas:
Busqué en Google bastante duro e incluso jugué con la
backup-GPO
esperanza de poder piratear el archivo XML resultante y volver a importarlo, pero sospecho que hay un script de PowerShell en su futuro.No está tan mal. Puede generar la lista de impresoras desde el servidor más cercano y luego recorrerla y asignarla.
Algo como esto:
Si las impresoras se llaman cosas lógicas, y hay alguna forma lógica de identificar las máquinas, es posible que pueda refinarlas más. Solía elegir el servidor más cercano basándome en la dirección IP del cliente, por ejemplo. Si la dirección IP es como 10.20. *, Vaya al servidor1. Etc.
Espero que eso ayude.
Editar:
Mirando la documentación de @ EvanAnderson, estoy bastante seguro de que XML es pirateable.
Pedazo relevante de mi archivo exportado (con redacciones):
fuente
En mi opinión, la administración de Powershell de la Política de grupo apesta sin productos de terceros (comerciales).
Creo que está atrapado en el XML (o en HTML si lo prefiere ) en Objetos de directiva de grupo para hacer lo que está buscando.
Afortunadamente, el XML no se ve tan aterrador . El valor de UID por impresora (que creo que es a lo que @KatherineVillyard se refiere en su comentario) es solo un GUID aleatorio generado para cada impresora referenciada en el XML.
Aquí hay un ejemplo de código Powershell, modelado descaradamente a partir del código de Katherine:
(Escribo código Powershell realmente muy feo).
En realidad, no he intentado que el GPP CSE analice este XML. El XML valida, al menos.
Estoy empezando a pensar en escribir cierta monstruosidad usando
Get-GPO
y analizando el GUID para llegar a la ruta del sistema de archivos para el GPO en el SYSVOL pero, dado que necesito hacer un trabajo real esta noche, creo que me iré eso como ejercicio para el lector. > sonrisa <Sin embargo, debería ser muy factible.fuente
Recientemente emprendí un proyecto similar y después de buscar un buen método de inserción de GPO vs. GPP más nuevo vs. scripting, elegí por scripting todo. No tengo idea de qué funcionaría mejor para usted, pero aquí hay un par de punteros para usted:
Lo ideal es usar un cliente con un nuevo sistema operativo (Windows 8/2012 +) para conectarse a los servidores de impresión y obtener información de la impresora de los servidores de impresión:
Get-Printer -computer PrintServerName
Use los grupos de seguridad de AD para asignar colas de impresión a las computadoras. Entonces, supongamos que tiene una cola de impresión (que reunió del comando anterior) llamada \ PrintServer1 \ MyColorPrinter123, cree un grupo de seguridad como printer.group.PrintServer1.MyColorPrinter123 y agregue las computadoras a ese grupo
En la secuencia de comandos de inicio, tenga una función para verificar la pertenencia a grupos de la computadora cuando se presente, y ver si es parte de algún grupo de impresoras. Si es así, use los comandos integrados printui.exe (o printui.dll) para asignar la impresora de esta manera
Invocar-Expresión 'rundll32 printui.dll, PrintUIEntry / ga / n "\ PrintServer1 \ MyColorPrinter123" / q'
Una vez que la computadora está encendida, ese servicio de cola de impresión empujará la 'conexión de impresión', que es lo que solían hacer los GPO, a cualquier usuario que vaya a iniciar sesión.
Puede ir mucho más detallado ** pero a un alto nivel eso es lo que se necesita.
** Creé una GUI que permite a los usuarios (técnicos realmente) elegir cualquier servidor de impresión, y les da una lista de impresoras en ese servidor. Si eligen uno, pueden ver todas las propiedades del mismo. Esa información proviene de Get-Printer que mencioné anteriormente. Si exporta esos datos como un csv, podría reutilizarlos para mostrar información.
** Los técnicos usan esa GUI para enviar una solicitud para agregar una computadora a las impresoras que se supone que deben conectarse. Esta es una 'solicitud', b / c no tienen permisos en AD.
** Un simple script de back-end observa la carpeta y agrega la computadora al grupo de impresoras que mencioné anteriormente. Por lo tanto, si ya sabe quién debe obtener qué impresora, excelente, puede hacerlo fácilmente. Agregar computadoras a grupos es un trabajo simple con Cmdlets AD.
** También puede programar un trabajo para verificar los servidores de impresión para ver si hay nuevas colas de impresión y compararlas con sus grupos de AD.
Por lo tanto, crear una solución 'administrada' es un poco complicado, pero es fácil comenzar con lo básico y seguir agregando para tener un sistema muy flexible y fácil de usar que no involucre GPO ... solo un poco de PowerShell
fuente