Crear y ejecutar scripts de PowerShell desde la consola de Configuration Manager

Se aplica a: Configuration Manager (rama actual)

Configuration Manager tiene una capacidad integrada para ejecutar scripts de PowerShell. PowerShell tiene la ventaja de crear scripts sofisticados y automatizados que se entienden y comparten con una comunidad más grande. Los scripts simplifican la creación de herramientas personalizadas para administrar software y permiten realizar tareas mundanas rápidamente, lo que le permite realizar trabajos grandes de forma más fácil y coherente.

Nota

En la versión 2006 y versiones anteriores, Configuration Manager no habilita esta característica opcional de forma predeterminada. Debe habilitar esta característica antes de usarlo. Para obtener más información, vea Enable optional features from updates.

Con esta integración en Configuration Manager, puede usar la funcionalidad Ejecutar scripts para hacer lo siguiente:

  • Cree y edite scripts para usarlos con Configuration Manager.
  • Administrar el uso de scripts a través de roles y ámbitos de seguridad.
  • Ejecute scripts en colecciones o equipos administrados Windows locales.
  • Obtener resultados rápidos de scripts agregados de dispositivos cliente.
  • Supervisar la ejecución de scripts y ver los resultados de informes de salida del script.

Advertencia

  • Dada la potencia de los scripts, le recordamos que debe ser intencionado y cuidadoso con su uso. Hemos integrado medidas de seguridad adicionales para ayudarle; roles y ámbitos segregados. Asegúrese de validar la precisión de los scripts antes de ejecutarlos y confirme que son de un origen de confianza, para evitar la ejecución de scripts no intencionados. Tenga en cuenta los caracteres extendidos u otra ofuscación y infóquese sobre cómo proteger scripts. Más información sobre la seguridad de scripts de PowerShell
  • Cierto software antimalware puede desencadenar eventos involuntariamente en las características ejecutar scripts o CMPivot de Configuration Manager. Se recomienda excluir %windir%\CCM\ScriptStore para que el software antimalware permita que esas características se ejecuten sin interferencias.

Requisitos previos

  • Para ejecutar scripts de PowerShell, el cliente debe ejecutar PowerShell versión 3.0 o posterior. Sin embargo, si un script que ejecuta contiene funcionalidad de una versión posterior de PowerShell, el cliente en el que ejecute el script debe ejecutar esa versión de PowerShell.
  • Los clientes de Configuration Manager deben ejecutar el cliente desde la versión 1706 o posterior para ejecutar scripts.
  • Para usar scripts, debe ser miembro del rol de seguridad de Configuration Manager adecuado.
  • Para importar y crear scripts: la cuenta debe tener permisos Crear para scripts SMS.
  • Para aprobar o denegar scripts: la cuenta debe tener permisos de aprobación para scripts SMS.
  • Para ejecutar scripts: la cuenta debe tener permisos ejecutar script para colecciones.

Para obtener más información acerca de los roles de seguridad de Configuration Manager:
Ámbitos de seguridad para scripts de ejecución
Roles de seguridad para scripts de ejecución
Conceptos básicos de la administración basada en roles.

Limitaciones

Ejecutar scripts admite actualmente:

  • Lenguajes de scripting: PowerShell
  • Tipos de parámetros: entero, cadena y lista.

Advertencia

Tenga en cuenta que al usar parámetros, abre un área de superficie para el posible riesgo de ataque de inyección de PowerShell. Hay varias formas de mitigar y trabajar, como el uso de expresiones regulares para validar la entrada de parámetros o el uso de parámetros predefinidos. El procedimiento recomendado habitual es no incluir secretos en los scripts de PowerShell (sin contraseñas, etc.). Más información sobre la seguridad de scripts de PowerShell

Ejecutar autores y aprobadores de scripts

Ejecutar scripts usa el concepto de autores de scripts y aprobadores de scripts como roles independientes para la implementación y ejecución de un script. Tener separados los roles de autor y aprobador permite una comprobación importante del proceso de la herramienta eficaz que es Ejecutar scripts. Hay un rol de ejecutores de scripts adicional que permite la ejecución de scripts, pero no la creación o aprobación de scripts. Vea Crear roles de seguridad para scripts.

Control de roles de scripts

De forma predeterminada, los usuarios no pueden aprobar un script que han creado. Dado que los scripts son eficaces, versátiles y potencialmente implementados en muchos dispositivos, puede separar los roles entre la persona que crea el script y la persona que aprueba el script. Estos roles dan un nivel adicional de seguridad frente a la ejecución de un script sin supervisión. Puedes desactivar la aprobación secundaria para facilitar las pruebas.

Aprobar o denegar un script

