Share via


API-driven inkommande etablering med PowerShell-skript

I den här självstudien beskrivs hur du använder ett PowerShell-skript för att implementera API-driven inkommande etablering i Microsoft Entra ID. Med hjälp av stegen i den här självstudien kan du konvertera en CSV-fil som innehåller HR-data till en nyttolast för massbegäran och skicka den till Microsoft Entra-etableringen /bulkUpload API-slutpunkten. Artikeln innehåller också vägledning om hur samma integrationsmönster kan användas med valfritt arkivhandlingssystem.

Integrationsscenario

Affärsbehov

Ditt postsystem genererar regelbundet CSV-filexporter som innehåller arbetsdata. Du vill implementera en integrering som läser data från CSV-filen och automatiskt etablerar användarkonton i målkatalogen (lokal Active Directory för hybridanvändare och Microsoft Entra-ID för enbart molnanvändare).

Implementeringskrav

Ur ett implementeringsperspektiv:

  • Du vill använda ett obevakat PowerShell-skript för att läsa data från CSV-filexporterna och skicka dem till api-slutpunkten för inkommande etablering.
  • I PowerShell-skriptet vill du inte implementera den komplexa logiken för att jämföra identitetsdata mellan ditt system med post- och målkatalog.
  • Du vill använda Microsoft Entra-etableringstjänsten för att tillämpa dina IT-hanterade etableringsregler för att automatiskt skapa/uppdatera/aktivera/inaktivera konton i målkatalogen (lokal Active Directory eller Microsoft Entra-ID).

Graphic of PowerShell-based integration.

Integreringsscenariovariationer

I den här självstudien används en CSV-fil som ett arkivhandlingssystem, men du kan anpassa PowerShell-exempelskriptet för att läsa data från alla postsystem. Här är en lista över variationer i företagsintegreringsscenariot, där API-driven inkommande etablering kan implementeras med ett PowerShell-skript.

# System för post Integreringsvägledning om hur du använder PowerShell för att läsa källdata
1 Databastabell Om du använder en Azure SQL-databas eller en lokal SQL Server kan du använda cmdleten Read-SqlTableData för att läsa data som lagras i en tabell i en SQL-databas. Du kan använda cmdleten Invoke-SqlCmd för att köra Transact-SQL- eller XQuery-skript.
Om du använder en Oracle-/MySQL-/Postgres-databas kan du hitta en PowerShell-modul som antingen har publicerats av leverantören eller finns i PowerShell-galleriet. Använd modulen för att läsa data från databastabellen.
2 LDAP-server Använd .NET-API:et System.DirectoryServices.Protocols eller någon av de LDAP-moduler som är tillgängliga i PowerShell-galleriet för att fråga din LDAP-server. Förstå LDAP-schemat och hierarkin för att hämta användardata från LDAP-servern.
3 Alla system som exponerar REST-API:er Om du vill läsa data från en REST API-slutpunkt med PowerShell kan du använda cmdleten Invoke-RestMethod från modulen Microsoft.PowerShell.Utility . Kontrollera dokumentationen för rest-API:et och ta reda på vilka parametrar och huvuden det förväntar sig, vilket format det returnerar och vilken autentiseringsmetod det använder. Du kan sedan justera kommandot Invoke-RestMethod i enlighet med detta.
4 Alla system som exponerar SOAP-API:er Om du vill läsa data från en SOAP API-slutpunkt med PowerShell kan du använda cmdleten New-WebServiceProxy från modulen Microsoft.PowerShell.Management . Kontrollera dokumentationen för SOAP-API:et och ta reda på vilka parametrar och huvuden det förväntar sig, vilket format det returnerar och vilken autentiseringsmetod det använder. Du kan sedan justera kommandot New-WebServiceProxy i enlighet med detta.

När du har läst källdata tillämpar du dina förbearbetningsregler och konverterar utdata från postsystemet till en massbegäran som kan skickas till Microsoft Entra-etableringsslutpunkten bulkUpload API.

Viktigt!

