Ejecutar secuencia 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″">

Ejecutar secuencia de comandos de PowerShell

Este paso es más nuevo y eliminó mucho trabajo pesado del paso de línea de comando de ejecución. Anteriormente, tenía que llamar a powershell.exe y luego a un archivo o comando, ahora podemos llamar directamente a un script o incrustar un script.

MS Docs

Documentos de MS: https://docs.microsoft.com/en-us/mem/configmgr/osd/understand/task-sequence-steps#BKMK_RunPowerShellScript

Potencia Shell:

Ruta de archivo importante: c: WindowsTEMPSMSTSPowerShellScripts (asegúrese de que esto esté excluido de sus reglas AV)

Este paso también está muy bien documentado en el sitio de documentos, pero continuaré dando ejemplos de cómo se usa.
Cosas a tener en cuenta, la función de scripts incrustados, aunque es muy agradable no tener que asociar un paso con un paquete, todavía hay buenas razones para NO incrustar un script como el tamaño del script o cómo se usa.

  • Tamaño, por lo general, si el script tiene más de 100 líneas, no lo inserto. Cuanto más largos sean los scripts y más scripts que incruste, puede hacer que su Política de TS se vuelva demasiado grande y rompa cosas. Consulte esta información sobre ideas sobre cómo reducir el tamaño de su política de TS. Más información sobre MS Docs
  • Organización. Digamos que usa el mismo script de PowerShell en varios puntos en una secuencia de tareas única o múltiple, si inserta el script, debe asegurarse de actualizar cada ubicación, mientras que si hace referencia a un script, solo necesita actualizar el script único en la fuente, y todos los pasos que dependen de ella ahora están actualizados.
    Esas son cosas en las que deberá pensar mientras aprovecha este poderoso paso.

Configuración de pasos

Paquete con secuencia de comandos de PowerShell:

Ejecute la imagen de secuencia de comandos de PowerShell 1

Esta es la funcionalidad básica del paso cuando se lanzó por primera vez, apunte a un script en un paquete y listo. Ya que han agregado opciones adicionales, que son geniales, pero esta sigue siendo una pieza muy importante. Recuerde configurar la política de ejecución de PowerShell para omitir, a menos que la haya firmado. En el ejemplo anterior, este es un paso que utilizo en muchas secuencias de tareas para recopilar elementos adicionales, similar a MDT Gather, pero sin integrar MDT. Puede encontrar más información sobre este ejemplo aquí: https://garytown.com/so-long-mdt-native-cm-for-me
Debido a que lo uso en varios lugares, lo guardo como una secuencia de comandos, por lo que, como necesito actualizar la secuencia de comandos para recopilar elementos adicionales, actualiza todas mis secuencias de tareas.

Script de PowerShell integrado:
Ejecute la imagen de secuencia de comandos de PowerShell 2

Ser capaz de incrustar un guión es muy útil, y he pasado a hacerlo siempre que tiene sentido. Comencé a exagerar y luego descubrí que no tenía sentido incrustar todo, como en el ejemplo anterior. Es bueno incrustar scripts, ya que ya no tiene que preocuparse por distribuir contenido. Supongamos que ha encontrado un error en su secuencia de comandos, un cambio rápido en la secuencia de comandos en el TS, y puede volver a probar rápidamente frente a cambiar el script en un paquete, actualizar los DP y luego ejecutar el TS nuevamente.

Parámetros:
Ejecute la imagen de secuencia de comandos de PowerShell 3

Si usa una secuencia de comandos en un paquete o si inserta la secuencia de comandos, puede usar parámetros. El ejemplo anterior es una secuencia de comandos incrustada que utilizo para copiar registros a un servidor. La ubicación está en un parámetro, e incluso puedo aprovechar las variables de secuencia de tareas en los parámetros (%SMSTS_Build% y %ComputerName%) para alimentar el script. Puede ver lo poderoso que puede ser esto, ya que luego puede usar el mismo script en diferentes secuencias de tareas para diferentes propósitos, alimentando los parámetros de los scripts.

<div class="”IMPORTANT" alert alert-important”><h5>IMPORTANTE</h5><p><p>Cuando use Parámetros, no use comillas &quot;dobles&quot;, use comillas &quot;simples&quot;, tendrá problemas. No estoy seguro exactamente cuando eso cambió, pero lo hizo.</p>
</p></div>

