Compartir a través de


Aprovisionamiento de entrada controlado por API con script de PowerShell

En este tutorial se describe cómo usar un script de PowerShell para implementar o aprovisionamiento de entrada controlado por API de Microsoft Entra ID. Siguiendo los pasos de este tutorial, puede convertir un archivo CSV que contenga datos de RRHH en una carga útil de solicitud masiva y enviarla al punto final de la API /bulkUpload de aprovisionamiento de Microsoft Entra. En el artículo también se proporcionan instrucciones sobre cómo se puede usar el mismo patrón de integración con cualquier sistema de registro.

Escenario de integración

Requisitos empresariales

El sistema de registro genera exportaciones periódicas de archivos CSV que contienen datos de trabajo. Quiere implementar una integración que lea datos del archivo CSV y aprovisione automáticamente cuentas de usuario en el directorio de destino (Active Directory local para usuarios híbridos y Microsoft Entra ID para usuarios solo en la nube).

Requisito de implementación

Desde una perspectiva de implementación:

  • Quiere usar un script de PowerShell desatendido para leer datos de las exportaciones de archivos CSV y enviarlos al punto de conexión de la API de aprovisionamiento de entrada.
  • En el script de PowerShell, no quiere implementar la lógica compleja de comparar los datos de identidad entre el sistema de registro y el directorio de destino.
  • Desea utilizar el servicio de aprovisionamiento de Microsoft Entra para aplicar sus reglas de aprovisionamiento gestionadas por TI para crear/actualizar/habilitar/deshabilitar automáticamente cuentas en el directorio de destino (Active Directory local o Microsoft Entra ID).

Gráfico de la integración basada en PowerShell.

Variaciones del escenario de integración

Aunque en este tutorial se usa un archivo CSV como sistema de registro, puede personalizar el script de PowerShell de ejemplo para leer datos de cualquier sistema de registro. Esta es una lista de variaciones de escenarios de integración empresarial, donde el aprovisionamiento entrante controlado por API se puede implementar con un script de PowerShell.

# Sistema de registro Guía de integración sobre el uso de PowerShell para leer datos de origen
1 Tabla de base de datos Si utiliza una base de datos Azure SQL o un servidor SQL Server local, puede utilizar el cmdlet Read-SqlTableData para leer los datos almacenados en una tabla de una base de datos SQL. Puede utilizar el cmdlet Invoke-SqlCmd para ejecutar scripts Transact-SQL o XQuery.
Si utiliza una base de datos Oracle / MySQL / Postgres, puede encontrar un módulo PowerShell publicado por el proveedor o disponible en la Galería de PowerShell. Use el módulo para leer datos de la tabla de base de datos.
2 Servidor LDAP Utilice la API .NET System.DirectoryServices.Protocols o uno de los módulos LDAP disponibles en la Galería de PowerShell para consultar su servidor LDAP. Comprenda el esquema LDAP y la jerarquía para recuperar datos de usuario del servidor LDAP.
3 Cualquier sistema que exponga las API de REST Para leer datos de un punto final de la API de REST mediante PowerShell, puede utilizar el cmdlet Invoke-RestMethod del módulo Microsoft.PowerShell.Utility. Compruebe la documentación de la API de REST y averigüe qué parámetros y encabezados espera, qué formato devuelve y qué método de autenticación usa. Después, puede ajustar el comando Invoke-RestMethod en consecuencia.
4 Cualquier sistema que exponga las API del SOAP Para leer datos de un punto de conexión de API de SOAP mediante PowerShell, puede usar el cmdlet New-WebServiceProxy del módulo Microsoft.PowerShell.Management. Compruebe la documentación de la API de SOAP y averigüe qué parámetros y encabezados espera, qué formato devuelve y qué método de autenticación usa. A continuación, puede ajustar su mando en consecuencia New-WebServiceProxy.