Om du vill dela ditt PowerShell-integreringsskript med communityn publicerar du det på PowerShell-galleriet och meddelar oss på GitHub-lagringsplatsen entra-id-inbound-provisioningså att vi kan lägga till en referens.

Så här använder du den här självstudien

PowerShell-exempelskriptet som publicerats i GitHub-lagringsplatsen för inkommande etablering av Microsoft Entra automatiserar flera uppgifter. Den har logik för att hantera stora CSV-filer och segmentera massbegäran för att skicka 50 poster i varje begäran. Så här kan du testa det och anpassa det enligt dina integreringskrav.

Kommentar

PowerShell-exempelskriptet tillhandahålls som det är för implementeringsreferens. Om du har frågor om skriptet eller om du vill förbättra det använder du GitHub-projektlagringsplatsen.

# Automation-uppgift Riktlinjer för implementering Avancerad anpassning
1 Läsa arbetsdata från CSV-filen. Ladda ned PowerShell-skriptet. Den har inbyggd logik för att läsa data från valfri CSV-fil. Se CSV2SCIM Information om PowerShell-användning för att bekanta dig med de olika körningslägena för det här skriptet. Om ditt postsystem är annorlunda kan du läsa vägledningen i avsnittet Integreringsscenariovariationer om hur du kan anpassa PowerShell-skriptet.
2 Förbearbeta och konvertera data till SCIM-format. Som standard konverterar PowerShell-skriptet varje post i CSV-filen till en SCIM Core User + Enterprise User-representation. Följ stegen i avsnittet Generera nyttolast för massbegäran med standardschema för att bekanta dig med den här processen. Om CSV-filen har olika fält justerar du AttributeMapping.psd-filen för att generera en giltig SCIM-användare. Du kan också generera massbegäran med anpassat SCIM-schema. Uppdatera PowerShell-skriptet så att det innehåller all anpassad CSV-dataverifieringslogik.
3 Använd ett certifikat för autentisering till Microsoft Entra-ID. Skapa ett huvudnamn för tjänsten som kan komma åt API:et för inkommande etablering. Se stegen i avsnittet Konfigurera klientcertifikat för autentisering med tjänstens huvudnamn för att lära dig hur du använder klientcertifikat för autentisering. Om du vill använda hanterad identitet i stället för ett huvudnamn för tjänsten för autentisering granskar du användningen av Connect-MgGraph i exempelskriptet och uppdaterar den så att den använder hanterade identiteter.
4 Etablera konton i lokal Active Directory- eller Microsoft Entra-ID. Konfigurera EN API-driven etableringsapp för inkommande trafik. Detta genererar en unik /bulkUpload API-slutpunkt. Se stegen i avsnittet Generera och ladda upp nyttolast för massbegäran som administratörsanvändare för att lära dig hur du laddar upp data till den här slutpunkten. Verifiera attributflödet och anpassa attributmappningarna enligt dina integreringskrav. Om du vill köra skriptet med ett huvudnamn för tjänsten med certifikatbaserad autentisering läser du stegen i avsnittet Ladda upp nyttolast för massbegäran med klientcertifikatautentisering Om du planerar att använda massbegäran med anpassat SCIM-schema utökar du schemat för etableringsappen så att det inkluderar dina anpassade SCIM-schemaelement.
5 Genomsök etableringsloggarna och försök etablera igen efter misslyckade poster. Se stegen i avsnittet Hämta etableringsloggar för de senaste synkroniseringscyklerna för att lära dig hur du hämtar och analyserar etableringsloggdata. Identifiera misslyckade användarposter och inkludera dem i nästa uppladdningscykel. -
6 Distribuera din PowerShell-baserade automatisering till produktion. När du har verifierat ditt API-drivna etableringsflöde och anpassat PowerShell-skriptet för att uppfylla dina krav kan du distribuera automatiseringen som en PowerShell Workflow-runbook i Azure Automation eller som en serverprocess som är schemalagd att köras på en Windows-server. -