Política de ejecución de PowerShell:
Ejecute la imagen 4 de la secuencia de comandos de PowerShell

No me tomo el tiempo para firmar mis guiones y nunca me han llamado, así que no me molesto, siempre pongo esto en bypass para hacer mi vida más fácil. Más información sobre MS Docs

Salida a variable de secuencia de tareas:
Ejecute la imagen de secuencia de comandos de PowerShell 5
Cualquier información que se devuelva del comando se coloca en la variable. En el ejemplo anterior, estoy ejecutando un comando de PowerShell simple (en una secuencia de comandos incrustada) que generará la configuración regional del sistema en una variable. Utilizo esto en mi secuencia de tareas de actualización para obtener la información del paquete de idioma, de modo que pueda volver a aplicarla después de la actualización.

Tiempo muerto (minutos):
Esta es una medida de protección para proteger su secuencia de tareas de un proceso fuera de control. A veces, incluso con muchas pruebas, un comando que ejecuta se cuelga y, por supuesto, querrá solucionarlo y resolver el problema, pero en el mismo punto, si está ejecutando una actualización en el lugar, el paso es bastante insignificante para el proceso general, querrá que continúe y no cuelgue su TS y falle.

Ejecute este paso con la siguiente cuenta:
La secuencia de tareas se ejecuta como la cuenta del sistema, si la secuencia de tareas se comunica con cualquier sistema de red, a menos que la seguridad esté configurada de una manera muy insegura, la secuencia de tareas no tendrá ningún permiso para activar sus objetivos. . Deberá proporcionar una cuenta que tenga los derechos para hacer lo que necesita. Asegúrese de pensar un poco en el uso de esta función, siga el método de privilegios mínimos. En el ejemplo anterior, estoy ejecutando comandos de PowerShell ConfigMgr y haciendo copias de archivos, por lo que la cuenta que estoy usando debe tener permisos tanto en la Consola CM como en el sistema de archivos donde estoy copiando archivos.
Ejecutar la imagen de secuencia de comandos de PowerShell 6

Ficha Opciones

Ejecute la imagen de secuencia de comandos de PowerShell 7
Los códigos de éxito se rellenan previamente con 0 (no con 3010 como el paso de línea de comando de ejecución)

Manifestación

Script incrustado en acción:
Paso: Script incrustado: start-sleep -s 15000
Ejecute la imagen de secuencia de comandos de PowerShell 8
Al correr:
Ejecute la imagen de secuencia de comandos de PowerShell 9
Al ejecutar ese paso que tiene un script incrustado, crea el script de PowerShell en c: WindowsTEMPSMSTSPowerShellScripts, como se muestra en la imagen de arriba. Tenga en cuenta que utilicé el depurador de secuencia de tareas para recorrer fácilmente la secuencia de tareas.

Fallos comunes

  • Errores de secuencia de comandos
    • Probar un script en un TS es muy importante, ya que la forma en que actúa un script de PowerShell cuando lo construye en su editor, en comparación con la ejecución del script en un TS, puede ser bastante diferente. Puede dedicar mucho ensayo y error a probar scripts que se basan en diferentes TS Vars.
  • WinPE
    • De forma predeterminada, Windows PE en ConfigMgr no es compatible con PowerShell, deberá agregar varios componentes opcionales para admitir sus scripts y, según lo que esté haciendo, necesitará cosas adicionales. Consulte la página de soporte de Windows PE PowerShell para saber cómo agregar requisitos a su imagen de arranque de WinPE para admitir PowerShell.
  • Problemas de paquetes
    • Asegúrese de haber llamado a los archivos con los nombres y rutas correctos para que coincidan con los que están en sus paquetes.
    • El contenido del paquete no se actualizó antes de ejecutar la prueba.

Consejos útiles

Cuando estoy creando PowerShell Script para usar en una secuencia de tareas, normalmente pruebo y desarrollo desde un entorno de secuencia de tareas en pausa. Pausaré una secuencia de tareas, lanzaré ISE y probaré, probaré, probaré. Una vez que obtengo el resultado del script que quiero, lo ejecuto en el proceso de secuencia de tareas y veo qué sucede, pero poder depurar un script de PowerShell en el entorno de secuencia de tareas puede ahorrar mucho tiempo.

Más información

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