Después de leer los datos de origen, aplique las reglas de preprocesamiento y convierta la salida del sistema de registro en una solicitud masiva que se pueda enviar al punto de conexión de API bulkUpload de aprovisionamiento de Microsoft Entra.

Importante

Si desea compartir su script de integración PowerShell con la comunidad, publíquelo en la Galería de PowerShell y notifíquenoslo en el repositorio de GitHub entra-id-inbound-provisioning, para que podamos agregar una referencia al mismo.

Cómo usar este tutorial

El script de ejemplo de PowerShell publicado en el repositorio GitHub de aprovisionamiento entrante de Microsoft Entra automatiza varias tareas. Tiene lógica para controlar archivos CSV grandes y fragmentar la solicitud masiva para enviar 50 registros en cada solicitud. Aquí se muestra cómo puede probarla y personalizarla según sus requisitos de integración.

Nota

El script de PowerShell de ejemplo se proporciona "tal cual" para la referencia de implementación. Si tiene preguntas relacionadas con el script o si quiere mejorarlo, use el repositorio de proyectos de GitHub.

# Tarea de automatización Guía de implementación Personalización avanzada
1 Lee los datos de trabajo del archivo CSV. Descargue el script de PowerShell. Tiene lógica integrada para leer datos de cualquier archivo CSV. Consulte los detalles de uso de PowerShell de CSV2SCIM para familiarizarse con los diferentes modos de ejecución de este script. Si su sistema de registro es diferente, consulte la guía proporcionada en la sección Variaciones del escenario de integración sobre cómo puede personalizar el script de PowerShell.
2 Preprocesar y convertir datos a formato SCIM. De manera predeterminada, el script de PowerShell convierte cada registro del archivo CSV en una representación de usuario principal y usuario de empresa de SCIM. Siga los pasos de la sección Generación de una carga de solicitud masiva con el esquema estándar para familiarizarse con este proceso. Si el archivo CSV tiene campos diferentes, ajuste el archivo AttributeMapping.psd para generar un usuario SCIM válido. También puede generar una solicitud masiva con el esquema SCIM personalizado. Actualice el script de PowerShell para incluir cualquier lógica de validación de datos CSV personalizada.
3 Use un certificado para la autenticación en Microsoft Entra ID. Cree una entidad de servicio que pueda acceder a la API de aprovisionamiento de entrada. Consulte los pasos de la sección Configuración del certificado de cliente para la autenticación de la entidad de servicio para aprender a usar el certificado de cliente para la autenticación. Si desea usar la identidad administrada en lugar de una entidad de servicio para la autenticación, revise el uso de Connect-MgGraph en el script de ejemplo y actualícelo para usar identidades administradas.
4 Aprovisione cuentas en Active Directory local o en Microsoft Entra ID. Configure la aplicación de aprovisionamiento de entrada controlada por API. Esto generará un único punto de conexión de API /bulkUpload. Para ejecutar el script mediante una entidad de servicio con autenticación basada en certificados, consulte los pasos de la sección Carga de la carga de solicitudes masivas mediante la autenticación de certificados de cliente. Valide el flujo de atributos y personalice las asignaciones de atributos según sus requisitos de integración. Si tiene previsto usar una solicitud masiva con el esquema SCIM personalizado, amplíe el esquema de la aplicación de aprovisionamiento para incluir los elementos de esquema SCIM personalizados.
5 Examine los registros de aprovisionamiento y vuelva a intentar el aprovisionamiento de registros con errores. Consulte los pasos de la sección Obtención de registros de aprovisionamiento de los ciclos de sincronización más recientes para obtener información sobre cómo capturar y analizar los datos de registro de aprovisionamiento. Identifique los registros de usuario con errores e inclúyalos en el siguiente ciclo de carga. -
6 Implemente la automatización basada en PowerShell en producción. Una vez que haya verificado su flujo de aprovisionamiento basado en API y personalizado el script de PowerShell para satisfacer sus requisitos, puede implementar la automatización como un runbook de flujo de trabajo de PowerShell en Azure Automation o como un proceso de servidor programado para ejecutarse en un servidor Windows. -