Ladda ned PowerShell-skriptet

  1. Åtkomst till GitHub-lagringsplatsen entra-id-inbound-provisioning.
  2. Använd alternativet Kod ->Klona eller Kod ->Ladda ned ZIP för att kopiera innehållet i den här lagringsplatsen till din lokala mapp.
  3. Gå till mappen PowerShell/CSV2SCIM. Den har följande katalogstruktur:
    • Src
      • CSV2SCIM.ps1 (huvudskript)
      • ScimSchemaRepresentations (mapp som innehåller scim-standardschemadefinitioner för validering av AttributeMapping.psd1-filer)
        • EnterpriseUser.json, Group.json, Schema.json, User.json
    • Prover
      • AttributeMapping.psd1 (exempelmappning av kolumner i CSV-fil till SCIM-standardattribut)
      • csv-with-2-records.csv (CSV-exempelfil med två poster)
      • csv-with-1000-records.csv (CSV-exempelfil med 1 000 poster)
      • Test-ScriptCommands.ps1 (exempel på användningskommandon)
      • UseClientCertificate.ps1 (skript för att generera självsignerat certifikat och ladda upp det som autentiseringsuppgifter för tjänstens huvudnamn för användning i OAuth-flödet)
      • Sample1 (mapp med fler exempel på hur CSV-filkolumner kan mappas till SCIM-standardattribut. Om du får olika CSV-filer för anställda, entreprenörer, praktikanter kan du skapa en separat AttributeMapping.psd1-fil för varje entitet.)
  4. Ladda ned och installera den senaste versionen av PowerShell.
  5. Kör kommandot för att aktivera körning av fjärrsignerade skript:
    set-executionpolicy remotesigned
    
  6. Installera följande nödvändiga moduler:
    Install-Module -Name Microsoft.Graph.Applications,Microsoft.Graph.Reports
    

Generera nyttolast för massbegäran med standardschema