Los scripts deben ser aprobados por el rol de aprobador de scripts para poder ejecutarse. Para aprobar un script:

  1. En la consola de Configuration Manager, haga clic en Biblioteca de software.
  2. En el área de trabajo Biblioteca de software, haga clic en Scripts.
  3. En la lista Script, elija el script que desea aprobar o denegar y, a continuación, en la pestaña Inicio, en el grupo Script, haga clic en Aprobar/Denegar.
  4. En el cuadro de diálogo Aprobar o denegar script, seleccione Aprobar o Denegar para el script. Opcionalmente, escriba un comentario sobre su decisión. Si deniega un script, no se puede ejecutar en dispositivos cliente.
    Script: aprobación
  5. Complete el asistente. En la lista Script, verá el cambio de columna Estado de aprobación en función de la acción que realizó.

Permitir a los usuarios aprobar sus propios scripts

Esta aprobación se usa principalmente para la fase de prueba del desarrollo de scripts.

  1. En la consola de Configuration Manager, haga clic en Administración.
  2. En el área de trabajo Administración, expanda Configuración del sitio y, a continuación, haga clic en Sitios.
  3. En la lista de sitios, elija el sitio y, a continuación, en la pestaña Inicio, en el grupo Sitios, haga clic en Jerarquía Configuración .
  4. En la ficha General del cuadro de diálogo Propiedades Configuración jerarquía, desactive la casilla Autores de scripts requieren aprobador de script adicional.

Importante

Como práctica recomendada, no debe permitir que un autor de scripts apruebe sus propios scripts. Solo se debe permitir en una configuración de laboratorio. Considere detenidamente el posible impacto de cambiar esta configuración en un entorno de producción.

Ámbitos de seguridad

Ejecutar scripts usa ámbitos de seguridad, una característica existente de Configuration Manager, para controlar la creación y ejecución de scripts mediante la asignación de etiquetas que representan grupos de usuarios. Para obtener más información sobre el uso de ámbitos de seguridad, vea Configure role-based administration for Configuration Manager.

Crear roles de seguridad para scripts

Los tres roles de seguridad usados para ejecutar scripts no se crean de forma predeterminada en Configuration Manager. Para crear los roles de ejecutores de scripts, autores de scripts y aprobadores de scripts, siga los pasos descritos.

  1. En la consola de Configuration Manager, vaya a Roles de seguridad > de > administración
  2. Haga clic con el botón secundario en un rol y haga clic en Copiar. El rol que copie tiene permisos ya asignados. Asegúrese de que solo toma los permisos que desee.
  3. Asigne al rol personalizado un nombre y una descripción.
  4. Asigne al rol de seguridad los permisos que se describen a continuación.

Permisos de función de seguridad

Nombre del rol: Ejecutores de scripts

  • Descripción: estos permisos permiten que este rol solo ejecute scripts creados y aprobados anteriormente por otros roles.
  • Permisos: Asegúrese de que lo siguiente se establece en .
Categoría Permiso Estado
Colección Ejecutar script
Site Lectura
SMS Scripts Lectura

Nombre del rol: Autores de scripts

  • Descripción: estos permisos habilitan este rol para crear scripts, pero no pueden aprobarlos ni ejecutarlos.
  • Permisos: asegúrese de que se han establecido los siguientes permisos.
Categoría Permiso Estado
Colección Ejecutar script No
Site Lectura
SMS Scripts Crear
SMS Scripts Lectura
SMS Scripts Delete
SMS Scripts Modificar

Nombre del rol: Aprobadores de scripts

  • Descripción: estos permisos permiten a este rol aprobar scripts, pero no pueden crearlos ni ejecutarlos.
  • Permisos: Asegúrese de que se establecen los siguientes permisos.
Categoría Permiso Estado
Colección Ejecutar script No
Site Lectura
SMS Scripts Lectura
SMS Scripts Aprobar
SMS Scripts Modificar

Ejemplo de permisos de scripts SMS para el rol de autores de scripts

Ejemplo de permisos de scripts SMS para el rol de autores de scripts

Crear un script

  1. En la consola de Configuration Manager, haga clic en Biblioteca de software.
  2. En el área de trabajo Biblioteca de software, haga clic en Scripts.
  3. En la ficha Inicio, en el grupo Crear, haga clic en Crear script.
  4. En la página Script del Asistente para crear script, configure las siguientes opciones:
    • Nombre del script: escriba un nombre para el script. Aunque puede crear varios scripts con el mismo nombre, el uso de nombres duplicados hace que sea más difícil encontrar el script que necesita en la consola de Configuration Manager.
    • Lenguaje de script: actualmente, solo se admiten scripts de PowerShell.
    • Importar: importar un script de PowerShell en la consola. El script se muestra en el campo Script.
    • Borrar: quita el script actual del campo Script.
    • Script: muestra el script importado actualmente. Puede editar el script en este campo según sea necesario.
  5. Complete el asistente. El nuevo script se muestra en la lista Script con el estado Waiting for approval. Para poder ejecutar este script en dispositivos cliente, debes aprobarlo.