Descarga del script de PowerShell

  1. Acceso al repositorio de GitHub entra-id-inbound-provisioning
  2. Use la opción Código ->Clone o Código ->Descargar archivo ZIP para copiar el contenido de este repositorio en la carpeta local.
  3. Vaya a la carpeta PowerShell/CSV2SCIM. Tiene la estructura de directorios siguiente:
    • src
      • CSV2SCIM.ps1 (script principal)
      • ScimSchemaRepresentations (carpeta que contiene definiciones de esquema SCIM estándar para validar archivos AttributeMapping.psd1)
        • EnterpriseUser.json, Group.json, Schema.json, User.json
    • Ejemplos
      • AttributeMapping.psd1 (ejemplo de asignación de columnas en el archivo CSV a atributos SCIM estándar)
      • csv-with-2-records.csv (archivo CSV de ejemplo con dos registros)
      • csv-with-1000-records.csv (archivo CSV de ejemplo con 1000 registros)
      • Test-ScriptCommands.ps1 (comandos de uso de ejemplo)
      • UseClientCertificate.ps1 (script para generar un certificado autofirmado y cargarlo como credencial de entidad de servicio para su uso en el flujo de OAuth)
      • Sample1 (carpeta con más ejemplos de cómo se pueden asignar columnas de archivo CSV a atributos estándar SCIM. Si obtiene archivos CSV diferentes para empleados, contratistas, personal en prácticas, puede crear un archivo AttributeMapping.psd1 independiente para cada entidad.)
  4. Descargue e instale la versión más reciente de PowerShell.
  5. Ejecute el comando para habilitar la ejecución de scripts firmados remotos:
    set-executionpolicy remotesigned
    
  6. Instale los siguientes módulos de requisitos previos:
    Install-Module -Name Microsoft.Graph.Applications,Microsoft.Graph.Reports
    

Generación de una carga masiva de solicitudes con el esquema estándar

En esta sección se explica cómo generar una carga masiva de solicitudes con atributos estándar de usuario principal y usuario de empresa de SCIM a partir de un archivo CSV. Para ilustrar el procedimiento, vamos a usar el archivo CSV Samples/csv-with-2-records.csv.

  1. Abra el archivo CVSV Samples/csv-with-2-records.csv en Notepad++ o Excel para comprobar las columnas presentes en el archivo. Captura de pantalla de las columnas en Excel.

  2. En Notepad++ o en un editor de código fuente como Visual Studio Code, abra el archivo de datos Samples/AttributeMapping.psd1 de PowerShell, que permite asignar columnas de archivo CSV a atributos de esquema estándar SCIM. El archivo que se distribuye listo para usar ya tiene una asignación preconfigurada de columnas de archivo CSV a los atributos de esquema SCIM correspondientes.

        @{
        externalId   = 'WorkerID'
        name         = @{
            familyName = 'LastName'
            givenName  = 'FirstName'
        }
        active       = { $_.'WorkerStatus' -eq 'Active' }
        userName     = 'UserID'
        displayName  = 'FullName'
        nickName     = 'UserID'
        userType     = 'WorkerType'
        title        = 'JobTitle'
        addresses    = @(
            @{
                type          = { 'work' }
                streetAddress = 'StreetAddress'
                locality      = 'City'
                postalCode    = 'ZipCode'
                country       = 'CountryCode'
            }
        )
        phoneNumbers = @(
            @{
                type  = { 'work' }
                value = 'OfficePhone'
            }
        )
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" = @{
            employeeNumber = 'WorkerID'
            costCenter     = 'CostCenter'
            organization   = 'Company'
            division       = 'Division'
            department     = 'Department'
            manager        = @{
                value = 'ManagerID'
            }
        }
    }
    
  3. Abra PowerShell y cambie al directorio CSV2SCIM\src.

  4. Ejecute el comando siguiente para inicializar la variable AttributeMapping:

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  5. Ejecute el siguiente comando para validar si el archivo AttributeMapping tiene atributos de esquema SCIM válidos. Este comando devuelve True si la validación se realiza correctamente.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  6. Supongamos que el archivo AttributeMapping tiene un atributo SCIM no válido denominado userId y, a continuación, el modo ValidateAttributeMapping muestra el siguiente error.

    Captura de pantalla del error de asignación.

  7. Una vez comprobado que el archivo AttributeMapping es válido, ejecute el siguiente comando para generar una solicitud masiva en el archivo BulkRequestPayload.json que incluya los dos registros presentes en el archivo CSV.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping > BulkRequestPayload.json
    
  8. Puede abrir el contenido del archivo BulkRequestPayload.json para comprobar si los atributos SCIM se establecen según la asignación definida en el archivo AttributeMapping.psd1.

  9. Puedes publicar el archivo generado anteriormente tal cual en el punto de conexión de API /bulkUpload asociado a tu aplicación de aprovisionamiento mediante Probador de Graph o cURL. Referencia:

  10. Para cargar directamente la carga generada en el punto de conexión de API mediante el mismo script de PowerShell, consulte la sección siguiente.

