PowerShell y Programador de tareas: programación de inventario

En 2014, publiqué una publicación de blog llamada, Cómo evitar recibir solicitudes de resincronización de inventario para máquinas virtuales de instantáneas. Lo que me encantó de esa publicación fue cómo se usó el programador de tareas para programar el inventario ConfigMgr evitando así los errores de resincronización ConfigMgr. Lo que no me gustó de esa publicación de blog de 2014 fue cómo cada tarea de TriggerSchedule debía crearse a mano. De cara al 2020, recurrí a PowerShell para resolver este problema y automaticé el proceso. ¿Por qué? Estaba probando Power BI Report Server con Informes Enhansoft y parte de esta prueba implicó la creación de nuevos servidores Windows 10 junto con varias máquinas virtuales nuevas. No quería crear cada tarea manualmente cada vez, así que PowerShell hace todo el trabajo pesado por mí y ahora estoy compartiendo con ustedes cómo lo hice, junto con el script, en esta publicación.

Fondo

En mi publicación original, hice un enlace a algunas publicaciones de blog sobre cómo forzar el inventario a una colección y computadora usando el Software de gestión de terminales Recast herramienta. Esto es genial, incluso hoy, PERO no ayuda con las VM donde se toma una instantánea.

Aquí en Enhansoft, Hyper-V se utiliza para hacer instantáneas de las máquinas virtuales en nuestro laboratorio de pruebas. Hacemos esto en caso de que necesitemos revertir rápidamente una máquina virtual a un estado conocido. Cuando esto sucede, el inventario de VM puede perder la sincronización con ConfigMgr. En teoría, ConfigMgr obliga a las computadoras desincronizadas a volver a sincronizarse y actualizarse, pero esta tarea puede llevar un tiempo. Ese lapso de tiempo no es útil para garantizar que su inventario esté siempre actualizado en ConfigMgr.

Nuestra solución a este problema, cada vez que se reinicia (reinicia) una VM, es forzar al cliente ConfigMgr a realizar las siguientes acciones en este orden:

  1. Realice un descubrimiento de latidos (ciclo de descubrimiento de datos).
  2. Elimine el último hardware completo para forzar que el siguiente ciclo de inventario de hardware realice un inventario completo.
  3. Elimine los datos del inventario de software para forzar al siguiente ciclo de inventario de software a realizar un inventario completo.
  4. Realice un inventario de hardware.
  5. Realice un inventario de software.

Como no quiero realizar esta tarea manualmente cada vez, escribí un script de todos los elementos de acción enumerados anteriormente utilizando WMIC. Luego configuro una tarea programada para que se ejecute cada vez que una máquina virtual se reinicia con un retraso de 5 minutos. El retraso de 5 minutos permite que el cliente ConfigMgr se inicie antes de que se vea obligado a realizar la acción de inventario.

En la publicación original del blog, creé una tarea programada para todas las acciones. Cuando fui a automatizar este proceso con PowerShell, tenía más sentido crear una tarea programada para cada elemento de acción mencionado anteriormente. Además de esas acciones, también quería forzar un inventario completo a las 9 am todos los días en cada VM. Para mantener las cosas ordenadas, coloqué todas las tareas programadas en una carpeta.

Schedule ConfigMgr Inventory - Programador de tareas

Programa 1 Inventario TP12T

No voy a publicar el guión completo aquí porque puedes descargar el script completo del sitio de Enhansoft y luego revíselo. En cambio, les muestro las tres líneas más importantes a continuación.

$action = New-ScheduledTaskAction -Execute 'WMIC.exe' -Argument '/ namespace: \\ root \ ccm path sms_client CALL TriggerSchedule “{00000000-0000-0000-0000-000000000001}” / NOINTERACTIVE'
$trigger = New-ScheduledTaskTrigger -Daily -At 9:01:01 am
Register-ScheduledTask -Acción $action -Trigger $trigger -TaskName $FolderName \ ”HW Inv” -User “System”

La primera línea crea la tarea programada. La segunda línea crea el desencadenante de la tarea programada; en este ejemplo ocurre a las 9:01:01 am. La tercera línea une la primera y la segunda línea y ejecuta la tarea programada utilizando la cuenta del sistema.

Esté atento al ajuste de palabras de cada línea. Además, si corta y pega esto en su propio guión, tenga cuidado con las citas estilizadas (rizadas). Las comillas siempre deben ser rectas y sencillas.

Mirando la captura de pantalla anterior, puede ver que una vez que se ejecuta el script de PowerShell, todas las tareas programadas se crean y colocan ordenadamente dentro de la carpeta.

Congelación profunda

El uso de este script de PowerShell para programar el inventario ConfigMgr también es importante si tiene alguna computadora que esté usando Faronics Deep Freeze. Sin embargo, haría algunos ajustes al guión. Primero, elimine las tareas programadas de "eliminación" de hardware y software al reiniciar el sistema, pero mantenga las tareas programadas para activar inventarios en el inicio del sistema. Además, ajustaría el plazo de las 9 a. M. Para que se produzca unos minutos después de que se produzca el ciclo de descongelación de Deep Freeze.

Resumen

Al final del día, estas tareas de inventario ConfigMgr programadas y este script de PowerShell le ahorraron a mi equipo mucho tiempo y esfuerzo. Si tiene un laboratorio de pruebas, le recomiendo que considere usar este proceso también porque garantiza que su inventario se actualice con regularidad. Si tiene alguna pregunta sobre cómo programar el inventario ConfigMgr, no dude en ponerse en contacto conmigo @GarthMJ.

Vea cómo Right Click Tools está cambiando la forma en que se administran los sistemas.

Aumente la productividad de inmediato con nuestra versión limitada y gratuita de la edición Community.

Comience con Right Click Tools hoy:

Compartir este:

Ayuda

  • Este campo es para fines de validación y no debe modificarse.

Contacto

  • Este campo es para fines de validación y no debe modificarse.
es_MXSpanish