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 |
|
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 en “Next” 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
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 “Next” y finalizamos el despliegue.
Validación e Instalación del Script
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.