Configure el certificado de cliente para la autenticación de la entidad de servicio

Nota

En estas instrucciones se muestra cómo generar un certificado autofirmado. De forma predeterminada, los certificados autofirmados no son de confianza y pueden ser difíciles de mantener. Además, pueden usar conjuntos hash y de cifrado no actualizados que podrían no ser seguros. Para mejorar la seguridad, compre un certificado firmado por una entidad de certificación conocida.

  1. Ejecute el siguiente script de PowerShell para generar un certificado autofirmado nuevo. Puede omitir este paso si ha adquirido un certificado firmado por una entidad de certificación conocida.
    $ClientCertificate = New-SelfSignedCertificate -Subject 'CN=CSV2SCIM' -KeyExportPolicy 'NonExportable' -CertStoreLocation Cert:\CurrentUser\My
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    El certificado generado se almacena en Current User\Personal\Certificates. Puede verlo mediante la opción Panel de control ->Administrar certificados de usuario).
  2. Para asociar este certificado a una entidad de servicio válida, inicie sesión en el Centro de administración de Microsoft Entra como administrador de aplicaciones.
  3. Abra la entidad de servicio que configuró en Registros de aplicaciones.
  4. Copie el Object ID de la hoja Información general . Use el valor para reemplazar la cadena <AppObjectId>. Copie el identificador de la aplicación (cliente). Lo usaremos más adelante. Se hace referencia a él como <AppClientId>.
  5. Ejecute el siguiente comando para cargar el certificado en la entidad de servicio registrada.
    Connect-MgGraph -Scopes "Application.ReadWrite.All"
    Update-MgApplication -ApplicationId '<AppObjectId>' -KeyCredentials @{
       Type = "AsymmetricX509Cert"
       Usage = "Verify"
       Key = $ClientCertificate.RawData
    }
    
    Debería ver el certificado en la hoja Certificados y secretos de la aplicación registrada. Captura de pantalla del certificado de cliente.
  6. Agregue los dos ámbitos de permisos de Aplicación a la aplicación de entidad de servicio: Application.Read.All y Synchronization.Read.All. Estos son necesarios para que el script de PowerShell busque la aplicación de aprovisionamiento por el ServicePrincipalId y capture el aprovisionamiento JobId.

Carga de la carga masiva de solicitudes mediante la autenticación de certificados de cliente