Importante

Evite secuencias de comandos de un reinicio del dispositivo o un reinicio del agente de Configuration Manager al usar la característica Ejecutar scripts. Al hacerlo, se podría producir un estado de reinicio continuo. Si es necesario, hay mejoras en la característica de notificación de cliente que habilitan el reinicio de dispositivos. La columna de reinicio pendiente puede ayudar a identificar los dispositivos que necesitan un reinicio.

Parámetros de script

Agregar parámetros a un script proporciona mayor flexibilidad para el trabajo. Puede incluir hasta 10 parámetros. A continuación se describe la funcionalidad actual de la característica Ejecutar scripts con parámetros de script para; Tipos de datos String , Integer. También hay disponibles listas de valores preestablecidos. Si el script tiene tipos de datos no admitidos, recibe una advertencia.

En el cuadro de diálogo Crear script, haga clic en Parámetros de script en Script.

Cada uno de los parámetros del script tiene su propio cuadro de diálogo para agregar más detalles y validación. Si hay un parámetro predeterminado en el script, se enumerará en la interfaz de usuario del parámetro y puedes establecerlo. Configuration Manager no sobrescribirá el valor predeterminado, ya que nunca modificará el script directamente. Puede pensar en esto como "valores sugeridos rellenados previamente" se proporcionan en la interfaz de usuario, pero Configuration Manager no proporciona acceso a los valores "predeterminados" en tiempo de ejecución. Para ello, puede editar el script para que tenga los valores predeterminados correctos.

Importante

Los valores de parámetros no pueden contener una sola comilla.

Hay un problema conocido en el que los valores de parámetros que incluyen o están entre comillas simples no se pasan al script correctamente. Al especificar valores de parámetro predeterminados que contienen un espacio dentro de un script, use comillas dobles en su lugar. Al especificar valores de parámetro predeterminados durante la creación o ejecución de un script, no es necesario rodear el valor predeterminado entre comillas dobles o simples, independientemente de si el valor contiene un espacio o no.

Validación de parámetros

Cada parámetro del script tiene un cuadro de diálogo Propiedades de parámetro script para agregar validación para ese parámetro. Después de agregar la validación, debe obtener errores si escribe un valor para un parámetro que no cumple con su validación.

Ejemplo: FirstName

En este ejemplo, puede establecer las propiedades del parámetro de cadena FirstName.

Parámetros de script: cadena

La sección de validación del cuadro de diálogo Propiedades del parámetro script contiene los siguientes campos para su uso:

  • Longitud mínima: número mínimo de caracteres del campo FirstName.
  • Longitud máxima: número máximo de caracteres del campo FirstName
  • RegEx: short para Expresión regular. Para obtener más información sobre el uso de la expresión regular, vea la siguiente sección, Using Regular Expression validation.
  • Error personalizado: útil para agregar su propio mensaje de error personalizado que reemplaza los mensajes de error de validación del sistema.

Uso de validación de expresiones regulares

Una expresión regular es una forma compacta de programación para comprobar una cadena de caracteres en una validación codificada. Por ejemplo, puede comprobar la ausencia de un carácter alfabético mayúscula en el campo FirstName colocando [^A-Z] en el campo RegEx.

El procesamiento de expresiones regulares para este cuadro de diálogo es compatible con el .NET Framework. Para obtener instrucciones sobre el uso de expresiones regulares, vea .NET Regular Expression and Regular Expression Language.

Ejemplos de script

Estos son algunos ejemplos que ilustran los scripts que puede usar con esta funcionalidad.

Crear una carpeta y un archivo nuevos

Este script crea una nueva carpeta y un archivo dentro de la carpeta, dada la entrada de nomenclatura.

Param(
[Parameter(Mandatory=$True)]
[string]$FolderName,
[Parameter(Mandatory=$True)]
[string]$FileName
)

New-Item $FolderName -type directory
New-Item $FileName -type file

Obtener versión del sistema operativo

Este script usa WMI para consultar la versión del sistema operativo del equipo.

Write-Output (Get-WmiObject -Class Win32_operatingSystem).Caption

Editar o copiar scripts de PowerShell

Puede editar o copiar un script de PowerShell existente que se usa con la característica Ejecutar scripts. En lugar de volver a crear un script que necesita cambiar, ahora edite directamente. Ambas acciones usan la misma experiencia del asistente que al crear un script nuevo. Al editar o copiar un script, Configuration Manager no conserva el estado de aprobación.

Sugerencia

No edite un script que se esté ejecutando activamente en los clientes. No terminarán de ejecutar el script original y es posible que no obtenga los resultados previstos de estos clientes.

