Uso de scripts de PowerShell para dispositivos Windows 10 en IntuneUse PowerShell scripts on Windows 10 devices in Intune

Use la extensión de administración de Microsoft Intune para cargar los scripts de PowerShell en Intune y ejecutarlos en dispositivos Windows 10.Use the Microsoft Intune management extension to upload PowerShell scripts in Intune to run on Windows 10 devices. La extensión de administración mejora la administración de dispositivos móviles (MDM) de Windows 10 y facilita el paso a una administración moderna.The management extension enhances Windows 10 mobile device management (MDM), and makes it easier to move to modern management.

Esta característica se aplica a:This feature applies to:

  • Windows 10 y versiones posterioresWindows 10 and later

Transición hacia una administración modernaMove to modern management

La informática de usuario final está experimentando una transformación digital.End-user computing is going through a digital transformation. La TI clásica y tradicional se centra en una plataforma de dispositivo único, en dispositivos propiedad de la empresa, en usuarios que trabajan desde la oficina y en distintos procesos de TI manuales y proactivos.Classic, traditional IT focuses on a single device platform, business-owned devices, users that work from the office, and different manual, reactive IT processes. En el área de trabajo moderno se usan muchas plataformas que son propiedad del usuario o la empresa, permite a los usuarios trabajar desde cualquier lugar y proporciona procesos de TI automatizados y proactivos.The modern workplace uses many platforms that are user and business owned, allows users to work from anywhere, and provides automated and proactive IT processes.

Los servicios MDM, como Microsoft Intune, pueden administrar dispositivos móviles y de escritorio que ejecutan Windows 10.MDM services, such as Microsoft Intune, can manage mobile and desktop devices running Windows 10. El cliente de administración integrado de Windows 10 se comunica con Intune para realizar tareas de administración empresariales.The built-in Windows 10 management client communicates with Intune to run enterprise management tasks. Hay algunas tareas que puede necesitar, como configuración avanzada de dispositivos y solución de problemas.There are some tasks that you might need, such as advanced device configuration and troubleshooting. Para la administración de aplicaciones Win32, puede usar la característica de administración de aplicaciones Win32 en sus dispositivos Windows 10.For Win32 app management, you can use the Win32 app management feature on your Windows 10 devices.

La extensión de administración de Intune complementa las características de administración de dispositivos móviles (MDM) que Windows 10 incluye de fábrica.The Intune management extension supplements the in-box Windows 10 MDM features. Puede crear scripts de PowerShell para ejecutar en dispositivos Windows 10.You can create PowerShell scripts to run on Windows 10 devices. Por ejemplo, cree un script de PowerShell que realice configuraciones avanzadas del dispositivo.For example, create a PowerShell script that does advanced device configurations. Después, cargue el script en Intune, asígnelo a un grupo de Azure Active Directory (AAD) y ejecútelo.Then, upload the script to Intune, assign the script to an Azure Active Directory (AD) group, and run the script. Luego, puede supervisar de principio a fin el estado de ejecución del script.You can then monitor the run status of the script from start to finish.

Requisitos previosPrerequisites

La extensión de administración de Intune tiene los siguientes requisitos previos.The Intune management extension has the following prerequisites. Una vez que se hayan cumplido, se instala la extensión de administración de Intune automáticamente cuando se asigne un script de PowerShell o una aplicación Win32 al usuario o al dispositivo.Once the prerequisites are met, the Intune management extension installs automatically when a PowerShell script or Win32 app is assigned to the user or device.

  • Dispositivos que ejecutan Windows 10 versión 1607 o una posterior.Devices running Windows 10 version 1607 or later. Si el dispositivo se inscribe mediante la inscripción automática masiva, los dispositivos deben ejecutar Windows 10 versión 1703 o una posterior.If the device is enrolled using bulk auto-enrollment, devices must run Windows 10 version 1703 or later. La extensión de administración de Intune no se admite en Windows 10 en modo S, ya que este no permite la ejecución de aplicaciones de fuera de la tienda.The Intune management extension isn't supported on Windows 10 in S mode, as S mode doesn't allow running non-store apps.

  • Dispositivos unidos a Azure Active Directory (AD), incluidos los siguientes:Devices joined to Azure Active Directory (AD), including:

  • Dispositivos inscritos en Intune, incluidos los siguientes:Devices enrolled in Intune, including:

