Solución de problemas de secuencias de comandos de PowerShell

<img style="”float:" right;” src="”https://www.recastsoftware.com/wp-content/uploads/2021/10/Recast-Logo-Dark_Horizontal.svg”" alt="&quot;Imagen&quot;" height="”43″" width="”150″">

Solución de problemas de scripts de TP12T e Intune PowerShell

Recientemente trabajé en varios proyectos en los que tuve que solucionar problemas de scripts de PowerShell en lugares donde no tenía acceso para "ver" lo que estaba pasando. En realidad, esto fue muy beneficioso para mejorar mis habilidades de powershell, ya que me di cuenta de que necesitaba incluir mucho más registro y encontrar formas adicionales de probar.

En esta página, el objetivo es cubrir varios métodos para ayudar en la resolución de problemas de los scripts, cuando no es tan simple como abrir PowerShell y ejecutarlo como su usuario que inició sesión.

Estos son algunos lugares comunes donde se encontrará con scripts que no tendrán la mayor visibilidad de ellos y pueden dificultar la resolución de problemas.

La mayoría de las veces, aprovechando esas herramientas, los scripts se ejecutarán como SYSTEM. Tareas programadas que puede configurar para que se ejecuten como SISTEMA o una Cuenta de servicio, que recomiendo aprovechar las cuentas de servicio administradas por grupos.

Métodos que encontré útiles:

  • Transcripción de PowerShell
  • Registro personalizado
  • Aprovechamiento del centro de software
    • Proporcionar un entorno de secuencia de tareas para probar scripts
    • Lanzamiento de ISE o VSCode como SISTEMA para probar scripts

Población

Habilitar la transcripción de PS con ejecutar scripts

Vamos a crear un script de ejecución que habilite la transcripción de PowerShell, puede encontrar el
Archivo de script en GitHub

Luego puede copiar el código RAW o poner el enlace al código RAW en la importación:

Solución de problemas 01

Solución de problemas 02

Como sabemos que solo queremos 2 opciones para el parámetro, rellenemos previamente, haga clic en editar, elija el tipo de datos: Lista, luego agregue Habilitar y Deshabilitar:

Solución de problemas 03

Una vez que haya terminado, se verá así:
Solución de problemas 04

Ahora escojamos una máquina de prueba y ejecutemos el script con el valor de habilitación:
Solución de problemas 05

Y completado con Habilitar:
Solución de problemas 06

Veamos el cliente, este es nuestro registro personalizado integrado en el script que acabamos de agregar:

Resolución de problemas 07

Luego, para generar un registro de transcripción de PowerShell, volví a ejecutar el script de ejecución. En la carpeta que especificamos para alojar los registros de transcripción, encontramos:
Solución de problemas 08

Elementos de configuración

Solución de problemas 09

Scripts de secuencia de tareas

Primero voy a mostrar ejemplos de algunos scripts y cómo se ejecutan.

Entonces, aunque técnicamente no es un script, un comando de PowerShell que se ejecuta desde un paso de línea de comando:
Resolución de problemas 10

Allí puede ver que cuando ejecuta un comando de PowerShell a través de la línea de comando, no se crea ningún script temporalmente para ejecutarlo, a diferencia de un script incrustado:

Resolución de problemas 12

Y aquí, un script dentro de un paquete, como se esperaba, se ejecuta fuera de la ubicación del paquete:

Resolución de problemas 11

Una vez más, aprovechamos la transcripción de PowerShell para ver de dónde se ejecutaban los scripts, el contexto en el que se ejecutaban y la salida de escritura generada por el script.

Afinado

Con InTune, he creado dos scripts, uno para habilitar la Transcripción de PowerShell y otro para Deshabilitar.

Una cosa que he aprendido sobre el uso de PowerShell Script con Intune es que nunca se sabe cuándo se ejecutará ni con qué frecuencia. Por eso la tala es tan importante. Aprovecho el registro de CMTrace Style en todos mis scripts basados en Función de Ryan Ephgrave.

Otra cosa que he aprendido acerca de la creación de scripts para Intune es diseñarlos como un elemento de configuración. ¿Qué quiero decir con eso? El guión debe seguir una plantilla.

  • Detección
    • ¿Se aplica el script a esta máquina? Aunque seguro, puede crear grupos en Intune, pero la creación de lógica en el script siempre es una buena idea.
  • Descubrimiento
    • Verificando si la máquina ya es compatible (si el objetivo final de su secuencia de comandos ya se logró)
  • Remediación
    • Ejecute el contenido de la secuencia de comandos para lograr su objetivo deseado

Para Intune, voy a implementar el Enable-PSTranscription.ps1 Texto

Resolución de problemas 13

La primera vez que se ejecuta el script, se registra usando la función y configura PS Transcription, que luego realizará un registro adicional cada vez que lo haga.

En la imagen a continuación, puede ver el archivo de registro creado por la secuencia de comandos en sí cada vez que la secuencia de comandos se ejecuta con el registro, y en el registro inferior, el registro de transcripción para esa ejecución de la secuencia de comandos.

Solución de problemas 14

Al observar el registro que agregué al script, puede ver cómo sigue el proceso de Descubrimiento y Remediación. La primera vez que se ejecuta, descubre que es "No conforme" y luego "Remedia" habilitando la Transcripción. La segunda ejecución, descubre que ya es compatible y sale.

Seguir este método ayudará a reducir la carga en sus dispositivos administrados de Intune, especialmente para scripts complicados que podrían inmovilizar un dispositivo de punto final por un tiempo cada vez que se ejecuta el script.

Consejos para solucionar problemas

Acerca de Recast Software
1 de cada 3 organizaciones que utilizan Microsoft Configuration Manager confían en Right Click Tools para detectar vulnerabilidades y remediarlas más rápido que nunca.
Descargar herramientas gratuitas
Solicitar precio

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