En esta sección se explica cómo enviar la carga masiva de solicitudes generada al punto de conexión de la API de aprovisionamiento de entrada mediante un certificado de cliente de confianza.

  1. Abra la aplicación de aprovisionamiento controlada por API que configuró. Copie el ServicePrincipalId asociado a la aplicación de aprovisionamiento desde Aplicación de aprovisionamiento>Propiedades>Object ID.

    Captura de pantalla de Object ID.

  2. Ejecute el siguiente comando proporcionando los valores correctos para ServicePrincipalId, ClientId y TenantId.

    $ClientCertificate = Get-ChildItem -Path cert:\CurrentUser\my\ | Where-Object {$_.Subject -eq "CN=CSV2SCIM"}  
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -TenantId "contoso.onmicrosoft.com" -ServicePrincipalId "<ProvisioningAppObjectId>" -ClientId "<AppClientId>" -ClientCertificate (Get-ChildItem Cert:\CurrentUser\My\$ThumbPrint)
    
  3. Visite la hoja Registros de aprovisionamiento de la aplicación de aprovisionamiento para comprobar el procesamiento de la solicitud anterior.

Generación de una solicitud masiva con el esquema SCIM personalizado

En esta sección se describe cómo generar una solicitud masiva con un espacio de nombres de esquema SCIM personalizado que consta de campos del archivo CSV.

  1. En Notepad++ o en un editor de código fuente como Visual Studio Code, abra el archivo de datos Samples/AttributeMapping.psd1 de PowerShell, que permite asignar columnas de archivo CSV a atributos de esquema estándar SCIM. El archivo que se distribuye listo para usar ya tiene una asignación preconfigurada de columnas de archivo CSV a los atributos de esquema SCIM correspondientes.

  2. Abra PowerShell y cambie al directorio CSV2SCIM\src.

  3. Ejecute el comando siguiente para inicializar la variable AttributeMapping:

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  4. Ejecute el siguiente comando para validar si el archivo AttributeMapping tiene atributos de esquema SCIM válidos. Este comando devuelve True si la validación se realiza correctamente.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  5. Además de los atributos de usuario principal y usuario de empresa de SCIM, para obtener una lista plana de todos los campos CSV en un espacio de nombres de esquema SCIM personalizado urn:ietf:params:scim:schemas:extension:contoso:1.0:User, ejecute el siguiente comando.

     .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"  > BulkRequestPayloadWithCustomNamespace.json
    

    Los campos CSV se mostrarán en el espacio de nombres de esquema SCIM personalizado. Captura de pantalla de los detalles del usuario en un esquema personalizado.

Ampliación del esquema del trabajo de aprovisionamiento

A menudo, el archivo de datos enviado por los equipos de RR. HH. contiene más atributos que no tienen una representación directa en el esquema SCIM estándar. Para representar estos atributos, se recomienda crear un esquema de extensión SCIM y agregar atributos en este espacio de nombres.

El script CSV2SCIM proporciona un modo de ejecución denominado UpdateSchema, que lee todas las columnas del archivo CSV, las agrega en un espacio de nombres de esquema de extensión y actualiza el esquema de la aplicación de aprovisionamiento.

Nota

Si las extensiones de atributo ya están presentes en el esquema de la aplicación de aprovisionamiento, este modo solo emite una advertencia de que la extensión de atributo ya existe. Por lo tanto, no hay ningún problema al ejecutar el script CSV2SCIM en el modo UpdateSchema si se agregan nuevos campos al archivo CSV y desea agregarlos como una extensión.

Para ilustrar el procedimiento, usaremos el archivo CSV Samples/csv-with-2-records.csv presente en la carpeta CSV2SCIM .

  1. Abra el archivo CSV Samples/csv-with-2-records.csv en un Notepad, Excel o TextPad para comprobar las columnas presentes en el archivo.

    Captura de pantalla de la comprobación de columnas CSV.

  2. Ejecute el siguiente comando:

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -UpdateSchema -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"
    
  3. Para comprobar la actualización del esquema de la aplicación de aprovisionamiento, abra la página Asignación de atributos y acceda a la opción Editar lista de atributos para la API en Opciones avanzadas.

  4. La lista de atributos muestra los atributos en el nuevo espacio de nombres.

Obtención de registros de aprovisionamiento de los ciclos de sincronización más recientes