Editar un script

  1. Vaya al nodo Scripts en el área de trabajo Biblioteca de software.
  2. Seleccione el script que desea editar y, a continuación, haga clic en Editar en la cinta de opciones.
  3. Cambie o vuelva a importar el script en la página Detalles del script.
  4. Haga clic en Siguiente para ver el resumen y, a continuación, cerrar cuando haya terminado de editar.

Copiar un script

  1. Vaya al nodo Scripts en el área de trabajo Biblioteca de software.
  2. Seleccione el script que desea copiar y, a continuación, haga clic en Copiar en la cinta de opciones.
  3. Cambie el nombre del script en el campo Nombre de script y realice las modificaciones adicionales que necesite.
  4. Haga clic en Siguiente para ver el resumen y, a continuación, cerrar cuando haya terminado de editar.

Ejecutar un script

Una vez aprobado un script, se puede ejecutar en un único dispositivo o una colección. Una vez que se inicia la ejecución del script, se inicia rápidamente a través de un sistema de alta prioridad que se retrasó en una hora. A continuación, los resultados del script se devuelven mediante un sistema de mensajes de estado.

Para seleccionar una colección de destinos para el script:

  1. En la consola de Configuration Manager, haga clic en Activos y cumplimiento.
  2. En el área de trabajo Activos y cumplimiento, haga clic en Colecciones de dispositivos.
  3. En la lista Colecciones de dispositivos, haga clic en la colección de dispositivos en la que desea ejecutar el script.
  4. Seleccione una colección de su elección, haga clic en Ejecutar script.
  5. En la página Script del Asistente para ejecutar script, elija un script de la lista. Solo se muestran scripts aprobados.
  6. Haga clic en Siguiente y, a continuación, complete el asistente.

Importante

Si no se ejecuta un script, por ejemplo porque un dispositivo de destino está desactivado durante el período de una hora, debes volver a ejecutarlo.

Ejecución de máquina de destino

El script se ejecuta como la cuenta del sistema o del equipo en los clientes de destino. Esta cuenta tiene acceso limitado a la red. Cualquier acceso a sistemas remotos y ubicaciones por parte del script debe aprovisionarse en consecuencia.

Supervisión de scripts

Después de iniciar la ejecución de un script en una colección de dispositivos, use el siguiente procedimiento para supervisar la operación. Puede supervisar un script en tiempo real mientras se ejecuta y, posteriormente, volver al estado y los resultados de una ejecución de script de ejecución determinada. Los datos de estado del script se limpian como parte de la tarea de mantenimiento Eliminar operaciones de cliente envejecidas o la eliminación del script.

Monitor de secuencias de comandos: estado de ejecución de scripts

  1. En la consola de Configuration Manager, haga clic en Supervisión.

  2. En el área de trabajo Supervisión, haga clic en Estado de script.

  3. En la lista Estado del script, puede ver los resultados de cada script que se ejecutó en dispositivos cliente. Por lo general, un código de salida de script de 0 indica que el script se ejecutó correctamente.

    Monitor de scripts: script truncado

Salida de script

Salida de script devuelto por el cliente mediante formato JSON canaliendo los resultados del script al cmdlet ConvertTo-Json. El formato JSON devuelve de forma coherente la salida de script legible. Para scripts que no devuelven objetos como salida, el cmdlet ConvertTo-Json convierte el resultado en una cadena sencilla que el cliente devuelve en lugar de JSON.

  • Los scripts que obtienen un resultado desconocido, o donde el cliente estaba sin conexión, no se mostrarán en los gráficos o el conjunto de datos.

  • Evite devolver una salida de script de gran tamaño, ya que se trunca a 4 KB.

  • Convierte un objeto de enumeración en un valor de cadena en scripts para que se muestren correctamente en formato JSON.

    Convertir un objeto de enumeración en un valor de sting

Puede ver el resultado detallado del script en formato JSON sin formato o estructurado. Este formato facilita la lectura y el análisis de los resultados. Si el script devuelve texto con formato JSON válido o el resultado se puede convertir a JSON mediante el cmdlet ConvertTo-Json de PowerShell, vea el resultado detallado como Salida JSON o Salida sin formato . De lo contrario, la única opción es Script Output.

Ejemplo: el resultado del script es convertible a JSON válido

Comando: $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      16299  551

Ejemplo: El resultado del script no es JSON válido

Comando: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption

Microsoft Windows 10 Enterprise

Archivos de registro

  • En el cliente, de forma predeterminada en C:\Windows\CCM\logs:

    • Scripts.log
    • CcmMessaging.log
  • En el MP, de forma predeterminada en C:\SMS_CCM\Logs:

    • MP_RelayMsgMgr.log
  • En el servidor de sitio, de forma predeterminada en C:\Program Files\Configuration Manager\Logs:

    • SMS_Message_Processing_Engine.log

Consulte también