Cómo Distribuir un Script PowerShell en SCCM como Paquete

Existen varias formas de ejecutar un script de PowerShell,  en este artículo vamos a ver como ejecutarlo desde el SCCM a través de un paquete. 

Es común (o debería serlo) que por medidas de seguridad en ambientes de producción esté deshabilitado la ejecución de scritps en los equipos. Pero se dan eventos donde se necesita de forma urgente o emergente ejecutar algún script. Habiendo dicho esto, el SCCM nos permite ejecutar los scripts de una forma controlada y segura, sin afectar las políticas de seguridad implementadas por el Administrador de Servidores .

Consideraciones:

Para este despliegue vamos a contar con un script que creará una carpeta en la unidad raíz, los prerrequisitos a tener en cuenta para entender la configuración del paquete más adelante:

Nombre de Archivo del Script

 Script.ps1

Path

\\SCCM\Sources\Scripts

Qué hace el Script?

 Crear carpeta “SharedFolder” en la unidad raíz.

Creación del Paquete:

Dentro de la consola del SCCM (MECM o Config Manager) vamos a la siguiente ruta:

 \Software Library\Overview\Application Management\Packages
  • Una vez estamos en la sección de “Packages” damos clic derecho y escogemos Create Package 

  • Se abre el Wizard para la configuración del paquete
  • Ponemos el nombre del paquete Script
  • Dejamos en visto la sección “This package contains source files”
  • Luego damos clic en “Browse” 

  • Para que el agente del Configuración Manager pueda acceder al / los archivos debe definirse en que ruta están almacenados, la ruta debe ser de tipo Network path (UNC name) .
  • Nuestra ruta donde se almacenan los scripts es: \\sccm\Sources\Scripts
  • Damos en OK“, luego enNext” donde deberemos escoger que tipo de paquete queremos crear.

  • Escogemos “Standard Program”, clic en “Next”.

Luego de escoger el tipo de programa debemos especificar los siguientes campos que son importantes para que tenga éxito la ejecución del script:

Name

 Script_deploy

Command line

%Windir%\System32\WindowsPowerShell\v1.0\powershell.exe

-ExecutionPolicy Bypass -file “.\Script.ps1”

Run

 Normal

Program can run

 Whether or not a user is logged on

 Run mode

 Run with administrative rights

NOTA: Hay que tener en cuenta la ruta desde donde se va a ejecutar el PowerShell, esta cambia según el tipo del Sistema Operativo, esto es, si se trata de Windows 32 o 64 bits, aquí les dejo a que ruta apuntar según el tipo de SO donde se ejecutará:

  • Windows 64 bits%Windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • Windows 32 bits:  %Windir%\Sysnative\WindowsPowerShell\v1.0\powershell.exe

Ahora que tenemos claro que el path desde donde se manda a llamar a PowerShell para que ejecute el script depende del tipo de SO, es importante considerar este requisito para su despliegue, ya que en un ambiente real donde existen decenas, cientos y hasta miles de equipos con diferentes versiones y tipos de Windows, hay que configurar el paquete para que determine en qué tipo de SO se implementará el despliegue y su posterior ejecución. De esta manera nos evitaremos falsos positivos al momento de monitorear el despliegue.

Bueno, continuando con la configuración del paquete, luego de establecer los parámetros para su ejecución, damos clic en “Next” y nos aparecerá la siguiente ventana donde debemos escoger en que versión y tipo de Windows debe cumplir el equipo para que reciba y ejecute el paquete:

  • En este caso lo dejamos para todo Windows 10 de 64 bits (All Windows 10 (64-bit) ) , luego damos en “Next” y finalizamos.

Distribución del Paquete

Una vez terminado de crear y configurar los parámetros de nuestro paquete llamado “Script” , hay que distribuirlo para que esté disponible para su posterior despliegue.
  • Vamos al área de paquetes (Packages), seleccionamos nuestro paquete “Script”, damos clic derecho y seleccionamos Distribute Content.
  • Se abrirá el Wizard para configurar la distribución del paquete, damos clic en “Next“.
  • En el botón Add escogemos Distribution point donde le vamos a decir a que punto de distribución se le enviará el paquete, escogemos el DP que tenemos configurado para nuestro SCCM y damos clic en “Next”.

 

 

  • Escogemos el server donde tenemos configurado nuestro DP, damos clic en OK” , luego damos clic en “Next” y terminamos de distribuir el paquete.

Despliegue del Paquete que Contiene el Script PowerShell

 
Este es el último paso dentro del SCCM, ya después solo queda validar en el equipo objetivo que se haya ejecutado el script.

Una vez hayamos distribuido el paquete a nuestro DP (Distribution Point) , procedemos a desplegarlo.

  • Vamos al apartado de “Packages” damos clic derecho en el paquete que acabamos de crear y seleccionamos “Deploy”.
  • Se abrirá el wizard  de despliegue donde debemos escoger a que colección vamos a desplegar el paquete, escogemos nuestra colección, en este caso se llama “Ring 1”, damos en “Next” , en la siguiente ventana no tocamos nada y damos en “Next”.

 

 

En nuestro artículo Cómo cambiar el puerto RDP vía Task Sequence | SCCM se explica que tipo de despliegue debemos escoger (Available o Required) según sea la necesidad de la empresa, del departamento de sistemas o de quien sea el Administrador del Configuration Manager.

  • Para ejemplo práctico de este tutorial vamos a escoger Available.
 

Para el resto de ventanas como Scheduling, User Experience y Distribution Points, dejamos tal cual su configuración previa y damos en Nexty finalizamos el despliegue.

Validación e Instalación del Script

Ahora bien, vamos al equipo destino y abrimos el Software Center donde nos deberá aparecer el paquete que le hemos desplegado, lo seleccionamos y damos clic en “Install” 
 


Luego de instalar el paquete vamos a validar si se instaló sin problemas el script; en el log EXECMGR.LOG podemos comprobar que la ejecución del script termina con el Exit Code 0 .


Usar scripts de PowerShell nos da un abanico muy amplio de opciones de ejecución, tareas de auditoría, desinstalaciones y un montón de etc, que combinado con el Configuration Manager (SCCM) nos permiten incrementar nuestra productividad y resolución de problemas más eficientemente.

Leave a Comment