Después de enviar la solicitud masiva, puede consultar los registros de los ciclos de sincronización más recientes procesados por Microsoft Entra ID. Puede recuperar las estadísticas de sincronización y los detalles de procesamiento con el script de PowerShell y guardarlos para su análisis.

  1. Para ver los detalles del registro y las estadísticas de sincronización en la consola, ejecute el siguiente comando:

    .\CSV2SCIM.ps1 -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -GetPreviousCycleLogs -NumberOfCycles 1
    

    Captura de pantalla de las estadísticas de sincronización.

    Nota

    NumberOfCycles es 1 de manera predeterminada. Especifique un número para recuperar más ciclos de sincronización.

  2. Para ver las estadísticas de sincronización en la consola y guardar los detalles de los registros en una variable, ejecute el siguiente comando:

    $logs=.\CSV2SCIM.ps1 -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -GetPreviousCycleLogs
    

    Para ejecutar el comando mediante la autenticación de certificados de cliente, ejecute el comando proporcionando los valores correctos para ServicePrincipalId, ClientId y TenantId:

    $ClientCertificate = Get-ChildItem -Path cert:\CurrentUser\my\ | Where-Object {$_.Subject -eq "CN=CSV2SCIM"}  
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    $logs=.\CSV2SCIM.ps1 -ServicePrincipalId "<ProvisioningAppObjectId>" -TenantId "contoso.onmicrosoft.com" -ClientId "<AppClientId>" -ClientCertificate (Get-ChildItem Cert:\CurrentUser\My\$ThumbPrint) -GetPreviousCycleLogs -NumberOfCycles 1
    
    • Para ver los detalles de un registro específico, podemos recorrer en bucle la colección o seleccionar un índice específico, por ejemplo: $logs[0]

      Captura de pantalla del índice seleccionado.

    • También podemos usar la instrucción where-object para buscar un registro específico mediante sourceID o DisplayName. En la propiedad ProvisioningLogs, podemos encontrar todos los detalles de la operación realizada para ese registro específico.

      $user = $logs | where sourceId -eq '1222'
      $user.ProvisioningLogs | fl
      

      Captura de pantalla de los registros de aprovisionamiento.

    • Podemos ver las propiedades específicas afectadas por el usuario en el atributo ModifiedProperties. $user.ProvisioningLogs.ModifiedProperties

      Captura de pantalla de las propiedades.

Apéndice

Detalles del uso de CSV2SCIM de PowerShell

Esta es una lista de parámetros de línea de comandos aceptados por el script CSV2SCIM de PowerShell.

PS > CSV2SCIM.ps1 -Path <path-to-csv-file> 
[-ScimSchemaNamespace <customSCIMSchemaNamespace>] 
[-AttributeMapping $AttributeMapping] 
[-ServicePrincipalId <spn-guid>] 
[-ValidateAttributeMapping]
[-UpdateSchema]
[-ClientId <client-id>]
[-ClientCertificate <certificate-object>]
[-RestartService]

Nota

Los parámetros de línea de comandos AttributeMapping y ValidateAttributeMapping hacen referencia a la asignación de atributos de columna CSV a los elementos de esquema SCIM estándar. No hace referencia a las asignaciones de atributos que usted realiza en la aplicación de aprovisionamiento del centro de administración de Microsoft Entra entre los elementos del esquema SCIM de origen y los atributos de Active Directory local o de Microsoft Entra de destino.