I det här avsnittet beskrivs hur du genererar en nyttolast för massbegäran med standardattributen SCIM Core-användare och Enterprise-användare från en CSV-fil. För att illustrera proceduren ska vi använda CSV-filen Samples/csv-with-2-records.csv.

  1. Öppna CSV-filen Samples/csv-with-2-records.csv i Anteckningar++ eller Excel för att kontrollera kolumnerna i filen. Screenshot of columns in Excel.

  2. I Anteckningar++ eller en källkodsredigerare som Visual Studio Code öppnar du PowerShell-datafilen Samples/AttributeMapping.psd1 som möjliggör mappning av CSV-filkolumner till SCIM-standardschemaattribut. Filen som levereras direkt har redan förkonfigurerad mappning av CSV-filkolumner till motsvarande SCIM-schemaattribut.

        @{
        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. Öppna PowerShell och ändra till katalogen CSV2SCIM\src.

  4. Kör följande kommando för att initiera variabeln AttributeMapping .

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  5. Kör följande kommando för att kontrollera om AttributeMapping filen har giltiga SCIM-schemaattribut. Det här kommandot returnerar Sant om valideringen lyckas.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  6. Anta att AttributeMapping filen har ett ogiltigt SCIM-attribut med namnet userId. I ValidateAttributeMapping läget visas följande fel.

    Screenshot of a mapping error.

  7. När du har verifierat att AttributeMapping filen är giltig kör du följande kommando för att generera en massbegäran i filen BulkRequestPayload.json som innehåller de två posterna som finns i CSV-filen.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping > BulkRequestPayload.json
    
  8. Du kan öppna innehållet i filen BulkRequestPayload.json för att kontrollera om SCIM-attributen anges enligt den mappning som definierats i filen AttributeMapping.psd1.

  9. Du kan publicera filen som genereras ovan som den är till api-slutpunkten /bulkUpload som är associerad med din etableringsapp med Hjälp av Graph Explorer eller Postman eller cURL. Referens:

  10. Om du vill ladda upp den genererade nyttolasten direkt till API-slutpunkten med samma PowerShell-skript läser du nästa avsnitt.

Generera och ladda upp nyttolast för massbegäran som administratörsanvändare

I det här avsnittet beskrivs hur du skickar den genererade nyttolasten för massbegäran till api-slutpunkten för inkommande etablering.

  1. Logga in på administrationscentret för Microsoft Entra som minst programadministratör.

  2. Bläddra till Objekt-ID för etableringsappegenskaper>>och kopiera associerad ServicePrincipalId med din etableringsapp.

    Screenshot of the Object ID.

  3. Som användare med rollen Global administratör kör du följande kommando genom att ange rätt värden för ServicePrincipalId och TenantId. Du uppmanas att ange autentisering om det inte redan finns en autentiserad session för den här klientorganisationen. Ge ditt medgivande till behörigheter som efterfrågas under autentiseringen.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com"
    
  4. Gå till bladet Etableringsloggar i etableringsappen för att verifiera bearbetningen av ovanstående begäran.

Konfigurera klientcertifikat för autentisering med tjänstens huvudnamn

Kommentar

Anvisningarna här visar hur du genererar ett självsignerat certifikat. Självsignerade certifikat är inte betrodda som standard och de kan vara svåra att underhålla. Dessutom kan de använda inaktuella hash- och chiffersviter som kanske inte är starka. För bättre säkerhet kan du köpa ett certifikat som signerats av en välkänd certifikatutfärdare.

  1. Kör följande PowerShell-skript för att generera ett nytt självsignerat certifikat. Du kan hoppa över det här steget om du har köpt ett certifikat som signerats av en välkänd certifikatutfärdare.
    $ClientCertificate = New-SelfSignedCertificate -Subject 'CN=CSV2SCIM' -KeyExportPolicy 'NonExportable' -CertStoreLocation Cert:\CurrentUser\My
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    Det genererade certifikatet lagras Aktuell användare\Personligt\Certifikat. Du kan visa den med hjälp av alternativet Kontrollpanelen -Manage user certificates (Hantera> användarcertifikat).
  2. Om du vill associera certifikatet med ett giltigt huvudnamn för tjänsten loggar du in på administrationscentret för Microsoft Entra som programadministratör.
  3. Öppna tjänstens huvudnamn som du konfigurerade under Appregistreringar.
  4. Kopiera objekt-ID:t från bladet Översikt. Använd värdet för att ersätta strängen <AppObjectId>. Kopiera program-ID :t (klienten). Vi använder den senare och den refereras till som <AppClientId>.
  5. Kör följande kommando för att ladda upp certifikatet till det registrerade tjänstens huvudnamn.
    Connect-MgGraph -Scopes "Application.ReadWrite.All"
    Update-MgApplication -ApplicationId '<AppObjectId>' -KeyCredentials @{
       Type = "AsymmetricX509Cert"
       Usage = "Verify"
       Key = $ClientCertificate.RawData
    }
    
    Du bör se certifikatet under bladet Certifikat och hemligheter i din registrerade app. Screenshot of client certificate.
  6. Lägg till följande två programbehörighetsomfång i tjänstens huvudnamnsapp: Application.Read.All och Synchronization.Read.All. Dessa krävs för att PowerShell-skriptet ska kunna slå upp etableringsappen efter ServicePrincipalId och hämta etableringen JobId.

Ladda upp nyttolasten för massbegäran med klientcertifikatautentisering

I det här avsnittet beskrivs hur du skickar den genererade nyttolasten för massbegäran till api-slutpunkten för inkommande etablering med hjälp av ett betrott klientcertifikat.

  1. Öppna den API-drivna etableringsapp som du har konfigurerat. Kopiera den associerade med etableringsappen ServicePrincipalId från Objekt-ID för etableringsappegenskaper>>.

    Screenshot of the Object ID.

  2. Kör följande kommando genom att ange rätt värden för ServicePrincipalId, ClientId och 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. Gå till bladet Etableringsloggar i etableringsappen för att verifiera bearbetningen av ovanstående begäran.

Generera massbegäran med anpassat SCIM-schema

I det här avsnittet beskrivs hur du genererar en massbegäran med ett anpassat SCIM-schemanamnområde som består av fält i CSV-filen.

  1. I Anteckningar++ eller en källkodsredigerare som Visual Studio Code öppnar du PowerShell-datafilen Samples/AttributeMapping.psd1 som möjliggör mappning av CSV-filkolumner till SCIM-standardschemaattribut. Filen som levereras direkt har redan förkonfigurerad mappning av CSV-filkolumner till motsvarande SCIM-schemaattribut.

  2. Öppna PowerShell och ändra till katalogen CSV2SCIM\src.

  3. Kör följande kommando för att initiera variabeln AttributeMapping .

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  4. Kör följande kommando för att kontrollera om AttributeMapping filen har giltiga SCIM-schemaattribut. Det här kommandot returnerar Sant om valideringen lyckas.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  5. Kör följande kommando för att hämta en platt lista över alla CSV-fält under ett anpassat SCIM-schemanamnområde urn:ietf:params:scim:schemas:extension:contoso:1.0:User, förutom scim-kärnanvändarattributen och företagsanvändarattributen.

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

    CSV-fälten visas under det anpassade SCIM-schemanamnområdet. Screenshot of user details under custom schema.

Utöka etableringsjobbschemat

Ofta innehåller datafilen som skickas av HR-team fler attribut som inte har någon direkt representation i SCIM-standardschemat. För att representera sådana attribut rekommenderar vi att du skapar ett SCIM-tilläggsschema och lägger till attribut under det här namnområdet.

Skriptet CSV2SCIM innehåller ett körningsläge med namnet UpdateSchema som läser alla kolumner i CSV-filen, lägger till dem under ett tilläggsschemanamnområde och uppdaterar schemat för etableringsappen.

Kommentar

Om attributtilläggen redan finns i schemat för etableringsappen genererar det här läget bara en varning om att attributtillägget redan finns. Det är därför inget problem med att köra skriptet CSV2SCIM i Läget UpdateSchema om nya fält läggs till i CSV-filen och du vill lägga till dem som ett tillägg.

För att illustrera proceduren använder vi CSV-filen Samples/csv-with-2-records.csv som finns i mappen CSV2SCIM .

  1. Öppna CSV-filen Samples/csv-with-2-records.csv i en Anteckningar, Excel eller TextPad för att kontrollera kolumnerna i filen.

    Screenshot of how to check CSV columns.

  2. Kör följande kommando:

    .\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. Du kan verifiera uppdateringen av schemat för etableringsappen genom att öppna sidan Attributmappningoch öppna alternativet Redigera attributlista för API under Avancerade alternativ.

  4. Attributlistan visar attribut under det nya namnområdet.

Hämta etableringsloggar för de senaste synkroniseringscyklerna

När du har skickat massbegäran kan du köra frågor mot loggarna för de senaste synkroniseringscyklerna som bearbetats av Microsoft Entra ID. Du kan hämta synkroniseringsstatistiken och bearbeta information med PowerShell-skriptet och spara den för analys.

  1. Kör följande kommando för att visa logginformation och synkroniseringsstatistik i konsolen:

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

    Screenshot of sync statistics.

    Kommentar

    NumberOfCycles är 1 som standard. Ange ett tal för att hämta fler synkroniseringscykler.

  2. Om du vill visa synkroniseringsstatistik i konsolen och spara logginformationen i en variabel kör du följande kommando:

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

    Om du vill köra kommandot med klientcertifikatautentisering kör du kommandot genom att ange rätt värden för ServicePrincipalId, ClientId och 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
    
    • Om du vill se information om en specifik post kan vi loopa in i samlingen eller välja ett specifikt index för den, till exempel: $logs[0]

      Screenshot of a selected index.

    • Vi kan också använda -instruktionen where-object för att söka efter en specifik post med hjälp av sourceID eller DisplayName. I egenskapen ProvisioningLogs hittar vi all information om den åtgärd som utförts för den specifika posten.

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

      Screenshot of provisioning logs.

    • Vi kan se de specifika egenskaper som påverkas av användaren i attributet ModifiedProperties . $user.ProvisioningLogs.ModifiedProperties

      Screenshot of properties.

Bilaga

CSV2SCIM Information om PowerShell-användning

Här är en lista över kommandoradsparametrar som godkänts av CSV2SCIM PowerShell-skriptet.

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

Kommentar

Parametrarna AttributeMapping och ValidateAttributeMapping kommandoradsparametrarna refererar till mappningen av CSV-kolumnattribut till scim-standardschemaelementen. Den refererar inte till de attributmappningar som du utför i microsoft Entra admin center-etableringsappen mellan scim-källschemaelement och microsoft entra-/lokal Active Directory-målattribut.

Parameter Description Bearbeta kommentarer
Sökväg Den fullständiga eller relativa sökvägen till CSV-filen. Till exempel: .\Samples\csv-with-1000-records.csv Obligatoriskt: Ja
ScimSchemaNamespace Det anpassade SCIM-schemanamnområdet som ska användas för att skicka alla kolumner i CSV-filen som anpassade SCIM-attribut som tillhör ett specifikt namnområde. Till exempel: urn:ietf:params:scim:schemas:extension:csv:1.0:User Obligatoriskt: Endast när du vill:
- Uppdatera etableringsappschemat eller
När du vill inkludera anpassade SCIM-attribut i nyttolasten.
AttributeMapping Pekar på en PowerShell Data-fil (.psd1-tillägg) som mappar kolumner i CSV-filen till SCIM Core User- och Enterprise User-attribut.
Se exempel: AttributeMapping.psd fil för CSV2SCIM skript.
Till exempel: powershell $AttributeMapping = Import-PowerShellDataFile '.\Samples\AttributeMapping.psd1'`-AttributeMapping $AttributeMapping
Obligatoriskt: Ja
Det enda scenariot när du inte behöver ange detta är när du använder växeln UpdateSchema .
ValidateAttributeMapping Använd den här switchflaggan för att verifiera att AttributeMapping-filen innehåller attribut som följer SCIM Core- och Enterprise-användarschemat. Obligatoriskt: Ingen
rekommendation om att använda den för att säkerställa efterlevnad.
ServicePrincipalId GUID-värdet för etableringsappens tjänsthuvudnamns-ID som du kan hämta från objekt-ID:t för etableringsappens egenskaper>> Obligatoriskt: Endast när du vill:
– Uppdatera schemat för etableringsappen eller
– Skicka den genererade massbegäran till API-slutpunkten.
UpdateSchema Använd den här växeln för att instruera skriptet att läsa CSV-kolumnerna och lägga till dem som anpassade SCIM-attribut i ditt etableringsappschema.
ClientId Klient-ID för en Microsoft Entra-registrerad app som ska användas för OAuth-autentiseringsflöde. Den här appen måste ha giltiga certifikatautentiseringsuppgifter. Obligatoriskt: Endast när du utför certifikatbaserad autentisering.
ClientCertificate Det klientautentiseringscertifikat som ska användas under OAuth-flödet. Obligatoriskt: Endast när du utför certifikatbaserad autentisering.
GetPreviousCycleLogs Hämta etableringsloggarna för de senaste synkroniseringscyklerna.
NumberOfCycles Ange hur många synkroniseringscykler som ska hämtas. Det här värdet är 1 som standard.
RestartService Med det här alternativet pausar skriptet tillfälligt etableringsjobbet innan data laddas upp, data laddas upp och sedan startas jobbet igen för att säkerställa omedelbar bearbetning av nyttolasten. Använd endast det här alternativet under testningen.

AttributeMapping.psd fil

Den här filen används för att mappa kolumner i CSV-filen till standardschemaelementen SCIM Core User och Enterprise User. Filen genererar också en lämplig representation av CSV-filinnehållet som en nyttolast för massbegäran.

I nästa exempel mappade vi följande kolumner i CSV-filen till deras SCIM Core User- och Enterprise-användarattribut.

Screenshot of CSV columns for mapped attributes.

    @{
    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'
        }
    }
}

Nästa steg