Sugerencia

Asegúrese de que los dispositivos estén unidos a Azure AD.Be sure devices are joined to Azure AD. Los dispositivos que solo están registrados en Azure AD no recibirán los scripts.Devices that are only registered in Azure AD won't receive your scripts.

Creación y asignación de una directiva de scriptCreate a script policy and assign it

  1. Inicie sesión en Intune.Sign in to Intune.

  2. Seleccione Configuración del dispositivo > Scripts de PowerShell > Agregar.Select Device configuration > PowerShell scripts > Add.

    Adición y uso de scripts de PowerShell en Microsoft Intune

  3. En Datos básicos, escriba las propiedades siguientes y seleccione Siguiente:In Basics, enter the following properties, and select Next:

    • Nombre: Escriba un nombre para el script de PowerShell.Name: Enter a name for the PowerShell script.
    • Descripción: Escriba una descripción para el script de PowerShell.Description: Enter a description for the PowerShell script. Esta configuración es opcional pero recomendada.This setting is optional, but recommended.
  4. En Configuración de script, escriba las propiedades siguientes y seleccione Siguiente:In Script settings, enter the following properties, and select Next:

    • Ubicación del script: Vaya al script de PowerShell.Script location: Browse to the PowerShell script. El script debe ser inferior a 200 KB (ASCII).The script must be less than 200 KB (ASCII).

    • Ejecutar este script con las credenciales de inicio de sesión: Seleccione para ejecutar el script con las credenciales del usuario en el dispositivo.Run this script using the logged on credentials: Select Yes to run the script with the user's credentials on the device. Elija No (valor predeterminado) para ejecutar el script en el contexto del sistema.Choose No (default) to run the script in the system context. Muchos administradores eligen .Many administrators choose Yes. Si es necesario que el script se ejecute en el contexto del sistema, elija No.If the script is required to run in the system context, choose No.

    • Exigir comprobación de firma del script: Elija en caso de que el script lo deba firmar un editor de confianza.Enforce script signature check: Select Yes if the script must be signed by a trusted publisher. Seleccione No (valor predeterminado) si no es necesario que el script esté firmado.Select No (default) if there isn't a requirement for the script to be signed.

    • Ejecutar script en host de PowerShell de 64 bits: Seleccione para ejecutar el script en un host de PowerShell (PS) de 64 bits en una arquitectura de cliente de 64 bits.Run script in 64-bit PowerShell host: Select Yes to run the script in a 64-bit PowerShell (PS) host on a 64-bit client architecture. Si selecciona No (valor predeterminado) el script se ejecutará en un host de PowerShell de 32 bits.Select No (default) runs the script in a 32-bit PowerShell host.

      Cuando la establezca en o No, use la tabla siguiente para los comportamientos de la directiva nuevos y existentes:When setting to Yes or No, use the following table for new and existing policy behavior:

      Ejecución de script en host de PS de 64 bitsRun script in 64-bit PS host Arquitectura de clienteClient architecture Nuevo script de PSNew PS script Script de PS de directiva existenteExisting policy PS script
      NoNo 32 bits32-bit Host de PS de 32 bits compatible32-bit PS host supported Se ejecuta solo en host de PS de 32 bits, que funciona en arquitecturas de 32 y 64 bits.Runs only in 32-bit PS host, which works on 32-bit and 64-bit architectures.
      Yes 64 bits64-bit Se ejecuta el script en un host de PS de 64 bits para arquitecturas de 64 bits.Runs script in 64-bit PS host for 64-bit architectures. Si se ejecuta en 32 bits, el script se ejecutará en un host de PS de 32 bits.When ran on 32-bit, the script runs in a 32-bit PS host. Se ejecuta el script en un host de PS de 32 bits.Runs script in 32-bit PS host. Si esta configuración cambia a 64 bits, el script se abrirá (no se ejecutará) en un host de PS de 64 bits y se notificarán los resultados.If this setting changes to 64-bit, the script opens (it doesn't run) in a 64-bit PS host, and reports the results. Si se ejecuta en 32 bits, el script se ejecutará en un host de PS de 32 bits.When ran on 32-bit, the script runs in 32-bit PS host.
  5. Seleccione Etiquetas de ámbito.Select Scope tags. Las etiquetas de ámbito son opcionales.Scope tags are optional. En la sección Uso de control de acceso basado en rol (RBAC) y etiquetas de ámbito para TI distribuida encontrará más información.Use role-based access control (RBAC) and scope tags for distributed IT has more information.

    Para agregar una etiqueta de ámbito, realice lo siguiente:To add a scope tag:

    1. Elija Seleccionar etiquetas de ámbito > seleccione una etiqueta de ámbito existente en la lista > Seleccionar.Choose Select scope tags > select an existing scope tag from the list > Select.

    2. Cuando termine, seleccione Siguiente.When finished, select Next.

  6. Seleccione Asignaciones > Seleccionar grupos para incluir.Select Assignments > Select groups to include. Se muestra una lista existente de grupos de Azure AD.An existing list of Azure AD groups is shown.

    1. Seleccione uno o varios grupos que incluyan los usuarios cuyos dispositivos reciben el script.Select one or more groups that include the users whose devices receive the script. Elija Seleccionar.Choose Select. Los grupos que ha elegido se muestran en la lista y recibirán la directiva.The groups you chose are shown in the list, and will receive your policy.

      Nota

      Los scripts de PowerShell en Intune pueden estar dirigidos a grupos de seguridad de dispositivos de Azure AD ni a grupo de seguridad de usuarios de Azure AD.PowerShell scripts in Intune can be targeted to Azure AD device security groups or Azure AD user security groups.

    2. Seleccione Siguiente.Select Next.

      Asignación o implementación del script de PowerShell para grupos de dispositivos en Microsoft Intune

  7. En Revisar y agregar, se muestra un resumen de la configuración.In Review + add, a summary is shown of the settings you configured. Seleccione Agregar para guardar el script.Select Add to save the script. Al seleccionar Agregar, la directiva se implementa en los grupos elegidos.When you select Add, the policy is deployed to the groups you chose.

Consideraciones importantesImportant considerations

  • Cuando los scripts están establecidos en el contexto del usuario y el usuario final tiene derechos de administración, de manera predeterminada, el script de PowerShell se ejecuta bajo el privilegio de administrador.When scripts are set to user context and the end user has administrator rights, by default, the PowerShell script runs under the administrator privilege.

  • No es necesario que los usuarios finales inicien sesión en el dispositivo para ejecutar scripts de PowerShell.End users aren't required to sign in to the device to execute PowerShell scripts.

  • El cliente de extensión de administración de Intune comprueba con Intune nuevos scripts o cambios una vez cada hora y tras cada reinicio.The Intune management extension client checks with Intune once every hour and after every reboot for any new scripts or changes. Después de asignar la directiva a los grupos de Azure AD, se ejecuta el script de PowerShell y se notifican los resultados de la ejecución.After you assign the policy to the Azure AD groups, the PowerShell script runs, and the run results are reported. Una vez que se ejecuta el script, no se ejecuta de nuevo a menos que haya un cambio en el script o en la directiva.Once the script executes, it doesn't execute again unless there's a change in the script or policy.

Supervisión del estado de ejecuciónMonitor run status

Puede supervisar el estado de ejecución de scripts de PowerShell para usuarios y dispositivos en Azure Portal.You can monitor the run status of PowerShell scripts for users and devices in the Azure portal.

En Scripts de PowerShell, seleccione el script que quiere supervisar y, después, elija Supervisar y uno de estos informes:In PowerShell scripts, select the script to monitor, choose Monitor, and then choose one of the following reports:

  • Estado del dispositivoDevice status
  • Estado del usuarioUser status

Registros de extensión de administración de IntuneIntune management extension logs

Habitualmente, los registros de agente en la máquina cliente se encuentran en \ProgramData\Microsoft\IntuneManagementExtension\Logs.Agent logs on the client machine are typically in \ProgramData\Microsoft\IntuneManagementExtension\Logs. Puede usar CMTrace.exe para ver estos archivos de registro.You can use CMTrace.exe to view these log files.

Captura de pantalla o registros de agente de CMTrace de muestra en Microsoft Intune

Eliminación de un scriptDelete a script

En Scripts de PowerShell, haga clic con el botón derecho en el script y seleccione Eliminar.In PowerShell scripts, right-click the script, and select Delete.

Problemas comunes y sus solucionesCommon issues and resolutions

Problema: La extensión de administración de Intune no se descargaIssue: Intune management extension doesn't download

Soluciones posibles:Possible resolutions:

  • El dispositivo no está unido a Azure AD.The device isn't joined to Azure AD. Asegúrese de que los dispositivos cumplen con los requisitos previos (en este artículo).Be sure the devices meet the prerequisites (in this article).
  • No hay ningún script de PowerShell ni ninguna aplicación Win32 asignados a los grupos a los que pertenece el usuario o el dispositivo.There are no PowerShell scripts or Win32 apps assigned to the groups that the user or device belongs.
  • El dispositivo no puede ponerse en contacto con el servicio de Intune, bien porque no dispone de acceso a Internet o a Windows Push Notification Services (WNS), bien por un motivo similar.The device can't check-in with the Intune service, due to no internet access, no access to Windows Push Notification Services (WNS), and so on.
  • El dispositivo está en modo S.The device is in S mode. La extensión de administración de Intune no se admite en dispositivos que se ejecutan en modo S.The Intune management extension isn't supported on devices running in S mode.

Para ver si el dispositivo se ha inscrito automáticamente, puede hacer lo siguiente:To see if the device is auto-enrolled, you can:

  1. Vaya a Configuración > Cuentas > Obtener acceso a trabajo o escuela.Go to Settings > Accounts > Access work or school.
  2. Seleccione la cuenta combinada > Información.Select the joined account > Info.
  3. En Advanced Diagnostic Report (Informe de diagnóstico avanzado), seleccione Crear informe.Under Advanced Diagnostic Report, select Create Report.
  4. Abra MDMDiagReport en un explorador web.Open the MDMDiagReport in a web browser.
  5. Busque la propiedad MDMDeviceWithAAD.Search for the MDMDeviceWithAAD property. Si la propiedad existe, el dispositivo se ha inscrito automáticamente.If the property exists, the device is auto-enrolled. Si esta propiedad no existe, el dispositivo no se ha inscrito automáticamente.If this property doesn't exist, then the device isn't auto-enrolled.

En Habilitar la inscripción automática de Windows 10 se describen los pasos para configurar la inscripción automática en Intune.Enable Windows 10 automatic enrollment includes the steps to configure automatic enrollment in Intune.

Problema: Los scripts de PowerShell no se ejecutan.Issue: PowerShell scripts do not run

Soluciones posibles:Possible resolutions:

  • Los scripts de PowerShell no se ejecutan en cada inicio de sesión.The PowerShell scripts don't run at every sign-in. Se ejecuta en los siguientes casos:They run:

    • Cuando se asigna el script a un dispositivo.When the script is assigned to a device

    • Si cambia el script, lo carga y asigna el script a un usuario o dispositivo.If you change the script, upload it, and assign the script to a user or device

      Sugerencia

      La extensión de administración de Microsoft Intune es un servicio que se ejecuta en el dispositivo, al igual que cualquier otro servicio que aparezca en la aplicación Servicios (services.msc).The Microsoft Intune Management Extension is a service that runs on the device, just like any other service listed in the Services app (services.msc). Después de reiniciar un dispositivo, es posible que el servicio también lo haga y compruebe si hay algún script de PowerShell asignado con el servicio de Intune.After a device reboots, this service may also restart, and check for any assigned PowerShell scripts with the Intune service. Si el servicio de extensión de administración de Microsoft Intune está establecido en Manual, es posible que el servicio no se reinicie después del reinicio del dispositivo.If the Microsoft Intune Management Extension service is set to Manual, then the service may not restart after the device reboots.

  • Asegúrese de que los dispositivos estén unidos a Azure AD.Be sure devices are joined to Azure AD. Los dispositivos que solo están unidos al área de trabajo o a la organización (registrados en Azure AD) no recibirán los scripts.Devices that are only joined to your workplace or organization (registered in Azure AD) won't receive the scripts.

  • El cliente de la extensión de administración de Intune comprueba con Intune cada hora si se han producido cambios en el script o la directiva.The Intune management extension client checks once per hour for any changes in the script or policy in Intune.

  • Confirme que la extensión de administración de Intune se ha descargado en %ProgramFiles(x86)%\Microsoft Intune Management Extension.Confirm the Intune management extension is downloaded to %ProgramFiles(x86)%\Microsoft Intune Management Extension.

  • Los scripts no se ejecutan en dispositivos Surface Hub ni con Windows 10 en modo S.Scripts don't run on Surface Hubs or Windows 10 in S mode.

  • Mire si hay errores en los registros.Review the logs for any errors. Consulte, en este artículo, Registros de extensión de administración de Intune.See Intune management extension logs (in this article).

  • Para comprobar si existen problemas de permisos, asegúrese de que las propiedades del script de PowerShell estén establecidas en Run this script using the logged on credentials.For possible permission issues, be sure the properties of the PowerShell script are set to Run this script using the logged on credentials. Compruebe también que el usuario que ha iniciado sesión tenga los permisos adecuados para ejecutar el script.Also check that the signed in user has the appropriate permissions to run the script.

  • Para aislar los problemas de scripts, haga lo siguiente:To isolate scripting problems, you can:

    • Revise la configuración de ejecución de PowerShell de los dispositivos.Review the PowerShell execution configuration on your devices. Vea la directiva de ejecución de PowerShell para obtener instrucciones.See the PowerShell execution policy for guidance.

    • Ejecute un script de ejemplo con la extensión de administración de Intune.Run a sample script using the Intune management extension. Por ejemplo, cree el directorio C:\Scripts y proporcione a todos control total.For example, create the C:\Scripts directory, and give everyone full control. Ejecute el siguiente script:Run the following script:

      write-output "Script worked" | out-file c:\Scripts\output.txt
      

      Si se ejecuta correctamente, se creará un archivo output.txt e incluirá el texto "Script Worked" (El script funcionó).If it succeeds, output.txt should be created, and should include the "Script worked" text.

    • Para probar la ejecución del script sin Intune, ejecute los scripts en la cuenta del sistema mediante el uso local de la herramienta psexec:To test script execution without Intune, run the scripts in the System account using the psexec tool locally:

      psexec -i -s

    • Si el script informa de que se ha realizado correctamente, pero no ha sido así en realidad, es posible que el servicio antivirus se encuentre en un espacio aislado por AgentExecutor.If the script reports that it succeeded, but it didn't actually succeed, then it's possible your antivirus service may be sandboxing AgentExecutor. El siguiente script siempre informa de un error en Intune.The following script always reports a failure in Intune. Como prueba, puede usar este script:As a test, you can use this script:

      Write-Error -Message "Forced Fail" -Category OperationStopped
      mkdir "c:\temp" 
      echo "Forced Fail" | out-file c:\temp\Fail.txt
      

      Si el script informa de que se ha realizado correctamente, consulte AgentExecutor.log para confirmar la salida de error.If the script reports a success, look at the AgentExecutor.log to confirm the error output. Si se ejecuta el script, la longitud debe ser > 2.If the script executes, the length should be >2.

    • Para capturar los archivos .error y .output, el fragmento de código siguiente ejecuta el script a través de AgentExecutor en PSx86 (C:\Windows\SysWOW64\WindowsPowerShell\v1.0).To capture the .error and .output files, the following snippet executes the script through AgentExecutor to PSx86 (C:\Windows\SysWOW64\WindowsPowerShell\v1.0). Mantiene los registros para su revisión.It keeps the logs for your review. Recuerde que la extensión de administración de Intune limpia los registros después de que se ejecute el script:Remember, the Intune Management Extension cleans up the logs after the script executes:

      $scriptPath = read-host "Enter the path to the script file to execute"
      $logFolder = read-host "Enter the path to a folder to output the logs to"
      $outputPath = $logFolder+"\output.output"
      $errorPath =  $logFolder+"\error.error"
      $timeoutPath =  $logFolder+"\timeout.timeout"
      $timeoutVal = 60000 
      $PSFolder = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0"
      $AgentExec = "C:\Program Files (x86)\Microsoft Intune Management Extension\agentexecutor.exe"
      &$AgentExec -powershell  $scriptPath $outputPath $errorPath $timeoutPath $timeoutVal $PSFolder 0 0
      

Pasos siguientesNext steps

Supervise y solucione los problemas de sus perfiles.Monitor and troubleshoot your profiles.