Parámetro Descripción Procesamiento de comentarios
Ruta de acceso Ruta de acceso completa o relativa al archivo CSV. Por ejemplo: .\Samples\csv-with-1000-records.csv Obligatorio: Sí
ScimSchemaNamespace Espacio de nombres de esquema SCIM personalizado que se va a usar para enviar todas las columnas del archivo CSV como atributos SCIM personalizados que pertenecen a un espacio de nombres específico. Por ejemplo, urn:ietf:params:scim:schemas:extension:csv:1.0:User. Obligatorio: Solo cuando quiera:
- Actualizar el esquema de la aplicación de aprovisionamiento o
Cuando desee incluir atributos SCIM personalizados en la carga.
AttributeMapping Apunta a un archivo de datos de PowerShell (extensión .psd1) que asigna columnas del archivo CSV a los atributos de usuario principal y usuario de empresa de SCIM.
Vea el ejemplo: archivo AttributeMapping.psd para el script CSV2SCIM.
Por ejemplo: powershell $AttributeMapping = Import-PowerShellDataFile '.\Samples\AttributeMapping.psd1'`-AttributeMapping $AttributeMapping
Obligatorio: Sí
El único escenario en el que no es necesario especificarlo es cuando se usa el modificador UpdateSchema.
ValidateAttributeMapping Use la marca de este modificador para validar que el archivo AttributeMapping contiene atributos que cumplen con el esquema de usuario principal y usuario de empresa de SCIM. Obligatorio: No
Se recomienda usarlo para garantizar el cumplimiento.
ServicePrincipalId El valor GUID del identificador de entidad de servicio de la aplicación de aprovisionamiento que puede recuperar de la aplicación de aprovisionamiento>Propiedades>Object ID Obligatorio: Solo cuando quiera:
- Actualizar el esquema de la aplicación de aprovisionamiento o
- Enviar la solicitud masiva generada al punto de conexión de la API.
UpdateSchema Use este modificador para indicar al script que lea las columnas CSV y agréguelas como atributos SCIM personalizados en el esquema de la aplicación de aprovisionamiento.
ClientId El identificador de cliente de una aplicación registrada de Microsoft Entra que se va a usar para el flujo de autenticación de OAuth. Esta aplicación debe tener credenciales de certificado válidas. Obligatorio: Solo al realizar la autenticación basada en certificados.
ClientCertificate Certificado de autenticación de cliente que se va a usar durante el flujo de OAuth. Obligatorio: Solo al realizar la autenticación basada en certificados.
GetPreviousCycleLogs Obtención de registros de aprovisionamiento de los ciclos de sincronización más recientes.
NumberOfCycles Para especificar cuántos ciclos de sincronización se deben recuperar. De manera predeterminada, este valor es 1.
RestartService Con esta opción, el script pausa temporalmente el trabajo de aprovisionamiento antes de cargar los datos, carga los datos y, a continuación, inicia el trabajo de nuevo para garantizar el procesamiento inmediato de la carga. Use esta opción solo durante la fase de pruebas.

Archivo AttributeMapping.psd

Este archivo se usa para asignar columnas del archivo CSV a los elementos estándar del esquema de los atributos de usuario principal y usuario de empresa de SCIM. El archivo también genera una representación adecuada del contenido del archivo CSV como una carga de solicitudes.

En el ejemplo siguiente, asignamos las siguientes columnas del archivo CSV a sus atributos homólogos de usuario principal y usuario de empres de SCIM.

Captura de pantalla de columnas CSV de atributos asignados.

    @{
    externalId   = 'WorkerID'
    name         = @{
        familyName = 'LastName'
        givenName  = 'FirstName'
    }
    active       = { $_.'WorkerStatus' -eq 'Active' }
    userName     = 'UserID'
    displayName  = 'FullName'
    nickName     = 'UserID'
    userType     = 'WorkerType'
    title        = 'JobTitle'
    addresses    = @(
        @{
            type          = { 'work' }
            streetAddress = 'StreetAddress'
            locality      = 'City'
            postalCode    = 'ZipCode'
            country       = 'CountryCode'
        }
    )
    phoneNumbers = @(
        @{
            type  = { 'work' }
            value = 'OfficePhone'
        }
    )
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" = @{
        employeeNumber = 'WorkerID'
        costCenter     = 'CostCenter'
        organization   = 'Company'
        division       = 'Division'
        department     = 'Department'
        manager        = @{
            value = 'ManagerID'
        }
    }
}

Pasos siguientes